《ros理论与实践》学习笔记机器人语音交互(代码片段)

Sakurazzy Sakurazzy     2022-12-11     691

关键词:

《ROS理论与实践》学习笔记(七)机器人语音交互

在学习《ROS理论与实践》课程时,记录了学习过程中的编程练习,课后作业以及发现的问题,后续会对尚未解决的问题继续分析并更新,纯小白,仅供参考。
本次学习笔记关于课程中的第八讲:机器人语音交互 。主要学习了讯飞开放平台、ROS的语音识别、输出和交互。


课程内容

在进行课程之前突然发现不能联网了,在网上找了很多办法,包括修改网络共享,桥接模式、NAT模式、自定义模式之类的,都不行,最后发现重启以下网络连接就好了。

$ sudo service network-manager stop
$ sudo rm /var/lib/NetworkManager/NetworkManager.state
$ sudo service network-manager start 

1.讯飞开放平台使用

登录讯飞开放平台,在控制台创建一个应用robot_voice_ros_zzy,下载SDK

  • 语音识别例程
    首先对samples中的iat_online_record_sample进行编译

    $ source 64bit_make.sh
    

    出现错误提示

    alsa/asoundlib.h: No such file or directory
    

    解决方法:

    $ sudo apt-get install libasound2-dev
    

    在bin目录下运行代码:

    $ ./iat_online_record_sample
    

    出现错误提示:

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

    解决方法:
    把libmsc.so文件复制到usr/local/lib文件夹下

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

    可以通过麦克风或者音频文件输入,运行能够输出对应的文字

  • 文字输出为音频例程
    首先对samples中的tts_online_sample进行编译

    $ source 64bit_make.sh
    

    在bin目录下运行代码:

    $ ./tts_online_sample
    

    程序输出一个名为tts_sample.wav的音频文件


2.ROS语音识别与语音输出

  • 语音识别
    创建一个节点iat_publish,创建subscriber用于接收唤醒信号,将wakeupFlag变量置位,创建publisher用于调用SDK的语音识别功能,识别成功后置位resultFlag,将识别出来的字符串发布。即通过topic通信唤醒一次,通过麦克风输入语音信号,将语音识别结果打印在屏幕上
    代码来自课程代码包,不再贴出
    启动方法:

    $ roscore
    $ rosrun robot_voice iat_publish
    $ rostopic pub /voiceWakeup std_msgs/String "data:'xxx'"
    
  • 语音输出
    创建一个节点,创建subscriber用于订阅voiceWords话题,接收输入的字符串,创建voiceWordCallback用于使用SDK接口将字符串转换成中文语音
    代码来自课程代码包,不再贴出
    启动方法:

    $ roscore
    $ rosrun robot_voice tts_subscribe
    $ rostopic pub /voiceWakeup std_msgs/String "data:'啊喽哈'"
    
  • 语音输入与输出结合
    通过launch文件同时启动两个节点,通过话题唤醒,然后接收麦克风输入信号,语音识别成字符串后,转换为语音。
    代码来自课程代码包,不再贴出
    启动方法:

    $ roslaunch robot_voice repeat_voice.launch
    $ rostopic pub /voiceWakeup std_msgs/String "data:'xxx'"
    

3.语音交互

创建一个节点voice_assistant,创建subscriber订阅voicewords话题,接收输入的字符串,创建voicewordscallback,通过if判断关键词,完成语音回复。
代码来自课程代码包,不再贴出
启动方法:

```
$ roslaunch robot_voice voice_assistant.launch
$ rostopic pub /voiceWakeup std_msgs/String "data:'xxx'"
```

运行效果:


本讲作业

通过语音输入控制Gazebo仿真器中机器人的运动,后续更新。

结语

本讲主要学习了机器人的语音交互 ,主要学习了讯飞开放平台、ROS的语音识别、输出和交互,并在作业中加深理解。

《ros理论与实践》学习笔记机器人自主导航(代码片段)

《ROS理论与实践》学习笔记(九)机器人自主导航课程内容ROS中的导航框架导航框架中的关键功能包move_baseamcl机器人自主导航案例导航仿真程序接口move_base+gmapping在学习《ROS理论与实践》课程时,记录了学习过程... 查看详情

《ros理论与实践》学习笔记机器人slam建图(代码片段)

《ROS理论与实践》学习笔记(八)机器人SLAM建图课程内容常用SLAM功能包应用gmappinghectorcartographerrtabmap本讲作业1.在Gazebo中构建一个用于建图和导航的虚拟环境2.将自己构建的机器人模型放置到虚拟环境中,使用gmapping... 查看详情

ros理论与实践:机器人系统设计

     还有一些连接Kinect、激光雷达      查看详情

机器人技术创新与实践旧版本大纲

具体参考:tianbot_mini机器人上手ROS/SLAM/Navigation究竟有多简单???2017-2018-2019-2020使用此版本(以ROS1为主)。2021-2022-依据具体情况,做了较多调整。课程编号学分2开课学期6学时2周课程类型集中实践课... 查看详情

《分布式机器学习:算法理论与实践》——re

 分布式机器学习:算法、理论与实践——【1】分布式机器学习:算法、理论与实践2)——【2】 《分布式机器学习:算法、理论与实践》——【RE】       查看详情

蓝桥ros机器人之现代c++学习笔记7.2互斥量与临界区(代码片段)

看如下三段代码://mutexexample#include<iostream>//std::cout#include<thread>//std::thread#include<mutex>//std::mutexstd::mutexmtx;//mutexforcriticalsectionvoidprint_block(intn,charc)// 查看详情

机器人工程专业实践镜像2021版-含现代控制理论机器人控制器ros2esp32webots和导航实践(tianbot_mini)

...简要说明(2020-2021-2)_zhangrelay的专栏-CSDN博客<机器人技术创新与实践& 查看详情

机器人工程专业实践镜像2021版-含现代控制理论机器人控制器ros2esp32webots和导航实践(tianbot_mini)

...简要说明(2020-2021-2)_zhangrelay的专栏-CSDN博客<机器人技术创新与实践& 查看详情

《分布式机器学习:算法理论与实践》pdf+刘铁岩+资料学习

《分布式机器学习:算法、理论与实践》旨在全面介绍分布式机器学习的现状,深入分析其中的核心技术问题,并且讨论该领域未来的发展方向。下载:https://pan.baidu.com/s/1XeOGCQK5qWCba8VK0KU21w《分布式机器学习:算法、理论与实践... 查看详情

郑捷《机器学习算法原理与编程实践》学习笔记(第七章预测技术与哲学)7.3岭回归

7.3岭回归7.3.1验证多重共线性7.3.2岭回归理论7.3.3岭际分析7.3.4k值的判断7.3.5辅助函数 (1)导入多维数据集:加载数据集defloadDataSet(filename):numFeat=len(open(filename).readline().split(‘ ‘))-1#getnumberoffieldsdataMat=[]labelMat=[]fr=ope 查看详情

opencv-python学习笔记:目标检测理论体系与实践说明(代码片段)

引言本次是接着python-opencv学习笔记(七):滑动窗口与图像金字塔一起在实验楼所做实验,为啥中间隔了四篇才接着发出来,主因是我发文比较随意(懒),当时这部分并没有总结完,至少我... 查看详情

机器人编程实践-ros2基础与应用-第⑦版

...版如下: 摘要:LearnRightNow,PrepareForFuture课程围绕机器人操作系统(ROS2)的应用展开,包括机器人学的基础理论和常用工具。借助立体多样的示例,课程可以为使用ROS2进行机器人开发设计的学员提供一个... 查看详情

ros理论与实践:ros基础(代码片段)

用以下方式,可以添加到bashrc中、 echo”source~/catkin_ws/devel/setup.bash”>>~/.bashrcsource~/.bashrc   add_executable(talkersrc/talker.cpp)target_link_libraries(talker$catkin_LIBRARIES)#add_dependencies(talker$PROJECT_NAME_generate_messages_cpp)add_executabl... 查看详情

slam+语音机器人diy系列:slam建图与自主避障导航——3.ros-navigation机器人自主避障导航(代码片段)

...   通过前面的基础学习,本章进入最为激动的机器人自主导航的学习。在前面的学习铺垫后,终于迎来了最大乐趣的时刻,就是赋予我们的miiboo机器人能自由行走的生命。本章将围绕机器人SLAM建图、导航避障、巡航... 查看详情

双目立体视觉-zed2ros双目视觉开发理论与实践2(代码片段)

ROS-ZEDNodeTostartaZEDROSnodeyoucanusethefollowingcommandsinashellconsole:ZED:$roslaunchzed_wrapperzed.launchZEDMini:$roslaunchzed_wrapperzedm.launchZED2:$roslaunchzed_wrapperzed2.launchZED2i:$roslaun 查看详情

双目立体视觉-zed2ros双目视觉开发理论与实践2(代码片段)

ROS-ZEDNodeTostartaZEDROSnodeyoucanusethefollowingcommandsinashellconsole:ZED:$roslaunchzed_wrapperzed.launchZEDMini:$roslaunchzed_wrapperzedm.launchZED2:$roslaunchzed_wrapperzed2.launchZED2i:$roslaun 查看详情

《机器学习算法原理与编程实践》学习笔记

(上接第一章)1.2对象、矩阵与矢量化编程1.2.1对象与维度(略)1.2.2初识矩阵(略)1.2.3矢量化编程与GPU运算(略)1.2.4理解数学公式与NumPy矩阵运算1.矩阵的初始化#coding:utf-8importnumpyasnp#导入NumPy包#创建3*5的全0矩阵和全1的矩阵my... 查看详情

因果推断笔记——相关理论:rubinpotentialpearl倾向性得分与机器学习异同(代码片段)

文章目录1一些因果推断涉及概念1.0因果推断的几个境界1.1内生性问题1.1.1内生性解释1.1.2内生性问题有四种常见形式1.1.3内生性的解决方案1.1.3.1自然实验法——随机实验1.1.3.2双重差分法Difference-in-Difference(DID)1.1.3.3工具... 查看详情