ROS语音交互 —— sound_play

ROS语音交互 - sound_play

Introduction of sound_play package

audio_common是一个第三方音频开发包,它实现了音频驱动以及相关的 ROS 消息机制。它包含如下几个库:
1)audio_capture: 从麦克风采集声音
2)audio_play: 从 audio_capture 收集声音并通过声卡播放
3)audio_common_msgs: 声音传输的消息定义
4)sound_play: 播放声音和语音合成

我们这里主要使用的是最后这个sound_play,它的主要的功能包括:
1)声卡驱动;
2)播放声音(wav、ogg);
3)语音合成(仅限英文)
同时它支持 C++ 以及 python 接口,使得开发者可以不用关心底层的驱动和算法。

sound_play提供一个node,可以把topic中的commands转化为语音, 该node支持内建语音,播放OGG/WAV文件,以及通过festival做语音合成功能。

参考链接:


Install sound_play

下载 sound_play 功能包并编译

1)新建一个~/ros_workspace/src/目录后从github直接clone

git clone https://github.com/ros-drivers/audio_common.git

2)返回~/ros_workspace/目录下使用rosdep安装依赖

rosdep install sound_play

如果所有依赖库都已安装会显示,没有的话会自行安装:

#All required rosdeps installed successfully

3)最后在同一目录下编译即可:

catkin_make

Usages

Test for sound_play

1)运行roscore:

roscore

2)新开一个terminal窗口并cd到之前创建的~/ros_workspace/目录下source:

source devel/setup.bash

3)启动节点:

rosrun sound_play soundplay_node.py

如果显示类似以下信息则表示节点打开成功:

[INFO] [WallTime: 1448443557.340794] sound_play node is ready to play sound

Play sound

1)测试播放内置声音:

我们使用系统内置的声音进行播放,运行如下命令:

rosrun sound_play playbuiltin.py 2

如果听到两声锣声则表示运行成功。

2)测试播放 WAV 或 MP3 等声音:

使用 play.py 这个例子即可,后面的是我的 wav 文件路径,使用时修改成自己的:

rosrun sound_play play.py /home/zacdeng/Music/a2002011001-e02-ulaw.wav

**注意:文件路径必须是绝对路径,不要使用~/ **

或者播放 MP3 文件:

rosrun sound_play play.py /home/zacdeng/Music/a2002011001-e02-128k.mp3

正常情况下它会显示:

Playing “/home/zacdeng/Music/a2002011001-e02-128k.mp3”.

3)测试语音合成:

这是比较吸引人的一个功能,它使用了 text2wave 库将一段文本转成语音再进行播放。调用的例子如下:

rosrun sound_play say.py 'Hello world'

正常情况下它会显示:

Saying: Hello World
Voice: voice_kal_diphone
Volume: 1.0

注意:输入文本必须是英文,暂时不能播放中文

如果你听到一段蹩脚的英文朗读 Hello World 那么这个例子你也运行成功了。由于音频库大小问题,这个合成效果可能不太自然,有兴趣的同学可以根据 参考 研究下 text2wave 库怎么替换下别的声音。

大概整个使用流程就是这么多了,如果有遇到其他问题可以参考上面提到的博客!Good Luck!


ROS语音交互 —— sound_play
http://example.com/2021/04/25/ROS语音交互教程-sound_play/
Author
Zachary Deng
Posted on
April 25, 2021
Licensed under