指令识别

语音识别将音频数据转为文本,文本如何转为机器人的动作,需要解析其中的指令。

speech_recognition_pycodebot 通过离线语音(Vosk)识别文本,在指令文件 model/speech_recognition_pycodebot/pycodebot.json中定义语音对应的控制指令。

通过 util_pycode_json.PycodeJson解析语音文本找到对应的操作对象和动作。

Python
from .util_pycode_json import PycodeJson # 初始化识别器 def init_recognizer(self): ... # 加载配置文件 self.pycoder = PycodeJson(json_file) ... # 处理语音识别文本 def process_command(self, text): # 解析指令 result = self.pycoder.parse(text) ...

启动命令

shell
ros2 run pycodeaudio speech_recognition_pycodebot

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

节点参数说明

参数名 描述 类型 默认值 说明
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_timeout:=600

指令操作对象

意图(intent):control_package

动作(actions):

动作 关键词
start 启动/开启/打开/开始/启用/运行
stop 停止/结束/关闭/停用

对象(objects):

对象 关键词
node_camera_raw 图像/图片 + 采集
node_camera_jpeg 图像/图片 + 压缩
face_recognition 人脸 + 识别
object_recognition 物体/东西/物品/图像/图形 + 识别
gesture_recognition_rps 猜拳 + 识别
gesture_recognition_digits 数字 + 识别
gesture_recognition_index_direction 方向/指向 + 识别

意图(intent):control_package

动作(actions):

动作 关键词
compile 编译

对象(objects):

对象 关键词
mycodebot 我/个人 + 项目/工程/代码

指令示例

语音识别结果: "启动图像采集"
匹配动作: start (关键词: "启动")
匹配对象: node_camera_raw (关键词同时包含: "图像", "采集")
发布识别结果: { "action": "start", "object": "node_camera_raw" }
解析收到该结果后执行启动node_camera_raw节点的操作