【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 - 博客园

 

 
posted @ 2021-12-16 16:36  张达嘛  阅读(962)  评论(0编辑  收藏  举报