Gear S4 Web App不断使语音合成崩溃

时间:2019-05-21 09:07:04

标签: javascript tizen speech-synthesis

每次代码行“ window.speechSynthesis.speak(msg);”被称为Web应用程序将崩溃

为了确保它不是代码的其他部分导致崩溃,我尝试将其注释掉,该应用将正常运行。

奇怪的是,即使程序崩溃并且我返回主屏幕,“讲话”也将成功执行并说出完整的句子

function Speak(){
var msg = new SpeechSynthesisUtterance();
var voices = window.speechSynthesis.getVoices();
msg.voice = voices[1];
msg.lang = 'en-US';
msg.rate = 1;
msg.text = VoiceText;
window.speechSynthesis.speak(msg);
}

我会像上面那样调用上面的函数

VoiceText = "Hello World";
Speak();

我注意到,有时在崩溃之后,当应用重新启动时,它会说几次而没有问题,然后再次崩溃

如果有人对导致问题的原因有所了解,或者他们可以推荐其他客户端文本2讲话,我将不胜感激,谢谢

2 个答案:

答案 0 :(得分:1)

我曾尝试运行具有与上述代码完全相同的代码的webapp。 不幸的是,我看不到您提到的问题。 (没有崩溃,每当Speak打电话时tts都运行良好。)

要进行更多检查,可以让我知道您使用的SW环境吗? 您可以通过设置->关于手表->软件->(软件版本和Tizen版本)

获取所需的通知。

答案 1 :(得分:1)

我如下检查了您在Galaxy Watch和Tizen Studio模拟器上的代码。但我找不到任何崩溃。 您能否更详细地共享源代码,以在我这一边重现此问题?我可以进一步调查问题。

function Speak(VoiceText) {
    var msg = new SpeechSynthesisUtterance();
    var voices = window.speechSynthesis.getVoices();
    msg.voice = voices[1];
    msg.lang = 'en-US';
    msg.rate = 1;
    msg.text = VoiceText;
    window.speechSynthesis.speak(msg);
}

window.onload = function() {
    document.addEventListener('tizenhwkey', function(e) {
        if (e.keyName == "back")
            try {
                tizen.application.getCurrentApplication().exit();
            } catch (ignore) {
            }
    });

    // Sample code
    var textbox = document.querySelector('.contents');
    textbox.addEventListener("click", function() {
        box = document.querySelector('#textbox');
        box.innerHTML = box.innerHTML == "enabled" ? "disabled" : "enabled";
        Speak("Current Running State is " + box.innerHTML);
    });
};