ROS:语音识别文字(安装科大讯飞语音SDK)

讯飞语音

ROS语音识别,需要使用讯飞的appid和SDK

申请讯飞appid

https://www.xfyun.cn/

注册

申请 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


原文出处:/show_1GWmH4fEmm9.html