1. 程式人生 > 其它 >【ROS實戰 001】科大訊飛語音SDK的ROS包使用

【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 即可

語音合成及播放效果

參考文獻:

教你如何在樹莓派上搭建語音識別服務 - CSDN部落格

ros科大訊飛語音識別 - CAM& - 部落格園

ROS入門教程-科大訊飛語音SDK的ROS包使用(xf-ros )

ros入門之用catkin和rosmake建立和編譯功能包 - CSDN部落格

ROS知識(4)----初級教程之常見問題彙總 - horsetail - 部落格園