简单的webkit语音合成测试不起作用

时间:2015-06-28 09:44:44

标签: google-chrome webkit undefined text-to-speech

我正在使用webkit语音合成API,尝试通过点击按钮使用以下代码从输入框中说出文本:



if ("speechSynthesis" in window) {
               console.log("browser supports speech synthesis.");
            } else {
               console.log("browser does NOT support speech sythesis")
            }

            var speechMsgInput = $("#speech-input").value;

            function speak(text){
                var msg = new SpeechSynthesisUtterance();
                msg.text = text;
                window.speechSynthesis.speak(msg);
            }

            $("#speakbtn").onclick = speak(speechMsgInput);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">
   <head>

       <meta charset="UTF-8">
       <title>SujiQ Dev.0</title>
       <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

 
   </head>
   
<body>
        <input type="text" id="speech-input" value="42" x-webkit-speech>
        <button id="speakbtn">Speak</button>

 </body>
 
</html>
&#13;
&#13;
&#13;

在Chrome 43上测试它,控制台日志报告支持webkit。在加载html时,一个女性的声音大声朗读&#34; undefined&#34;。我尝试给文本框一个初始值,看看是否有任何改变,但是仍然是#34; undefined&#34;。有谁熟悉如何让语音合成webkit读取文本输入?

编辑: 控制台测试显示<input>标记(id#speech-input)的值为&#34;未定义&#34;。但是有一个明确分配给它的值 - 什么给出了?

1 个答案:

答案 0 :(得分:0)

显然,该文件需要在托管站点上进行测试(而不是远程拖放到浏览器中),因此API可以访问互联网。这将SpeechSynthesisUtterance()对象的text属性修改为“未定义”

在托管网站上进行的测试显示出奇怪的输出:女性声音朗读“未定义”,“这有效吗?”,“这有用吗?”,“这有效吗?”,“它毕竟有效”,“它毕竟是“工作”,它毕竟是“连续工作 - 换句话说,我在远程测试中强行分配的样本话语......非常奇怪的是,它以某种方式被缓存......