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

AIo*_*Ion 7 speech-recognition google-api api-key electron

我正在努力让这个电子语音识别工作.以下代码适用于普通浏览器:

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();
  }
Run Code Online (Sandbox Code Playgroud)

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

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

这意味着:

完成识别所需的网络通信失败.(摘自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');
...
Run Code Online (Sandbox Code Playgroud)

关于这个话题有很多问题,我尝试了所有问题. 这里 这里这里,还有更多.

这里解释环境变量设置的想法.

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

当我按照此处的建议更改环境变量时: 在此输入图像描述

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

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

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

是不是不可能在电子中进行语音识别?然后我在这里失踪了..

更新:

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

小智 3

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

没有更多的 http-for-webrtc-on-chrome-only-https