首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Microsoft Edge中的语音识别API (未定义)

Microsoft Edge中的语音识别API (未定义)
EN

Stack Overflow用户
提问于 2020-03-06 18:02:27
回答 1查看 2.6K关注 1票数 1

在最近的一个项目中,我一直在尝试使用SpeechRecognition应用编程接口(https://wicg.github.io/speech-api/#examples-recognition)。我目前使用的是微软的edge浏览器,根据https://caniuse.com/#feat=speech-recognition的说法,它只在那里得到了部分支持。从外观上看,边缘似乎支持“文本到语音”功能(SpeechSynthesis),但不支持语音识别功能。因为无论我在EDGE中为SpeechRecognition (Speech to text) API使用什么前缀,它总是无法识别它,并显示它“未定义”。

有没有人清楚这种情况,或者知道如何让语音识别在JavaScript中使用edge?

干杯

EN

回答 1

Stack Overflow用户

发布于 2020-06-05 07:17:38

截至2020年6月4日,Edge Chromium并不真正支持Web Speech API的语音识别部分。Microsoft似乎正在为Edge Chromium解决这个问题。它可能永远不会在Edge Legacy (非铬)上工作。

developer.microsoft.com错误地说它是“受支持的”,但也说“工作草案或等效的”。(更新:截至2021年2月18日,它现在说:“不支持”)

developer.mozilla.org compatibility table还错误地说它在边缘中受支持。

caniuse正确地显示了它在Edge Chromium中不受支持,即使它的行为像它一样,但是正确的事件没有被激发。

除了Chrome和Chromium之外,我见过Web Speech API的语音识别部分使用的唯一其他浏览器是Brave和Yandex。Yandex可能连接到俄罗斯的服务器来处理语音识别。它做得并不好。至少在英语里是这样。目前,Brave返回了一个"Network“错误。根据github Brave discussion的说法,勇敢必须向谷歌付费,才能获得语音到文本的服务。

以下是一些快速代码,可用于测试语音识别在浏览器中是否正常工作,并显示正文中的所有错误和事件。仅适用于https协议。它似乎不能与codepen或jsfiddle一起工作。

代码语言:javascript
复制
var msg = document.body;
var cr = "<br />";
var event_list = ["onaudioend", "onaudiostart", "onend", "onerror", "onnomatch", "onresult", "onsoundend", "onsoundstart", "onspeechend", "onspeechstart", "onstart"];
var sr = window.SpeechRecognition || window.webkitSpeechRecognition || false;

if (sr) {
    var recognition = new sr();
    event_list.forEach(function(e) {
        recognition[e] = function() { 
            console.log(event); 
            var txt = event.type + ": ";
            if (event.results) txt += event.results[0][0].transcript;
            if (event.error) txt += event.error; // "not-allowed" usually is because of not using secure https protocol
            if (event.type == "end") 
                recognition.start(); // Start Recognition again
            msg.innerHTML += txt + cr;
        };  
    });
    recognition.start();
}
else {
    msg.innerHTML += "This browser does not support SpeechRecognition or webkitSpeechRecognition." + cr;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60561704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档