Advertisement

ROS学习--语音合成&语音识别

阅读量:

说明

前一篇的语义理解主要是跑通ROS Node的一个流程,下面开发的语音Node略有点实际意义,其中构建node的过程,如同语义理解Node,略有不同。

整理的代码放在github上,语音合成https://github.com/roboyun/ros_tts,语音识别https://github.com/roboyun/ros_asr

准备

在开始之前,先做一些准备工作,就是播放音频和录音相关的代码。因为树莓派本身没有录音的接口,所以需要外接一个usb声卡。音频输出暂时直接用树莓派上面的耳机接口。

测试播放mp3

首先用mplayer播放一下mp3,一般是可以听见的。

当然可以直接在python中调用mplayer区播放mp3,

复制代码
 import os

    
 os.system('mplayer out.mp3')

或者

复制代码
 import subprocess

    
 subprocess.call('mplayer out.mp3',shell=True)

或者

复制代码
    subprocess.Popen(['mplayer','out.mp3'])

测试录音

录音可以用arecord

复制代码
    $ sudo apt-get install alsa-utils

这个工具包包含

复制代码

我们只使用其中的arecord

复制代码
    $ arecord -D 'plughw:1,0' -d 10 test.wav

-D表示设备,外接的usb录音设备,如果不是在树莓派上测试,这个会不一样

-d 10 表示录制10秒钟的时间

-t 表示type,可以加参数-t wav也可以不加

最后是文件名。
录完之后可以用aplay或者mplayer播放,有一个问题是当录音距离比较远的时候,声音很小。alsamixer有一个在命令行之下的图形界面,可以对不同的声卡调节音量,我实验了下录音mac的音量,并没有改变。

实验完成以后写两个服务很简单,代码放在上面给出的github地址,这里就不贴了。

TODO

语音识别这个node还是有很多工作需要做的,比如应该将模块改为publisher/subscriber模式,在运行过程中一直保持着语音监听,还有就是语音识别中通常需要的端点检测,流失识别等。

全部评论 (0)

还没有任何评论哟~