轉自http://www.ncnynl.com/archives/201611/1069.html
ROS入門教程-編寫科大訊飛語音SDK的ROS包
說明
- ROS軟件包xfei_asr是集成自科大訊飛的linux的DEMO
- 介紹xfei_asr的安裝和使用
- 介紹如何發布文字主題轉變成語音播放
- 介紹如何錄音並轉變成文字輸出,並發布主題
xf-ros說明
@author ncnynl <1043931@qq.com>
@time 2016-11-12
@website http://www.ncnynl.com
要求:
- 需要到科大訊飛網站注冊帳號(只需要APPID),訪問科大訊飛網站
- 下載linux版本ROS軟件包,已經包含需要SDK庫文件 github庫
- 安裝語音庫:sudo apt-get install libasound2-dev (錄音)
安裝依賴:
$ sudo apt-get update
$ sudo apt-get install libasound2-dev
下載:
$ 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
修改代碼:
- 找到 .c 和.cpp文件中查找appid = 58249817,替換58249817為你自己申請的APPID.
同時更換自己下載sdk里面的libmsc.so到對應的xfei_asr/lib/libmsc.so
(根據網友武哥的測試需要更換才能成功!)
編譯:
$ cd ~/catkin_ws/
$ catkin_make
文件結構:
文件結構:
ubu@ubu:~/xf-ros/xfei_asr$ tree
.
├── CMakeLists.txt
├── include
│ ├── formats.h
│ ├── linuxrec.h
│ ├── msp_cmn.h
│ ├── msp_errors.h
│ ├── msp_types.h
│ ├── qisr.h
│ ├── qtts.h
│ ├── speech_recognizer.h
│ └── xfei_asr
├── lib
│ └── libmsc.so
├── package.xml
├── README.md
└── 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
使用說明:
- 進入包的src源目錄(
所有的rosrun要在源目錄執行,因為一些相對路徑的目錄在src目錄下
)
$ roscd xfei_asr/src
- 執行SDK DEMO, 目前可用:asr_sample、iat_sample、iat_record
- 命令:
$ rosrun xfei_asr asr_sample
- 效果:(讀取src/wav/iflytek01.wav, 並識別出文字)
- 命令:
$ rosrun xfei_asr iat_sample
- 效果:
- 命令:
$ rosrun xfei_asr iat_record
- 效果:
- 運行ROS DEMO,目前可用:tts_subscribe_speak、iat_publish_speak
$ rosrun xfei_asr tts_subscribe_speak
$ rosrun xfei_asr iat_publish_speak
- tts_subscribe_speak詳細使用:
- 新開終端1:
$ roscore
- 新開終端2:
$ rosrun xfei_asr tts_subscribe_speak
- 新開終端3:
$ rostopic pub xfwords std_msgs/String "測試ncnynl.com"
因為我的電腦沒有安裝mplayer所以報錯,
安裝
$ sudo apt-get install mplayer
但還會有警告,關閉lirc即可
$ sudo vi /etc/mplayer/mplayer.conf
添加 nolirc=yes 即可
語音播放效果
- iat_publish_speak詳細使用:
- 新開終端1:
$ roscore
- 新開終端2: (訂閱xfwakeup主題,發布xfspeech主題和xfwords主題)
$ rosrun xfei_asr iat_publish_speak
- 新開終端3:(xfspeech主題是錄音專成的文字)
$ rostopic echo /xfspeech
- 新開終端4:(xfwords主題是錯誤提示文字)
$ rostopic echo /xfwords
- 新開終端5:(xfwakeup主題是喚醒功能,每發一次就可以錄音一次。)
$ rostopic pub xfwakeup std_msgs/String "ok"
- 效果: