我试着花几个小时才能完成电子语音识别工作。以下代码适用于普通浏览器:
if (window.SpeechRecognition === null ){
console.log("Speech Recognition is not supported.");
}else {
let recognizer = new window.SpeechRecognition();
recognizer.continuous = true;
recognizer.lang = "en-US";
recognizer.language = "English";
recognizer.onresult = function (ev){
console.log("Recognition result: ", event);
displayVoice.value == "";
}
recognizer.onerror = function (ev){
console.log("Recognition error: ", ev);
}
// recognizer.interimResults = true;
recognizer.start();
}
但是当换成电子时,我得到了这个:
这意味着:
完成识别所需的网络通信失败。 (采取from MDN)
我在GOOGLE_API_KEY
设置了main.js
。
process.env.GOOGLE_API_KEY = 'NIzaadwINWVhlqbjjklajwdBp2zjcFxnD3O3cBwc'; - (it's false stuff don't worry).
// process.env.GOOGLE_DEFAULT_CLIENT_ID = "95131180798735604-4k0pfsc6g.apps.googleusercontent.com"
// process.env.GOOGLE_DEFAULT_CLIENT_SECRET = "2kkkWCawzzlawuruhvdddwd_F1nqwFMUklUjYUTsft"
const path = require('path');
const url = require('url');
const {app, BrowserWindow} = require('electron');
...
关于此主题已经有很多问题,我尝试了所有问题。 here here 和here以及更多。
解释了环境变量设置的想法here。
我也发现了一些可能相关的有趣内容。
当我按照建议here更改环境变量时:
然后语音识别在普通的Chrome浏览器中停止运行。 我认为它会覆盖默认的Chrome密钥。 (Chrome使用谷歌服务器进行识别)
我删除了env变量 - Chrome再次工作..电子没有。我已为此密钥启用了结算功能。
我无法相信每个人都未能将此功能整合到电子中。语音识别很重要。我不知道我还应该做些什么。
是否依靠不可能在电子中进行语音识别?那么我在这里失踪的是什么..
更新:
我看到SpeechRecognition.serviceURI已从Chrome中删除 - 看起来此参数旨在实现自定义语音识别解决方案。我找到了这个帖子 - why was serviceURI removed from chrome。
答案 0 :(得分:2)
正如我在评论中提到的,如果您使用版本高于47的Chrome,则必须通过https协议与浏览器API进行所有通信。 Chrome中的语音识别API会调用 WebRTC 。