说明:代码部分是基于古月居前辈的例程,在此对胡老师表示感谢!!

语音识别与输出功能框图:

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;int ret = MSP_SUCCESS;/* login params, please do keep the appid correct */const char* login_params = "appid = 594a7b46, work_dir = .";int aud_src = 0; /* from mic or file *//** See "iFlytek MSC Reference Manual"*/const char* session_begin_params ="sub = iat, domain = iat, language = zh_cn, ""accent = mandarin, sample_rate = 16000, ""result_type = plain, result_encoding = utf8";/* Login first. the 1st arg is username, the 2nd arg is password* just set them as NULL. the 3rd arg is login paramertes * */ret = MSPLogin(NULL, NULL, login_params);if (MSP_SUCCESS != ret)   {printf("MSPLogin failed , Error code %d.\n",ret);goto exit; // login fail, exit the program}while(ros::ok()){// 语音识别唤醒     if(wakeupFlag){ROS_INFO("Wakeup...");printf("Demo recognizing the speech from microphone\n");printf("Speak in 8 seconds\n");demo_mic(session_begin_params);printf("8 sec passed\n");wakeupFlag=0;}// 语音识别完成if(resultFlag){resultFlag=0;std_msgs::String msg;msg.data = g_result;voiceWordsPub.publish(msg);}ros::spinOnce();loop_rate.sleep();count++;}
exit:MSPLogout(); // Logout...return 0;
}

demo_mic()函数

/* demo recognize the audio from microphone */
static void demo_mic(const char* session_begin_params)
{int errcode;int i = 0;struct speech_rec iat;struct speech_rec_notifier recnotifier = {on_result,on_speech_begin,on_speech_end};errcode = sr_init(&iat, session_begin_params, SR_MIC, &recnotifier);if (errcode) {printf("speech recognizer init failed\n");return;}errcode = sr_start_listening(&iat);if (errcode) {printf("start listen failed %d\n", errcode);}/* demo 8 seconds recording */while(i++ < 8)sleep(1);errcode = sr_stop_listening(&iat);if (errcode) {printf("stop listening failed %d\n", errcode);}sr_uninit(&iat);
}

ROS学习笔记-ROS语音识别与语音输出[2]相关推荐

  1. ROS学习笔记-ROS订阅和发布节点

    一个简单的ROS包,一个发布者,一个订阅者 刚开始学习ROS,参考网上的资料完成了测试节点的编写,记录一下. 个人习惯在home/Develop目录中做开发,于是在Develop目录下面创建了一个RO ...

  2. ROS学习笔记-ROS语音识别与语音输出[1]

    说明:代码部分是基于古月居前辈的例程,在此对胡老师表示感谢!! 语音识别功能框图: 调用过程: roscore rosrun robot_voice iat_publish rostopic pub ...

  3. ROS学习笔记------ROS机器人系统设计-----基础编程 day 7 2019/3/2 帅某(URDF机器人建模,urdf功能包的建立,urdf相关模型建立代码已经上传)

    URDF机器人建模 相关urdf代码链接: https://download.csdn.net/download/weixin_43262513/10990016 1.urdf介绍 URDF(Unif ...

  4. ROS学习笔记(八): ROS通信架构

    ROS学习笔记(八): ROS通信架构 文章目录 01 Node & Master 1.1 Node 1.2 Master 1.3 启动master和node 1.4 rosrun和rosno ...

  5. ROS学习笔记十一:ROS中数据的记录与重放

    ROS学习笔记十一:ROS中数据的记录与重放 本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况.本例子还是以小海龟例程为例. 记录 ...

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

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

  7. ROS学习笔记四:理解ROS节点

    ROS学习笔记四:理解ROS节点 本节主要介绍ROS图形概念,讨论ROS命令行工具roscore.rosnode和rosrun. 要求 要求已经在Linux系统中安装一个学习用的ros软件包例子: s ...

  8. ROS学习笔记(十)——ROS试用练习(一)

    ROS学习笔记(十)--ROS试用练习 在此说明:之前使用的ROS是indigo,前两天电脑"炸"了,所以换了kinetic. 一.ROS文件系统导览 1.1如果你想找到turtl ...

  9. ROS学习笔记之——移动机器人的导航

    之前博客<ROS学习笔记之--激光雷达SLAM建图>已经介绍过如何通过激光雷达SLAM建图了,本博文讲一下ROS机器人的导航相关 目录 导航相关理论介绍 导航的概述 costmap AMC ...

最新文章

  1. 高仿书旗小说 Flutter版,支持iOS、Android
  2. 线性代数:第三章 矩阵的初等变换与线性方程组(2)线性方程组的解 初等方阵
  3. pssh批量执行启动tomcat报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  4. 可以改位置吗_恒大文化旅游城售楼部位置外地人可以买吗优选好房泗洪
  5. java实验报告实验六,第六周java实验报告四
  6. SharePoint 2013 入门教程--系列文章
  7. 【编译原理笔记01】什么是编译,编译系统各结构作用
  8. Win10 Anaconda Prompt 快捷方式恢复
  9. 2022年起重机械指挥判断题及答案
  10. XJOI一级题库所有题解(传送门)
  11. 服务器命令里面怎么删除文件,scp删除服务器文件命令
  12. LUP分解方法,矩阵求逆
  13. thinkadmin按配置上传文件至本地,七牛云或阿里oss
  14. 工作站(集群)使用说明及相关工具
  15. 成长三部曲(一):成长的底层逻辑
  16. loadrunner入门教程(24) --Load Generator
  17. 为了给YiYi节省时间,写了个能自动拼图贴水印的机器人,很多bug,能用就行。...
  18. 企业数据无忧 飞客功不可没
  19. mysql 整理磁盘空间_mysql 数据库磁盘满了,进行碎片化整理的相关问题
  20. 【数字图像处理】实验五 形态学图像处理

热门文章

  1. 解决vc 6在vista下的一些兼容问题
  2. weblogic(CVE-2018-2628漏洞复现)
  3. [论文阅读] (04) 人工智能真的安全吗?浙大团队外滩大会分享AI对抗样本技术
  4. [LeetCode] Number of 1 Bits Reverse Integer - 整数问题系列
  5. 621. Task Scheduler 任务调度器
  6. Django RestFramework BaseSerializer
  7. 1431. Kids With the Greatest Number of Candies
  8. 用几十行代码实现python中英文分词
  9. 2018年第九届蓝桥杯C/C++ C组国赛 —— 第三题:全排列
  10. python中文件读写问题及解决方法