ros科大訊飛語音識別


轉自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

使用說明:

  1. 進入包的src源目錄(所有的rosrun要在源目錄執行,因為一些相對路徑的目錄在src目錄下
$ roscd xfei_asr/src 
  1. 執行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
  • 效果:

  1. 運行ROS DEMO,目前可用:tts_subscribe_speak、iat_publish_speak
$ rosrun xfei_asr  tts_subscribe_speak
$ rosrun xfei_asr  iat_publish_speak
  1. 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 即可

語音播放效果

 

 

  1. 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"
  • 效果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM