使用电子/铬浏览器时SpeechRecognition网络错误

时间:2017-11-10 16:08:35

标签: google-api electron speech-recognition api-key

我试着花几个小时才能完成电子语音识别工作。以下代码适用于普通浏览器:

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();
  }

但是当换成电子时,我得到了这个:

SpeechRecognition network error when working with electron / chromium browser

这意味着:

  

完成识别所需的网络通信失败。 (采取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 herehere以及更多。

解释了环境变量设置的想法here

我也发现了一些可能相关的有趣内容。

当我按照建议here更改环境变量时: enter image description here

然后语音识别在普通的Chrome浏览器中停止运行。 我认为它会覆盖默认的Chrome密钥。 (Chrome使用谷歌服务器进行识别)

我删除了env变量 - Chrome再次工作..电子没有。我已为此密钥启用了结算功能。

我无法相信每个人都未能将此功能整合到电子中。语音识别很重要。我不知道我还应该做些什么。

是否依靠不可能在电子中进行语音识别?那么我在这里失踪的是什么..

更新

我看到SpeechRecognition.serviceURI已从Chrome中删除 - 看起来此参数旨在实现自定义语音识别解决方案。我找到了这个帖子 - why was serviceURI removed from chrome

1 个答案:

答案 0 :(得分:2)

正如我在评论中提到的,如果您使用版本高于47的Chrome,则必须通过https协议与浏览器API进行所有通信。 Chrome中的语音识别API会调用 WebRTC

no-more-http-for-webrtc-on-chrome-only-https