一款内置有micro_ros的ROS2离线语音交互模块,用户可以自定义5个唤醒词,自定义300条离线命令词识别,自定义300条语音合成,同时支持10米远识别距离,抗噪音干扰能力强,识别响应时间小于100ms,性价比超高~
|
|
4 周之前 | |
|---|---|---|
| code | 4 月之前 | |
| doc | 8 月之前 | |
| firmware | 4 周之前 | |
| offline_voice_module | 4 周之前 | |
| rules | 6 月之前 | |
| snap | 4 月之前 | |
| .gitignore | 8 月之前 | |
| LICENSE | 8 月之前 | |
| README.md | 4 周之前 |
一款内置有micro_ros的ROS2离线语音交互模块,用户可以自定义5个唤醒词,自定义300条离线命令词识别,自定义300条语音合成,同时支持10米远识别距离,抗噪音干扰能力强,识别响应时间小于100ms,性价比超高,下面对代码仓库各目录作用介绍:
首先使用Type-C线连接到ROS2离线语音交互模块的对应通信接口上,然后将USB接口插到你的ROS2主控设备的USB接口上,然后就可以使用命令来建立连接使用了。
首先需要在你的ROS2主控系统上安装好micro_ros_agent软件包,因为我们这款ROS2离线语音交互模块需要通过micro_ros_agent才能与ROS2进行通信。这里要根据micro_ros_agent不同的安装方式,则与ROS2系统建立连接的命令也不一样。
由于语音模块使用串口与系统进行通信,这样设备挂载点为dev目录下的ttyACM0或者ttyACM1等,可能每次名称会变化。为了保证每次设备名称都一样,我们就需要为语音模块设置一个别名,这样每次就可以使用固定的命令与语音模块建立连接了。
需要注意的是,该脚本每次只需要执行一次就可以了,不需要每次使用语音模块时都执行该脚本,使用下面命令执行配置步骤:
./voiceModuleSetup.sh
使用如下命令与ROS2离线语音交互模块建立连接:
ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/voiceModule
如果在本地ros2系统中成功安装了micro_ros_agent,那就可以将offline_voice_module目录复制一份到自己的ROS2工作区的src目录内,然后在自己ros2工作区根目录下使用使用如下命令就可以编译该软件包:
colcon build --packages-select offline_voice_module
当成功编译完软件包后,就可以使用如下命令来与语音模块建立连接:
ros2 launch offline_voice_module offline_voice_module.launch.py
使用如下命令与ROS2离线语音交互模块建立连接:
micro-ros-agent serial --dev /dev/voiceModule
ros2 topic list
可以看到语音模块输出以下话题列表:
/voice_system/asr_cmd_topic
/voice_system/tts_cmd_topic
/voice_system/wakeup_status_topic
下面依次来介绍各话题的作用:
该话题消息类型为std_msgs/msg/Int32类型,用户可以向该话题发布int32类型消息,例如向该话题发布1,则语音模块的TTS播放对应的语音内容;发布2,则语音模块TTS播放对应的语音内容。(ROS2离线语音交互模块最多可以识别300条TTS播放内容)
使用ros2 topic pub命令手动往该话题中发送完整的测试命令,下面测试让语音模块播放测试语音1的命令:
ros2 topic pub --once /voice_system/tts_cmd_topic std_msgs/msg/Int32 "{data: 1}"
这是因为在你自己的主系统中(如ubuntu系统安装有ROS2完整版本的系统中,使用type-c线将语音模块连接到的系统中),在当前用户的home目录下".bashrc"文件中配置了ROS_DOMAIN_ID(取值范围0~232),例如你配置域ID为10,具体如下所示:
export ROS_DOMAIN_ID=10
由于ROS_DOMAIN_ID的功能是为了区分不同的ROS2通信网络,我们语音模块默认是没有配置ROS_DOMAIN_ID参数的,需要将您在本地配置语音模块的域ID就可以了,具体新增配置如下所示:
export XRCE_DOMAIN_ID_OVERRIDE=$ROS_DOMAIN_ID
新增加该配置后,需要重新打开终端,然后使用命令连接语音模块即可,这样当语音模块与ROS2系统建立连接后,就可以获取到语音模块发布出来的各话题了。