SpeechSynthesisUtterance无法在移动浏览器中使用

时间:2015-03-02 09:31:55

标签: mobile browser text-to-speech speech-synthesis webspeech-api

我在移动网站上使用SpeechSynthesisUtterance。当我在桌面版网站上使用它时,此代码是可以的。但我发现该功能在document.ready中的移动浏览器中无效,如下所示:

 $(document).ready(function(){
 var text_tts="say something";
 speakText(text_tts);
    });
function speakText(text_tts){
var u = new SpeechSynthesisUtterance();
u.text = text_tts;
u.lang = 'en-US';
u.rate = 1;
u.onend = function(event) { console.log('Finished in ' + event.elapsedTime + ' seconds.'); }
speechSynthesis.speak(u);

}

但是当我使用“click”事件时,它可以工作:

$("body").on("click",".button",function(){
         var tmp_body_text="say something";
                   var u = new SpeechSynthesisUtterance();
                   u.text = tmp_body_text;
                   u.lang = 'en-US';
                   u.rate = 1;
                   //u.onend = function(event) { console.log('Finished in ' + event.elapsedTime + ' seconds.'); }
                   speechSynthesis.speak(u);
                   });

请帮忙。谢谢。

1 个答案:

答案 0 :(得分:2)

我已经看过几次提及(例如thisspeak仅在通过用户交互调用时才有效,例如点击。从我所看到的情况来看,iOS上的Safari似乎就是这种情况,这似乎就是你在问题中描述的内容。

我实际上并没有找到任何确认此行为的文档,并且非常感谢任何人都可以提供的参考文献。