Node-RED 是一款基于 Node.js 的开源流程编排工具,它非常适合用于图形化地编排、连接、组织各种应用程序和 WEB 服务的流程。而 snowboy 是一个针对语音唤醒的热词检测库,它支持离线语音唤醒,可以很方便地用在各种嵌入式系统和移动设备上,使得语音交互更加智能化。
node-red-contrib-snowboy 是在 Node-RED 中对 snowboy 库的封装,可以让我们在 Node-RED 中使用 snowboy 完成语音识别和语音唤醒等功能。下面将详细介绍如何使用该 npm 包。
安装
安装 node-red-contrib-snowboy 很简单,首先需要全局安装 Node-RED:
npm install -g --unsafe-perm node-red
然后在 Node-RED 的用户目录下(一般是 ~/.node-red
)执行:
npm install node-red-contrib-snowboy
使用
配置
在 Node-RED 的界面中,找到 snowboy 的节点,并将其拖拽到画布上。打开节点的属性窗口,我们需要对节点进行如下配置:
- Model File:唤醒模型的路径,可以是绝对路径或相对于 Node-RED 用户目录的相对路径。
- Sensitivity:唤醒的敏感度,范围从 0 到 1,建议设置为 0.5 或更高。
- Hotword:唤醒的热词,默认为 "snowboy"。
连接节点
snowboy 节点有两个端口:输入端口和输出端口。我们需要将其与其他节点进行连接,以达成完整的流程。
输入端口接收音频流,我们可以通过麦克风或者其他音源(如文件或 rtsp 流)把音频流输入到此节点。输出端口将返回两种类型的消息:detect 和 silence。
当 snowboy 节点检测到唤醒词时,将返回 detect 消息,其 payload 包含了被唤醒的热词。我们可以通过 switch 节点对这个 payload 进行判断,然后选择相应的逻辑进行处理。
当 snowboy 节点没有检测到唤醒词时,将返回 silence 消息,其 payload 和 detect 消息一样。我们可以利用此消息来判断用户是否停止说话,以便停止音频录制和处理过程。
示例代码
下面是一个简单的流程示例。该流程将唤醒词设置为 "hey there",当唤醒词被检测到时,会输出一条信息到 debug 窗口。
[{"id":"f3e446f1.4e0468","type":"snowboy","z":"97f2b068.291f48","name":"","modelPath":"heythere.umdl","sensitivity":"0.5","hotword":"hey there","x":290,"y":200,"wires":[["7aa0b2d2.c7c754"]]},{"id":"7aa0b2d2.c7c754","type":"switch","z":"97f2b068.291f48","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"hey there","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":450,"y":200,"wires":[["d115a2ff.c436e"]]},{"id":"d115a2ff.c436e","type":"debug","z":"97f2b068.291f48","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":610,"y":200,"wires":[]}]
指导意义
node-red-contrib-snowboy 是一个优秀的 npm 包,它将 snowboy 这一功能强大的语音唤醒库与 Node-RED 这一流程编排工具进行了一次完美的结合。借助该包,我们可以快速地实现语音交互功能,从而提高用户体验和产品价值。
需要注意的是,使用语音交互技术之前,我们需要对用户隐私和数据安全等问题进行充分地考虑和保护。同时,针对不同的应用场景和用户需求,也需要对其语音唤醒、语音识别和语音合成等方面进行充分的优化和测试。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005606e81e8991b448de93a