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 )
ros入门之用catkin和rosmake创建和编译功能包 - CSDN博客
ROS知识(4)----初级教程之常见问题汇总 - horsetail - 博客园