我正在使用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;
在Chrome 43上测试它,控制台日志报告支持webkit。在加载html时,一个女性的声音大声朗读&#34; undefined&#34;。我尝试给文本框一个初始值,看看是否有任何改变,但是仍然是#34; undefined&#34;。有谁熟悉如何让语音合成webkit读取文本输入?
编辑:
控制台测试显示<input>
标记(id#speech-input)的值为&#34;未定义&#34;。但是有一个明确分配给它的值 - 什么给出了?
答案 0 :(得分:0)
显然,该文件需要在托管站点上进行测试(而不是远程拖放到浏览器中),因此API可以访问互联网。这将SpeechSynthesisUtterance()
对象的text
属性修改为“未定义”
在托管网站上进行的测试显示出奇怪的输出:女性声音朗读“未定义”,“这有效吗?”,“这有用吗?”,“这有效吗?”,“它毕竟有效”,“它毕竟是“工作”,它毕竟是“连续工作 - 换句话说,我在远程测试中强行分配的样本话语......非常奇怪的是,它以某种方式被缓存......