Electron中有哪些实现语音识别的方法?

XYB*_*BOX 6 javascript speech-recognition speech-to-text electron

所以我有一个 Electron 应用程序,它使用网络语音 API(SpeechRecognition)来获取用户的声音,但是它不起作用。代码:

if ("webkitSpeechRecognition" in window) {
    let SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
    let recognition = new SpeechRecognition();

    recognition.onstart = () => {
      console.log("We are listening. Try speaking into the microphone.");
    };

    recognition.onspeechend = () => {
      recognition.stop();
    };

    recognition.onresult = (event) => {
      let transcript = event.results[0][0].transcript;
      console.log(transcript);
    };

    recognition.start();
  } else {
    alert("Browser not supported.")
  }
Run Code Online (Sandbox Code Playgroud)

它在控制台中显示We are listening...,但无论你说什么,它都不会给出输出。另一方面,在 Google Chrome 中运行完全相同的东西是可行的,无论我说什么都会让控制台与该console.log(transcript);部分一起注销。我做了一些更多的研究,结果发现 Google 最近停止了对基于 shell 的 Chromium Windows 中的 Web Speech API 的支持(Tmk,除了 Google Chrome 或 MS Edge 之外的所有内容),所以这似乎就是它不支持的原因正在开发我的 Electron 应用程序。

请参阅:电子语音库的结尾 Artyom.js 发布了 另一个与此相关的 stackOverflow 问题

那么有什么办法可以让它在 Electron 中工作吗?

XYB*_*BOX 3

我最终做了一个实现,它使用媒体设备 API 通过麦克风获取用户的语音,然后将其发送到 Python 服务器,WebSockets该服务器使用带有 pip 包的音频流SpeechRecognition,并将转录的文本返回给客户端(Electron 应用程序) 。

这就是我实现的,对于这样简单的事情来说太长了,但是如果有人有更好的建议,请通过写答案让我知道。

  • 当/如果我获得足够的声誉,我会在这个问题上悬赏,因为这个问题对于 Electron 开发者来说需要强调。 (2认同)