http://www.ncnynl.com/archives/201702/1287.html
ROS與語音交互-編寫科大訊飛語音SDK的ROS包
說明
ROS軟件包xfei_asr是集成自科大訊飛的linux的DEMO
介紹xfei_asr的安裝和使用
介紹如何發(fā)布文字主題轉(zhuǎn)變成語音播放
介紹如何錄音并轉(zhuǎn)變成文字輸出签餐,并發(fā)布主題
xf-ros說明
@author ncnynl <1043931@qq.com>
@time? 2016-11-12
@website? http://www.ncnynl.com
要求:
需要到科大訊飛網(wǎng)站注冊帳號(只需要APPID)错洁,訪問科大訊飛網(wǎng)站
下載linux版本ROS軟件包证杭,已經(jīng)包含需要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到對應(yīng)的xfei_asr/lib/libmsc.so(根據(jù)網(wǎng)友武哥的測試需要更換才能成功!)
編譯:
$ cd ~/catkin_ws/
$ catkin_make
文件結(jié)構(gòu):
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要在源目錄執(zhí)行憾儒,因為一些相對路徑的目錄在src目錄下)
$ roscd xfei_asr/src
執(zhí)行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"
效果:
iat_publish_speak詳細使用:
新開終端1:
$ roscore
新開終端2: (訂閱xfwakeup主題浇衬,發(fā)布xfspeech主題和xfwords主題)
$ rosrun xfei_asr? iat_publish_speak
新開終端3:(xfspeech主題是錄音專成的文字)
$ rostopic echo /xfspeech
新開終端4:(xfwords主題是錯誤提示文字)
$ rostopic echo /xfwords
新開終端5:(xfwakeup主題是喚醒功能,每發(fā)一次就可以錄音一次餐济。)
$ rostopic pub xfwakeup std_msgs/String "ok"
效果:
參考:
http://www.ncnynl.com
http://www.xfyun.cn/
http://blog.csdn.net/zhouge94/article/details/52028698