智能语音
功能介绍
智能语音算法采用本地离线模式,订阅音频数据后送给BPU处理,然后发布唤醒、命令词识别、声源定位DOA角度信息以及语音ASR识别结果等消息。智能语音功能的实现对应于TogetheROS.Bot的hobot_audio package,适用于RDK配套的环形和线形四麦阵列。
代码仓库: (https://github.com/D-Robotics/hobot_audio.git)
应用场景:智能语音算法能够识别音频中的唤醒词以及自定义的命令词,并将语音内容解读为对应指令或转化为文字,可实现语音控制以及语音翻译等功能,主要应用于智能家居、智能座舱、智能穿戴设备等领域。
语音控制小车运动案例:4.6 语音控制小车运动
支持平台
| 平台 | 运行方式 | 示例功能 |
|---|---|---|
| RDK X3 | Ubuntu 20.04 (Foxy), Ubuntu 22.04 (Humble) | 启动音频模块算法,并在终端显示结果 |
| RDK X5, RDK X5 Module | Ubuntu 22.04 (Humble) | 启动音频模块算法,并在终端显示结果 |
准备工作
-
RDK已烧录好Ubuntu 20.04/Ubuntu 22.04系统镜像。
-
RDK已成功安装TogetheROS.Bot。
-
RDK已成功安装智能语音算法包,安装命令:
- Foxy
- Humble
sudo apt update
sudo apt install tros-hobot-audiosudo apt update
sudo apt install tros-humble-hobot-audio
如果sudo apt update命令执行失败或报错,请查看常见问题章节的Q10: apt update 命令执行失败或报错如何处理?解决。
- 按照以下方法在RDK上接好环形或线形四麦音频板。
连接音频板
接口连接
环形麦克风阵列
环形麦克风板为一体化设计,实物如下图:

购买链接如下:
(https://www.waveshare.net/shop/Audio-Driver-HAT.htm)
连接步骤:
-
将麦克风板连接到RDK X3 40PIN GPIO 接口上,连接后实物如下图:

-
接上电源,网线等。
线形麦克风阵列
线形麦克风阵列由音频转接板和线形麦克风板两部分组成,实物图和连接说明如下:
音频转接板:

线形麦克风板:

-
首先需要将RDK X3与音频转接板连接,二者引脚与引脚均应对齐,连接实物图如下:

-
其次,需要将RDK X3与麦克风阵列拾音板连接,转接板 FPC 接口通过15pin 异面FFC线缆接入到麦克风阵列拾音板,线缆金手指应朝下,连接实物图如下:

-
接上AEC的线。

-
接上电源,网线等。
上电检查
将RDK与麦克风阵列接好之后上电,在串口上使用指令i2cdetect -r -y 0可以检查设备的接入情况,若成功接好,默认可以在I2C上读取到三个地址。如下图:

若没检测到,请重新检查设备的连接。
配置音频板
- RDK_X3
- RDK_X5
首次使用音频板需要使用srpi-config进行配置,配置方法参考RDK用户手册RDK X3微雪Audio Drive章节。
首次使用音频板需要使用srpi-config进行配置,配置方法参考RDK用户手册RDK X5微雪Audio Drive章节。
使用介绍
智能语音hobot_audio package开始运行之后,会从麦克风阵列采集音频,并且将采集到的音频数据送入语音智能算法SDK模块做智能处理,输出唤醒事件、命令词、ASR结果等智能信息,其中唤醒事件、命令词通过audio_msg::msg::SmartAudioData类型消息发布,ASR结果通过std_msgs::msg::String类型消息发布。
具体流程如下图:

智能语音功能支持对原始音频进行降噪之后进行ASR识别,默认的唤醒词和命令词定义在智能语音功能代码模块根目录下config/hrsc/cmd_word.json文件,默认为:
{
"cmd_word": [
"地瓜你好",
"向前走",
"向后退",
"向左转",
"向右转",
"停止运动"
]
}
唤醒词以及命令词用户可以根据需要配置,若更改唤醒词效果可能会与默认的唤醒词命令词效果有差异。推荐唤醒词以及命令词使用中文,最好是朗朗上口的词语,且词语长度推荐使用3~5个字。
另外,智能语音功能支持输出声源定位的DOA角度信息,单位为角度,环形麦克风阵列取值范围:0度~360度,线形麦克风阵列取值范围:0度~180度。
角度的相对位置关系与麦克风的安装位置强相关,环形麦克风阵列DOA角度示意图如下:
![]()
线形麦克风阵列DOA角度示意图如下:
![]()
RDK板端运行hobot_audio package: