语音识别

从麦克风获得音频数据,通过模型分析语音内容,将识别结果文本通过主题发布。

语音识别分为在线识别和离线识别。

方案 类型 优点 缺点 适用场景
Google/Azure等云服务 在线 准确率最高​​,​​语言支持最广​ 需要网络,付费使用 服务机器人等精度要求高的场景
Vosk 离线 ​​多语言支持较好​​,集成简单 精度略低,消耗本地算力 无网络环境、嵌入式设备
Whisper 离线 精度较高,支持语言多 算力要求较高 对精度要求极高的离线应用,算力充足的机器人
PocketSphinx 离线 极度轻量,完全离线 精度低,多语言支持差 教学演示、简单的关键字唤醒

中文语音识别(Vosk)

内置节点 speech_recognition_model 支持不同精度和语言的模型,根据实际情况选择使用。

启动命令

shell
ros2 run pycodeaudio speech_recognition_model

该节点默认绑定可以直接通过平台节点管理菜单启动。

节点参数说明

参数名 描述 类型 默认值 说明
model_path 模型 String vosk-model-small-cn-0.22 模型文件路径。可使用相对文件路径,在src/model/下建立与节点同名文件夹,将模型放入该文件夹,可直接使用该文件名。
sample_rate 采样率 int 16000 音频采用频率
wake_words 唤醒词 String 设为空不启用唤醒词。如果设置只有监听到唤醒词,才能发布识别结果,配合wake_timeout使用。
wake_timeout 唤醒超时 int 60 单位秒(s),唤醒词超时时间,超时后不再发布语音识别结果。

参数使用方法

shell
#降低图像采集帧率 ros2 run pycodeaudio speech_recognition_model --ros-args -p wake_words:="编程"