sam*_*ime 11 javascript html5 speech-recognition html5-audio
我正在尝试使用语音识别API创建一个支持HTML5的语音控制编辑器.目前,问题是当你开始录音时,它只会持续一段时间(基本上直到用户停止说话).
我可以设置continuous
和interimResults
到true
,但并不把它永远记录.它仍然结束.
我也可以告诉它在结束活动期间重新开始,但随后它每次都要求许可,这是非常具有破坏性的.
有没有办法允许它连续进行而只需要询问用户一次?
Tal*_*ter 17
无论您选择哪种设置,谷歌浏览器都会在一段时间后停止语音识别引擎......没有办法绕过它.
我发现连续语音识别的唯一可靠解决方案是通过绑定到onend()
事件再次启动它,正如您所建议的那样.
如果您尝试类似的技术,请注意以下事项:
如果您不使用HTTPS,系统将提示用户在每次重新启动时反复授予权限.出于这个原因以及许多其他原因,在使用语音识别时不要在HTTP上妥协.
确保你没有立即重新启动语音识别而没有一些安全措施,以确保你没有将浏览器置于无限循环中(例如,两个打开的选项卡onend(function() {restart()})
可能会使浏览器崩溃,正如我在此错误报告中详述的那样) :https://code.google.com/p/chromium/issues/detail?id=296690)查看https://github.com/TalAter/annyang/blob/1ee294e2b6cb9953adb9dcccf4d3fcc7eca24c2c/src/annyang.js#L214如何我处理这个(事情.
如果它结束的原因是这样的话service-not-allowed
,not-allowed
请不要自动重启或参见https://github.com/TalAter/annyang/blob/1ee294e2b6cb9953adb9dcccf4d3fcc7eca24c2c/src/annyang.js#L196
您可以在我的代码中看到我如何处理这个问题 - https://github.com/TalAter/annyang/blob/master/src/annyang.js
请尝试这段代码,我认为它可以满足您的需要:
<!DOCTYPE html>
<html>
<head>
<title>Speech recognition</title>
<style>
#result{
border: 2px solid black;
height: 200px;
border-radius: 3px;
font-size: 14px;
}
button{
position: absolute;
top: 240px;
left: 50%;
}
</style>
<script type="application/javascript">
function start(){
var r = document.getElementById("result");
if("webkitSpeechRecognition" in window){
var speechRecognizer = new webkitSpeechRecognition();
speechRecognizer.continuous = true;
speechRecognizer.interimResults = true;
speechRecognizer.lang = "en-US";
speechRecognizer.start();
var finalTranscripts = "";
speechRecognizer.onresult = function(event){
var interimTranscripts = "";
for(var i=event.resultIndex; i<event.results.length; i++){
var transcript = event.results[i][0].transcript;
transcript.replace("\n", "<br>");
if(event.results[i].isFinal){
finalTranscripts += transcript;
}
else{
interimTranscripts += transcript;
}
r.innerHTML = finalTranscripts + '<span style="color: #999;">' + interimTranscripts + '</span>';
}
};
speechRecognizer.onerror = function(event){
};
}
else{
r.innerHTML = "Your browser does not support that.";
}
}
</script>
</head>
<body>
<div id="result"></div>
<button onclick="start()">Listen</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5967 次 |
最近记录: |