讯飞语音
ROS语音识别,需要使用讯飞的appid和SDK
申请讯飞appid
注册
申请 appid:

下载sdk
https://www.xfyun.cn/sdk/dispatcher?appId=03fd515f
坑
回到旧版下载的sdk才有 libmsc.so 文件


libmsc.so
下载压缩包,解压缩
如果是64位Ubuntu,就找到下面文件:
libs\x64\libmsc.so
如果是32位Ubuntu,就找到下面文件:
libs\x86\libmsc.so
后面会用到
Ubuntu操作
安装依赖
sudo apt-get update
sudo apt-get install libasound2-dev
下载工程
安装git
如果没安装 git,就执行下面命令安装:
sudo apt install git
下载工程
cd ~
git clone https://github.com/ncnynl/xf-ros.git
指定目录
因为配置文件中的路径是 catkin_ws,所以创建该目录,并复制
创建目录
cd ~
sudo mkdir -p catkin_ws/src //工作空间
cd ~
复制
cp -R xf-ros/xfei_asr ~/catkin_ws/src/
修改 CMakeLists.txt
找到 CMakeLists.txt 文件的下面内容:
target_link_libraries(
asr_sample
${catkin_LIBRARIES}
/home/ubu/catkin_ws/src/xfei_asr/lib/libmsc.so -ldl -pthread
)
将所有的 /home/ubu/catkin_ws 改为自己的路径 /home/你的路径/catkin_ws
快速修改命令:
cd ~/catkin_ws/src/xfei_asr
sed -i 's/ubu/你的路径/g' CMakeLists.txt
修改 appid
将下载的 .c 和 .cpp 文件中的 appid = 58249817,替换为自己申请的APPID
cd ~/catkin_ws/src/xfei_asr/src
执行下面命令进行替换:
sed -i 's/58249817/你申请的科大讯飞appid/g' asr_sample.c
sed -i 's/58249817/你申请的科大讯飞appid/g' iat_publish_speak.cpp
sed -i 's/58249817/你申请的科大讯飞appid/g' iat_record.c
sed -i 's/58249817/你申请的科大讯飞appid/g' iat_sample.c
sed -i 's/58249817/你申请的科大讯飞appid/g' linuxrec.c
sed -i 's/58249817/你申请的科大讯飞appid/g' sch_speak.c
sed -i 's/58249817/你申请的科大讯飞appid/g' sch_text.c
sed -i 's/58249817/你申请的科大讯飞appid/g' speech_recognizer.c
sed -i 's/58249817/你申请的科大讯飞appid/g' tts_sample.c
sed -i 's/58249817/你申请的科大讯飞appid/g' tts_subscribe_speak.cpp
复制 libmsc.so
将上面的 libmsc.so 复制到 /home/user/catkin_ws/src/xfei_asr/lib
编译
cd ~/catkin_ws/
catkin_make
如果在 /catkin_ws/devel/lib/xfei_asr 文件夹下生成对应的文件表明编译成功

添加到环境变量
否则执行启动 rosrun xfei_asr iat_publish_speak 报错
vim ~/.bashrc
将下面代码添加到末尾:
source /home/user/catkin_ws/devel/setup.bash
注意:/home/user/catkin_ws/ 是你电脑的目录
如下图:

测试vmware Ubuntu录音是否可用
录音命令
arecord -d 10 test.wav
显示如下:
正在录音 WAVE 'test.wav' : Unsigned 8 bit, 频率8000Hz, Mono
播放录音
aplay test.wav
显示如下:
正在播放 WAVE 'test.wav' : Unsigned 8 bit, 频率8000Hz, Mono
测试是否能播放刚才的录音
ROS使用讯飞语音识别
实时地将语音转化为文字
启动 ros
新开终端1
roscore
启动讯飞在线语音识别
新开终端
rosrun xfei_asr iat_publish_speak
启动唤醒
xfwakeup 是唤醒功能,每发一次就可以录音一次
新开终端:
rostopic pub xfwakeup std_msgs/String "ok"
当讯飞在线识别终端出现 Start Listening... 信息时就可以对着麦克风讲话,进行语音识别了
参考:
https://cloud.tencent.com/developer/article/1932876