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

Javascript Microsoft Edge中的语音识别API(未定义),javascript,api,speech-recognition,microsoft-edge,speech-to-text,Javascript,Api,Speech Recognition,Microsoft Edge,Speech To Text,我一直在尝试在最近的一个项目中使用SpeechRecognition API()。 我目前正在使用Microsoft edge浏览器,据我所知,该浏览器仅部分受支持。 从外观上看,Edge似乎支持“文本到语音”功能(SpeechSynthesis),但不支持语音识别功能。无论我在EDGE中使用什么前缀作为SpeechRecognition(SpeechToText)API,它总是不识别它,并说它“未定义” 任何人都清楚这种情况,或者知道如何让语音识别在JavaScript中使用edge Chee

我一直在尝试在最近的一个项目中使用SpeechRecognition API()。 我目前正在使用Microsoft edge浏览器,据我所知,该浏览器仅部分受支持。 从外观上看,Edge似乎支持“文本到语音”功能(SpeechSynthesis),但不支持语音识别功能。无论我在EDGE中使用什么前缀作为SpeechRecognition(SpeechToText)API,它总是不识别它,并说它“未定义”

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


Cheers

自2020年6月4日起,Edge Chromium并不真正支持Web语音API的语音识别部分。似乎正在为Edge Chromium而努力。它可能永远不会为Edge Legacy(非铬)工作

错误地表示“支持”,但也表示“工作草案或同等文件”。(更新:自2021年2月18日起,现在显示:“不支持”)

还错误地说它在Edge中受支持

正确显示Edge Chromium中不支持它,即使它的行为与此类似,但未触发正确的事件

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

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

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;
}
var msg=document.body;
var cr=“
”; var事件列表=[“onaudioend”、“onaudiostart”、“onend”、“onerror”、“onnomatch”、“onresult”、“onsoundend”、“onsoundstart”、“onspeechend”、“onspeechstart”、“onstart”]; var sr=window.SpeechRecognition | | window.webkitSpeechRecognition | | false; if(sr){ var识别=新sr(); 事件列表。forEach(函数(e){ 识别[e]=函数(){ console.log(事件); var txt=event.type+“:”; if(event.results)txt+=event.results[0][0]。记录本; if(event.error)txt+=event.error;//“不允许”通常是因为未使用安全https协议 如果(event.type==“end”) recognition.start();//再次启动识别 msg.innerHTML+=txt+cr; }; }); 识别。开始(); } 否则{ msg.innerHTML+=“此浏览器不支持SpeechRecognition或webkitSpeechRecognition。”+cr; }
Edge Chromium部分支持该功能,而不是旧版Edge。你有哪种边缘版本?据我所知,我有最新的版本。我已经看到它在edge中得到了部分支持,并且我的“文本到语音”api在edge中工作,因此我假设语音到文本api不工作,这是edge中尚未工作的一个功能。请查看“关于”页面,了解您使用的是哪个版本。如果您没有Chromium版本,则可能对此无能为力。如果您没有Edge Chromium,则可能无法添加对语音识别api的支持。如果需要,您可以随时尝试查找多边形填充。SpeechRecognition API在Edge Chromium中确实存在一些问题。我见过。我还使用Edge Chromium中的SpeechRecognition API提供有关问题的反馈。让我们拭目以待,看看Edge团队是否会在未来的版本中修复它。chromium如何执行语音识别?是图书馆做的吗?如果是,哪一个?是内部工作吗?它依靠服务器进行语音识别吗?@Stephan Google将Chrome和Chrome编程为使用。它使用javascript。它确实联系了谷歌设置的服务器。不过,这并不在前端,谷歌也没有真正提到这一点。