ROS學習--語音合成&語音識別

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/roboyun/article/details/51726300

說明

前一篇的語義理解主要是跑通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
這個工具包包含
alsactl, aconnect, alsamixer, amidi, amixer, aplay, aplaymidi, arecord, arecordmidi,
aseqnet, iecset, speaker-test
我們只使用其中的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模式,在運行過程中一直保持着語音監聽,還有就是語音識別中通常需要的端點檢測,流失識別等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章