使用WebRTC、Node.js和语音识别引擎实现实时语音识别

12
A. 我要实现的是一个能够在网页浏览器内实时语音识别的Web应用程序(类似于这个)。
B. 我目前考虑使用以下技术来实现A:
- JavaScript - Node.js - WebRTC - Microsoft Speech API或 Pocketsphinx.js或其他一些语音识别引擎(不能使用Web Speech API)。
C. 基本工作流程如下:
1. 网页浏览器连接到Node服务器(服务器充当信令服务器,同时提供静态文件)。 2. 网页浏览器使用getUserMedia()获取音频流,并将用户的声音发送到Node服务器。 3. Node服务器将接收到的音频流传递给语音识别引擎进行分析。 4. 语音识别引擎将结果返回给Node服务器。 5. Node服务器将文本结果发送回发起请求的网页浏览器。 6. (Node服务器执行步骤1到5以处理来自其他浏览器的请求。)
D. 问题:
1. Node.js是否适合实现C? 2. 如何将从我的Node服务器接收到的音频流传递给与服务器分离运行的语音识别引擎? 3. 如果我使用Pocketsphinx,我的语音识别引擎是否可以作为另一个Node应用程序运行?这样我的Node服务器就可以与我的Node语音识别服务器进行通信。

你的链接后面的源代码位于:http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/speech/,你可能想看看他们是如何实现它来通知你的架构? - Robert Rowntree
2个回答

9

Node.js 能够实现 C 吗?

是的,虽然没有硬性要求。有些人使用 gstreamer 运行服务器,例如检查:

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

Node 也应该可以。

如何将从我的 Node 服务器接收的音频流传递到单独运行于服务器之外的语音识别引擎?

有许多方法可以实现节点与节点之间的通信。其中一个方法是 http://socket.io。还有一种是 plain sockets 。特定的框架取决于您对容错和可扩展性的要求。

如果我使用 Pocketsphinx,那么我的语音识别引擎可以作为另一个 Node 应用程序运行吗?因此,我的 Node 服务器与我的 Node 语音识别服务器进行通信。

是的,当然可以。您可以创建一个节点模块来包装 pocketsphinx API。

更新:请检查这个,它应该类似于您需要的内容:

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


2
Pocketsphinx现在也可以用100%的JavaScript编写:https://github.com/syl22-00/pocketsphinx.js - Willem Mulder

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接