Android Chrome 上的 webkitSpeechRecognition
webkitSpeechRecognition on Android Chrome
我正在使用 webkitSpeechRecognition
进行简单的语音到文本检测。
此代码在 Windows 桌面上运行良好。
但是 - 在 Android Chrome 浏览器 - 开始检测时,Android 状态栏上的麦克风 仅显示 1 或2秒。如果没有语音activity - 它关闭并且语音识别停止。如果我在单击 "Start" 后确实说得很快,它会保持打开状态。
有什么想法可以让 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));
};
}
我正在寻找解决方案,因为我正在尝试与 WebVR 建立免提交互。
https://codepen.io/bryik/pen/mErOOR?editors=0010 至少只发出一次哔哔声,但经过一些测试后我注意到,用于识别的 'beep' 在每个 click/tap.
时再次触发
旧资源给了我希望,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 ,他们以某种方式设法获得连续识别,但我在他们的源代码中找不到任何东西......
尝试设置:
recognition.continuous = false
不能保证,但这对我 运行 在 Chrome 在 Galaxy S7
上有效
我正在使用 webkitSpeechRecognition
进行简单的语音到文本检测。
此代码在 Windows 桌面上运行良好。
但是 - 在 Android Chrome 浏览器 - 开始检测时,Android 状态栏上的麦克风 仅显示 1 或2秒。如果没有语音activity - 它关闭并且语音识别停止。如果我在单击 "Start" 后确实说得很快,它会保持打开状态。
有什么想法可以让 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));
};
}
我正在寻找解决方案,因为我正在尝试与 WebVR 建立免提交互。
https://codepen.io/bryik/pen/mErOOR?editors=0010 至少只发出一次哔哔声,但经过一些测试后我注意到,用于识别的 'beep' 在每个 click/tap.
时再次触发旧资源给了我希望,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 ,他们以某种方式设法获得连续识别,但我在他们的源代码中找不到任何东西......
尝试设置:
recognition.continuous = false
不能保证,但这对我 运行 在 Chrome 在 Galaxy S7
上有效