【ROS實戰 001】科大訊飛語音SDK的ROS包使用
1 安裝ROS indigo版並配置好環境
Ubuntu版本:Ubuntu14.04 LTS
ROS Indigo的安裝和環境配置參考官網:cn/indigo/Installation/Ubuntu - ROS Wiki
2 科大訊飛語音SDK的ROS包安裝
說明:
ROS軟體包xfei_asr是整合自科大訊飛的linux的DEMO
介紹xfei_asr的安裝和使用
語音識別:介紹如何錄音並轉變成文字輸出,併發布主題
語音合成:介紹如何釋出文字主題轉變成語音播放
要求:
- 需要到科大訊飛網站註冊帳號(只需要APPID),訪問科大訊飛網站
- 下載linux版本ROS軟體包,已經包含需要SDK庫檔案 github庫
- 安裝語音庫:sudo apt-get install libasound2-dev (錄音)
安裝依賴:
$ sudo apt-get update
$ sudo apt-get install libasound2-dev
下載:
$ cd ~
$ mkdir -p catkin_ws/src //工作空間
$ cd ~
$ git clone https://github.com/ncnynl/xf-ros.git
$ cp -R xf-ros/xfei_asr ~/catkin_ws/src/
修改CMakelist.txt:
target_link_libraries( asr_sample ${catkin_LIBRARIES} /home/ubu/catkin_ws/src/xfei_asr/lib/libmsc.so -ldl -pthread )
找到所有的target_link_libraries,修改/home/ubu/catkin_ws為你自己的工作空間/home/xxxx/catkin_ws
修改程式碼:
將自己下載的SDK中的.c和.cpp檔案替換相對應的檔案(推薦使用)或者找到.c 和.cpp檔案中查詢appid = 58249817,替換58249817為你自己申請的APPID.
同時更換自己下載SDK(在科大訊飛官網建立應用後會有相應的SDK下載)裡面的libmsc.so到對應的xfei_asr/lib/libmsc.so (根據網友武哥的測試需要更換才能成功!)
編譯:
$ cd ~/catkin_ws/ $ catkin_make
如果在/catkin_ws/devel/lib/xfei_asr資料夾下生成對應的檔案表明編譯成功.
xfei_asr檔案結構檢視命令
$ cd ~/xf-ros/xfei_asr
$ tree
xfei_asr檔案結構:
.
├── CMakeLists.txt
├── include
│ ├── formats.h
│ ├── linuxrec.h
│ ├── msp_cmn.h
│ ├── msp_errors.h
│ ├── msp_types.h
│ ├── qisr.h
│ ├── qtts.h
│ └── speech_recognizer.h
├── lib
│ └── libmsc.so
├── package.xml
└── src
├── asr_sample.c
├── gm_continuous_digit.abnf
├── iat_publish_speak.cpp
├── iat_record.c
├── iat_sample.c
├── linuxrec.c
├── msc
│ ├── b0c4f74dc1f1bd969732c841500eff0d
│ │ ├── u.data
│ │ └── urec.data
│ └── msc.cfg
├── sch_speak.c
├── sch_text.c
├── source.txt
├── speech_recognizer.c
├── tts_sample.c
├── tts_sample.wav
├── tts_subscribe_speak.cpp
├── userwords.txt
└── wav
├── iflytek01.wav
├── iflytek02.wav
└── weather.pcm
3 科大訊飛語音SDK的ROS包使用
在進行語音實驗之前需要確保Ubuntu系統能夠語音輸出輸出.
在終端輸入命令以下命令進行調整
alsamixer
輸入麥克風聲音
3.1 執行科大訊飛SDK DEMO
執行SDK DEMO, 目前可用:asr_sample、iat_sample、iat_record
$ roscore //新開終端1
$ roscd xfei_asr/src //新開終端2
$ rosrun xfei_asr asr_sample //測試案例1
$ rosrun xfei_asr iat_sample //測試案例2
$ rosrun xfei_asr iat_record //測試案例3
3.2 iat_publish_speak(語音識別:實時地將語音轉化為文字)詳細使用
$ roscore //新開終端1
//新開終端2:(xfwakeup主題是喚醒功能,每發一次就可以錄音一次。)
$ rostopic pub xfwakeup std_msgs/String "ok"
//新開終端3: (訂閱xfwakeup主題,釋出xfspeech主題和xfwords主題)
$ rosrun xfei_asr iat_publish_speak
$ rostopic echo /xfwords //新開終端4:(xfwords主題是錯誤提示文字,可有可無)
語音識別效果:
3.3 tts_subscribe_speak(語音合成:能夠自動將任意文字實時轉換為連續的自然語音)詳細使用
$ roscore //新開終端1
$ rosrun xfei_asr tts_subscribe_speak //新開終端2
$ rostopic pub xfwords std_msgs/String "大家好,我是語音合成,Hello everyone, I'm speech synthesis!" //新開終端3
$ rostopic echo /xfspeech //新開終端4 xfspeech主題是錄音轉成的文字
因為我的電腦沒有安裝mplayer所以報錯,
安裝
$ sudo apt-get install mplayer
但還會有警告,關閉lirc即可
$ sudo vi /etc/mplayer/mplayer.conf
新增 nolirc=yes 即可
語音合成及播放效果
參考文獻:
ROS入門教程-科大訊飛語音SDK的ROS包使用(xf-ros )