Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 语音识别-连续运行_Javascript_Html_Speech Recognition_Html5 Audio - Fatal编程技术网

Javascript 语音识别-连续运行

Javascript 语音识别-连续运行,javascript,html,speech-recognition,html5-audio,Javascript,Html,Speech Recognition,Html5 Audio,我正在尝试使用语音识别API创建一个支持HTML5的语音控制编辑器。目前,问题是当你开始录音时,它只会持续一定的时间(基本上直到用户停止说话) 我可以将continuous和interimResults设置为true,但这并不能让它永远记录下来。它仍然结束 我还可以告诉它在结束事件期间重新开始,但它每次都会请求许可,这是非常具有破坏性的 有没有一种方法可以让它在只需询问用户一次的情况下持续运行?无论您选择何种设置,Google Chrome都会在一段时间后停止语音识别引擎。。。这是没有办法的 我

我正在尝试使用语音识别API创建一个支持HTML5的语音控制编辑器。目前,问题是当你开始录音时,它只会持续一定的时间(基本上直到用户停止说话)

我可以将
continuous
interimResults
设置为
true
,但这并不能让它永远记录下来。它仍然结束

我还可以告诉它在结束事件期间重新开始,但它每次都会请求许可,这是非常具有破坏性的


有没有一种方法可以让它在只需询问用户一次的情况下持续运行?

无论您选择何种设置,Google Chrome都会在一段时间后停止语音识别引擎。。。这是没有办法的

我找到的唯一可靠的连续语音识别解决方案是,按照您的建议,通过绑定到
onend()
事件来重新启动它

如果您尝试了类似的技术,请注意以下几点:

  • 如果您不使用HTTPS,则每次重新启动时都会提示用户反复授予权限。因此,以及其他许多原因,在使用语音识别时不要在HTTP上妥协

  • 确保您没有在没有一些保护措施的情况下立即重新启动语音识别onend(),以确保您没有将浏览器置于无休止的循环中(例如,两个打开的选项卡带有
    onend(function(){restart()})
    会使浏览器崩溃,正如我在本错误报告中所详述的:) 看看我是怎么处理的

  • 如果终止原因类似于
    服务不允许
    不允许


  • 您可以在我的代码中看到我是如何处理此问题的-

    请尝试此代码,我认为它可以满足您的需要:

    
    语音识别
    #结果{
    边框:2件纯黑;
    高度:200px;
    边界半径:3px;
    字体大小:14px;
    }
    钮扣{
    位置:绝对位置;
    顶部:240px;
    左:50%;
    }
    函数start(){
    var r=document.getElementById(“结果”);
    if(“窗口中的webkitSpeechRecognition”){
    var speechRecognizer=new-webkitSpeechRecognition();
    speechRecognizer.continuous=true;
    speechRecognizer.interimResults=true;
    speechRecognizer.lang=“en US”;
    speechRecognizer.start();
    var finalTranscripts=“”;
    speechRecognizer.onresult=函数(事件){
    var interimTranscripts=“”;
    对于(var i=event.resultIndex;i
    HTML5语音连续需要这个

    window.SpeechRecognition=window.webkitSpeechRecognition | | window.SpeechRecognition;
    if(窗口中的“SpeechRecognition”){
    console.log('supported speech')
    }否则{
    console.error('不支持语音')
    }
    const recognition=new window.SpeechRecognition();
    识别。连续=正确;
    recognition.onresult=(事件)=>{
    console.log('transscript:',event.results[event.results.length-1][0]。转录本);
    }
    
    recognition.start();
    您必须每隔几秒钟重新启动一次发动机。请参阅我的代码


    注意:在chrome V70之后,至少需要一次点击界面

    @samanime如果你认为这是最准确的答案,请将答案标记为正确答案。只是更新。github链接似乎已断开。这是我找到的当前链接。所有链接都已修复为不应与未来版本的Annyangan断开的链接swer很棒!注意下面的部分非常有用,并且超出了OP的要求。我正在寻找这个“speechRecognizer.continuous=true”;非常感谢!