机器语音理论识别模型:

在ros里面有一些语音识别的功能包

pocketsphinx:集成CMU Sphinx和Festival开源项目中的代码,实现语音识别的功能。只能识别数据库中的语音。

audio-common:提供了文本转语音(Text-to-speech TTS)的功能实现完成“机器人说话”的想法。

AIML:人工智能标记语言,Artificial Intelligence Markup Language,是一种创建自然语言软件代理的XML语言。

我们其实就可以使用以上三个功能包去实现在ros系统里面的人机对话。我们首先语音识别,之后调用自然语言处理包,再将文本转化成语音。在这本书《ROS ROBOTICS PROJECTS》里面可以找到更详细的解释。

这里我们用一下科大讯飞的SDK实现功能:

1.去科大讯飞官网https://www.xfyun.cn/,注册一个账户,并下载SDK。

然后创建应用,填个表:

之后下载SDK。

这里需要记住APPID,

之后我们选择语音听写,然后下载它就好了。我们将其解压缩之后放入到后面的文件夹里面:

我们进入到其中某个例子文件目录下面:

把下面这个文件路径改一下:

这个64位的文件内容如下:

编译一下:

source 64bit_make.sh

make

这里可能会报如下错误:

/usr/bin/ld: 当搜索用于 ../../libs/x86/libmsc.so 时跳过不兼容的 -lmsc
/usr/bin/ld: 找不到 -lmsc
collect2: error: ld returned 1 exit status
Makefile:25: recipe for target '../../bin/iat_online_record_sample' failed
make: *** [../../bin/iat_online_record_sample] Error 1

解决:

sudo apt-get install gcc-multilib g++-multilib module-assistant

之后的话还需要将一个文件复制到usr/local/lib文件下面。

sudo cp libs/x86/libmsc.so /usr/local/lib/
sudo ldconfig

否者会报错:

./iat_online_record_sample: error while loading shared libraries: libmsc.so: cannot open shared object file: No such file or directory

成功之后的话,我们可以在bin文件夹下面找到可执行文件:

运行测试:

我这没有麦克风,所以没有显示结果,很伤心。

科大讯飞的SDK带有ID号,每个人每次下载后的ID都不相同,更换SDK之后需要修改代码中的APPID,运行教程包的话,你需要修改一下自己下载SDK中的ID。我们需要更改里面cpp文件里面的APPID号:ctrl+f可以对其进行搜索。

语音听写

这个文件在课程的代码里面有:

我们先来看一下里面的main函数:

int main(int argc, char* argv[])
{// 初始化ROSros::init(argc, argv, "voiceRecognition");ros::NodeHandle n;ros::Rate loop_rate(10);// 声明Publisher和Subscriber// 订阅唤醒语音识别的信号ros::Subscriber wakeUpSub = n.subscribe("voiceWakeup", 1000, WakeUp);   // 订阅唤醒语音识别的信号    ros::Publisher voiceWordsPub = n.advertise<std_msgs::String>("voiceWords", 1000);  ROS_INFO("Sleeping...");int count=0;while(ros::ok()){// 语音识别唤醒if (wakeupFlag){ROS_INFO("Wakeup...");int ret = MSP_SUCCESS;const char* login_params = "appid = 5bee48ad, work_dir = .";const char* session_begin_params ="sub = iat, domain = iat, language = zh_cn, ""accent = mandarin, sample_rate = 16000, ""result_type = plain, result_encoding = utf8";ret = MSPLogin(NULL, NULL, login_params);if(MSP_SUCCESS != ret){MSPLogout();printf("MSPLogin failed , Error code %d.\n",ret);}printf("Demo recognizing the speech from microphone\n");printf("Speak in 10 seconds\n");demo_mic(session_begin_params);printf("10 sec passed\n");wakeupFlag=0;MSPLogout();}// 语音识别完成if(resultFlag){resultFlag=0;std_msgs::String msg;msg.data = g_result;voiceWordsPub.publish(msg);}ros::spinOnce();loop_rate.sleep();count++;}

我们这里有一个订阅唤醒词的环节,类似siri一样,然后还有一个发布者,将接收到的语音信号发布出去。也就是说我们最开始就是在等待语音唤醒,唤醒之后进入回调函数里面:

void WakeUp(const std_msgs::String::ConstPtr& msg)
{printf("waking up\r\n");usleep(700*1000);wakeupFlag=1;
}

可以看到在这里面我们是置位了一个变量,这个变量被置为之后我们就回去进行主函数里面的语音识别代码。完成之后我们把它resultFlag置位,然后把消息封装出去,然后再发布出去:

        if(resultFlag){resultFlag=0;std_msgs::String msg;msg.data = g_result;voiceWordsPub.publish(msg);}ros::spinOnce();loop_rate.sleep();count++;

程序的编译如下:

接下来我们测试一下程序的效果:

roscore

rosrun robot_voice iat_publish

rostopic pub /voiceWakeup std_msgs/String "data: '111'"

第三行是一个唤醒词为111的唤醒,

唤醒之后:

我们同样可以利用科大讯飞的平台做语音合成,这个原视频里面有说。

我的微信公众号名称:深度学习与先进智能决策
微信公众号ID:MultiAgent1024
公众号介绍:主要研究强化学习、计算机视觉、深度学习、机器学习等相关内容,分享学习过程中的学习笔记和心得!期待您的关注,欢迎一起学习交流进步!

ubuntu16.04下ROS操作系统学习笔记(七 )机器语音-语音听写-科大讯飞SDK调用相关推荐

  1. ekf pose使用方法 ros_ubuntu16.04下ROS操作系统学习笔记(二)

    做SLAM的硬件要求(不一定是必须的,看包和库的依赖): (1):差分轮式机器人,可以使用Twist速度指令控制,需要线速度和角速度. (2):需要激光雷达.深度摄像头等测距设备,可以获取环境深度信息 ...

  2. opt文件夹下没有ros_ubuntu16.04下ROS操作系统学习笔记(二)

    做SLAM的硬件要求(不一定是必须的,看包和库的依赖): (1):差分轮式机器人,可以使用Twist速度指令控制,需要线速度和角速度. (2):需要激光雷达.深度摄像头等测距设备,可以获取环境深度信息 ...

  3. Ubuntu16.04下ROS Kinetic的安装(2022)

    文章目录 Ubuntu16.04下ROS Kinetic的安装(2022) 一.Ubuntu16.04配置 二.ROS Kinetic安装过程 1.软件中心配置 2.ROS的下载安装 2.1添加源和密 ...

  4. ubuntu16.04下ROS最新换源方法,解决Hash sum mismatch 问题

    1.更换源 备份原始数据 cd /etc/apt/ sudo cp sources.list sources.list.bak sudo gedit sources.list 科大源: deb htt ...

  5. Ubuntu16.04安装ROS操作系统

    目前Ubuntu16.04只能安装ros的kinetic版本 参考官方文档:http://wiki.ros.org/kinetic/Installation/Ubuntu 第一步: 软件源配置1. 增 ...

  6. 淘宝便宜的那个奥比中光摄像头(astra pro)在ubuntu16.04下Ros(kinectic)中使用说明

    一.使用说明: 1.由于和astro版本不同,因此不能用OpenNI来显示 2.参考官网给的安装教程 https://github.com/orbbec/ros_astra_camera 二.操作步骤 ...

  7. ROS与深度相机入门教程:(1)Ubuntu16.04 在ROS中驱动Intel D435i深度相机

    Intel在Github上开源了支持所有RealSense系列相机的SDK,包括了D400.SR300系列深度相机和T265双目跟踪相机,支持Linux.Windows.Mac OS以及Android ...

  8. 【ROS】学习笔记一 ubuntu16.04下vs code配置ros环境并编写helloworld程序

    [ROS]ubuntu16.04下vs code配置ros环境并编写helloworld程序 一.vs code下载 1.相关配置要求: (1)系统为ubuntu16.04 (2)已安装好kineti ...

  9. ROS学习笔记七:使用rqt_console和roslaunch

    ROS学习笔记七:使用rqt_console和roslaunch 本节主要介绍在调试时使用的rqt_console和rqt_logger_level,以及一次性打开多个节点的工具roslaunch. ...

  10. ROS机器人操作系统学习笔记(三)ROS通信架构

    ROS机器人操作系统学习笔记(三)ROS通信架构 ROS的通信架构是ROS的灵魂,也是整个ROS正常运行的关键所在.ROS通信架构包括各种数据的处理,进程的运行,消息的传递等等.本章主要介绍了通信架构 ...

最新文章

  1. Asp.Net下的DataGrid的多层表头
  2. AI回溯过去解决复杂任务 |《自然》论文
  3. [LeetCode]Convert Sorted Array to Binary Search Tree
  4. 《研磨设计模式》chap20 享元模式 Flyweight (4)总结
  5. LiveVideoStack线上分享第三季(四):计算存储在视频转码中的应用
  6. 国家开放大学2021春1026西方经济学(本)题目
  7. 我对架构的理解-概念篇
  8. 2016年个人简历模板
  9. python计算球体体积_漫谈超球体的体积公式
  10. 2022-2028年中国农业观光园行业发展战略规划及投资方向研究报告
  11. 提问:微信网页授权到第三方调用错误、调用微信公众号扫码登陆错误、微信SCOP权限错误或没有权限
  12. Win 10 部分软件的界面模糊问题
  13. 使用Busybox制作根文件系统
  14. 如何让大中药丸子便于下咽, 2021年3月11日 更新 同样适用于中药粉
  15. Android怎么查看手机中的本地数据库
  16. H5+CSS初级试题
  17. Trim函数的用法(笔记)
  18. 鸿蒙系统为什么能用太极框架,玩机福音:华为 EMUI 升级鸿蒙之后依然可使用太极运行 Xposed...
  19. 第16周实践——点结构体
  20. [推荐]实用的做网站建议

热门文章

  1. 利用UrlRewrite,asp.net动态生成htm页面
  2. Shell脚本 条件
  3. 游戏筑基开发之回调函数(C语言)
  4. Cisco-NetDevOps-CI/CD-Experiment Workflow
  5. Linux PXE详解
  6. 分布式系统「伸缩性」大招之——「弹性架构」详解
  7. 多目标决策---多目标线性规划的解法
  8. 社交产品方法论(八):数据分析的二三事
  9. linux安装与登录
  10. 使用UrlRewriteFilter对url进行更替