Edge 声称支持 webkitSpeechRecognition,但它不起作用(讨论 here,在用于测试的网站上不起作用,例如 mozilla one,出现错误“识别时发生错误:不支持语言“尽管我的用户界面是美式英语。
我如何检测是否真的支持 webkitSpeechRecognition?我试图通过查看用户代理来过滤掉 Edge,但它显示为 Chrome,而且我更愿意只使用功能检测而不是查看用户代理。我想检查这个 without 请求麦克风许可(如果我确实请求麦克风许可,我必须等待他们接受,然后看到 language-not-supported 错误)。有没有一种简单的方法来检查这个,类似于只检查
window["webkitSpeechRecognition"]
的值(这是在 Edge 中定义的,尽管没有工作)?
如果你想检查对webkitSpeechRecognition的支持,那么你可以参考下面的JS代码示例。
if ('SpeechRecognition' in window || 'webkitSpeechRecognition' in window)
{
console.log("speech recognition API supported");
}
else
{
console.log("speech recognition API not supported")
}
MS Edge 88.0.705.56 中的输出:
但是,如果您直接尝试使用 webkitSpeechRecognition 进行测试,那么它将不起作用。
看起来这个功能目前正在开发中,要使用它,我们需要通过传递命令行参数来启用它。
我建议你参考下面的步骤。
--enable-features=msSpeechRecognition
路径后添加msedge.exe
。确保在路径和命令行参数之间添加 1 个空格。它应该如下所示。
MS Edge 88.0.705.56 中的输出:
此外,检查错误很有用(如上例源代码所示,见下文,https://www.google.com/intl/en/chrome/demos/speech.html):例如如果不在 https 网站上,音频可能会被禁用。
recognition.onerror = function(event) {
if (event.error == 'no-speech') {
start_img.src = '/intl/en/chrome/assets/common/images/content/mic.gif';
showInfo('info_no_speech');
ignore_onend = true;
}
if (event.error == 'audio-capture') {
start_img.src = '/intl/en/chrome/assets/common/images/content/mic.gif';
showInfo('info_no_microphone');
ignore_onend = true;
}
if (event.error == 'not-allowed') {
if (event.timeStamp - start_timestamp < 100) {
showInfo('info_blocked');
} else {
showInfo('info_denied');
}
ignore_onend = true;
}
};
它在 113.0.1745.0(官方构建)Canary(arm64)中不工作
--enable-features=msSpeechRecognition
,会在识别错误中抛出 language-not-supported
错误
想办法启用~