我正在使用简单的语音来webkitSpeechRecognition
进行文本检测。
此代码在Windows桌面上运行良好。
但是 - 在 Android Chrome浏览器上 - 开始检测时,Android状态栏上的麦克风仅显示1或2秒。如果没有语音活动 - 关闭,语音识别将停止。如果我在点击“开始”后说得非常快,它会一直亮着。
有关如何随时使用Android麦克风的任何想法吗?
if ('webkitSpeechRecognition' in window) {
var recognition = new webkitSpeechRecognition();
recognition.continuous = true;
recognition.interimResults = true;
recognition.onstart = function () {
$("#status").html("Status: Recording...");
recognizing = true;
};
recognition.onerror = function (event) {
alert(event.error);
};
recognition.onend = function() {
recognizing = false;
};
recognition.onresult = function(event) {
var interim_transcript = '';
for (var i = event.resultIndex; i < event.results.length; ++i) {
if (event.results[i].isFinal) {
final_transcript += event.results[i][0].transcript;
} else {
interim_transcript += event.results[i][0].transcript;
}
}
final_transcript = capitalize(final_transcript);
$("#final_span").html(linebreak(final_transcript));
$("#interim_span").html(linebreak(interim_transcript));
};
}
答案 0 :(得分:3)
我正在尝试与WebVR建立免提互动时,我自己寻找解决方案。
https://codepen.io/bryik/pen/mErOOR?editors=0010至少只发出一次哔哔声,但经过一些测试后我注意到,发出“哔”声。每次点击/点击时再次触发识别。
一个较旧的资源给了我很好的希望,annyang(https://github.com/TalAter/annyang)可能有效:
https://github.com/cvan/webvr-holodeck/issues/22 但在这里我猜它也只是在调用
recognition.onend = function() {
console.info("voice recognition ended, restarting...");
recognition.start();
}
在recognition.onend回调中。所以在android chrome上,你可能每隔一秒就会遇到识别嘟嘟声......
最后,MDN并没有真正说明是否可以对android chrome(https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition)进行持续识别,但我看到的每个例子都没有提供android上的连续模式(至少在CyanogenMod Lollipop上)
//编辑如果您查看https://www.microsoft.com/cognitive-services/en-us/speech-api,他们会以某种方式设法获得持续识别,但我无法在其源代码中找到任何内容......
答案 1 :(得分:-1)
尝试设置:
recognition.continuous = false
不能保证,但这对我在 Galaxy S7 上的 Chrome 上运行有效