使用WebRTC,Node.js和语音识别引擎进行实时语音识别

jpe*_*pen 9 javascript speech-recognition node.js webrtc

A.我想要实现的目标.

一个Web应用程序,允许在Web浏览器中进行实时语音识别(像这样).

B.我目前正在考虑用于实现A的技术.

  • JavaScript的
  • Node.js的
  • 的WebRTC
  • Microsoft Speech API或Pocketsphinx.js或其他东西(不能使用Web Speech API)

C.非常基本的工作流程

  1. Web浏览器与节点服务器建立连接(服务器充当信令服务器并且还提供静态文件)
  2. Web浏览器使用getUserMedia()获取音频流,并将用户的语音发送到节点服务器
  3. 节点服务器将正在接收的音频流传递给语音识别引擎进行分析
  4. 语音识别引擎将结果返回给节点服务器
  5. 节点服务器将文本结果发送回启动Web浏览器
  6. (节点服务器执行步骤1到5以处理来自其他浏览器的请求)

D.问题

  1. Node.js是否适合实现C?
  2. 如何将接收到的音频流从我的节点服务器传递到与服务器分开运行的语音识别引擎?
  3. 我的语音识别引擎可以作为另一个Node应用程序运行(如果我使用Pocketsphinx)?所以我的Node服务器与我的Node语音识别服务器通信.

Nik*_*rev 7

Node.js是否适合实现C?

是的,虽然没有硬性要求.有些人正在运行带有gstreamer的服务器,例如check

http://kaljurand.github.io/dictate.js/

节点也应该没问题.

如何将接收到的音频流从我的节点服务器传递到与服务器分开运行的语音识别引擎?

节点到节点通信的方式有很多种.其中一个是http://socket.io.还有普通的插座.特定框架取决于您对容错和可伸缩性的要求.

我的语音识别引擎可以作为另一个Node应用程序运行(如果我使用Pocketsphinx)?所以我的Node服务器与我的Node语音识别服务器通信.

是的,当然.您可以创建一个节点模块来扭曲pocketsphinx API.

更新:检查一下,它应该类似于你需要的:

http://github.com/cmusphinx/node-pocketsphinx

  • Pocketsphinx现在也可以在100%javascript中使用:https://github.com/syl22-00/pocketsphinx.js (2认同)

jes*_*sup 5

您应该联系 Andre Natal,他在去年秋天的 Firefox 峰会上展示了与此类似的演示,现在正在参与在 Firefox/FxOS 中实现离线语音识别的 Google Summer of Code 项目:http ://cmusphinx.sourceforge.net/2014/ 04/speech-projects-on-gsoc-2014/