ROS联合Webots扩展(二)通过语音控制机器人方案

article/2025/6/8 10:57:54

通过语音控制机器人方案

注意:

  • 再学习本系列教程时,应该已经安装过ROS了并且需要有一些ROS的基本知识
  • 此教程以webots_demo为基础
    ubuntu版本:20.04
    webots版本:2021a
    ros版本:noetic

0.前言

目前语音机器人已经非常普遍,那我们想要搭建自己的低成本语音识别平台该如何实现呢?
在这里插入图片描述

图一就是笔者使用的方案,这个方案成本较低,但是环境搭建复杂。

  1. 语音唤醒:使用pocketsphinx实现
  2. 语音识别:使用腾讯云ASR实现
  3. 语义理解:使用腾讯云NLP实现
  4. 本地语音合成:使用ekho实现
    在这里只介绍如何搭建pocketsphinx环境和ekho环境。

1.安装pocketsphinx工具

具体可以看cmusphinx

1.1安装依赖

$ sudo apt-get install bison
$ sudo apt-get install swig

1.2安装sphinxbase

下载文件sphinxbase-5prealpha.tar.gz

$ tar -zxvf sphinxbase-5prealpha.tar.gz sphinxbase-5prealpha/
$ cd sphinxbase-5prealpha/
$ PYTHON=python3 ./configure
$ sudo make
$ sudo make install 

1.3安装pocketsphinx

下载文件pocketsphinx-5prealpha.tar.gz

$ tar -zxvf pocketsphinx-5prealpha.tar.gz pocketsphinx-5prealpha/
$ cd pocketsphinx-5prealpha/
$ PYTHON=python3 ./configure
$ sudo make
$ sudo make install 

1.4安装pocketsphinx-python

pip install pocketsphinx

笔者遇到的问题:

  • deps/sphinxbase/src/libsphinxad/ad_pulse.c:44:10: fatal error: pulse/pulseaudio.h: 没有那个文件或目录
$ sudo apt-get install libpulse-dev
  • deps/sphinxbase/src/libsphinxad/ad_alsa.c:76:10: fatal error: alsa/asoundlib.h: 没有那个文件或目录
$ sudo apt-get install libasound2-dev 

1.5安装中文模型

下载文件cmusphinx-zh-cn-5.2.tar.gz
zh_cn.cd_cont_5000;zh_cn.dic;zh_cn.lm.bin三个文件放到/home/mckros/.local/lib/python3.8/site-packages/pocketsphinx/model/

1.6安装pyaudio

$ sudo apt-get install portaudio19-dev 
$ pip3 install pyaudio

Ubuntu安装pyaudio找不到python.h的问题
对于Debian | Ubuntu使用包管理器安装PyAudio:

$ sudo apt-get install python-pyaudio python3-pyaudio

2.使用在线工具建立自己的语料库

2.1创建一个语料库

$ touch volcano.txt
$ vim volcano.txt 

输入以下内容:

小度你好
前进
后退

保存退出

2.2利用在线工具LMTool建立语言模型

工具网站:LMTool
选择刚刚创建的语料库,然后提交,顺序如下图所示:
在这里插入图片描述

提交之后需要下载的就.dic.lm两个文件,如下图所示:
在这里插入图片描述

将两个文件放到/home/mckros/.local/lib/python3.8/site-packages/speech_recognition/pocketsphinx-data/zh-CN/文件夹下。
如果没有zh-CN文件夹,自己新建一个,并且将pocketsphinx/model下的zh_cn.cd_cont_5000文件夹复制近来,改名成acoustic-model,将.lm改名为language-model.lm.bin,将.dic改名为pronounciation-dictionary.dict
打开pronounciation-dictionary.dict,给中文添加音标。

小度你好	x iao3 d u4 n i3 h ao3
前进	q ian2 j in4
后退	h ou4 t ui4

2.3编写程序

import speech_recognition as sr
# 使用pocketsphinx实现语音唤醒
def wake_up():r = sr.Recognizer()# obtain audio from the microphonewith sr.Microphone() as source:r.adjust_for_ambient_noise(source)  # listen for 1 second to calibrate the energy threshold for ambient noise levelsprint('say something')# os.system("aplay \"dd.wav\"")audio = r.listen(source)# recognize speech using Sphinxtry:phrase = r.recognize_sphinx(audio,language="zh-CN")print("Sphinx thinks you said " + phrase)except sr.UnknownValueError:print("Sphinx could not understand audio")except sr.RequestError as e:print("Sphinx error; {0}".format(e))
if __name__ == "__main__":wake_up()

运行结果如下所示:
在这里插入图片描述

3.安装发音模块 ekho(余音)

3.1安装依赖

$ sudo apt-get install libespeak-ng-dev
$ sudo apt-get install libsndfile1-dev libpulse-dev libncurses5-dev libmp3lame-dev libespeak-dev

3.2下载工具

工具下载地址:http://www.eguidedog.net/cn/ekho_cn.php
下载完成后:

$ ./configure
$ sudo make
$ sudo make install

3.3测试工具

$ ekho "hello 123"

可以听到扬声器发出了hello 123的声音

3.4python3代码实现

import os
os.system("ekho 好的")

3.5问题

./configure的问题
configure: error: sndfile test failed

$ locate sndfile
$ ln -s /usr/lib/libsndfile.so.1.0.20 /usr/lib/libsndfile.so

结语

本文也是基于笔者的学习和使用经验总结的,主观性较强,如果有哪些不对的地方或者不明白的地方,欢迎评论区留言交流~
只要会使用这些模块就能很轻松的加入到ROS中进行机器人的语音控制。
为了能和读者进一步讨论问题,建立了一个微信群,方便给大家解答问题,也可以一起讨论问题。
加群链接
✌Bye

可以通过github项目学习:https://github.com/JackyMao1999/volcano_robotsim/tree/Noetic-Webots-2021a
整个项目bilibili视频演示(语音在1:10秒左右):毕业设计视频-图书馆管理机器人


http://chatgpt.dhexx.cn/article/Hnd6AvDN.shtml

相关文章

Webots和ROS2使用说明(部分翻译)

参考链接 Reference: 文档:http://wiki.ros.org/webots_ros2源码:https://github.com/cyberbotics/webots_ros2 2021更新webotsros2 笔记系列: https://blog.csdn.net/ZhangRelay/article/details/112670542 目前,已…

Webots介绍

Webots介绍 1 介绍1.1 概述1.2 应用1.3 入门要求1.4 技术支持1.5 仿真步骤世界(webots定义)控制器超级控制器 1.6 平台能力三维建模能力物理引擎外设支持 2 软件使用启动webots用户界面文件菜单编辑菜单查看菜单模拟菜单构建菜单叠加菜单工具菜单帮助菜单…

三维地图Cesium加载天地图

1、首先去天地图官网申请key码&#xff0c;http://lbs.tianditu.gov.cn/server/MapService.html 2、下载Cesium静态资源包文件&#xff0c;如图 3、引入并加载 <div class"background" ><div id"cesiumContainer"></div></div>…

如何使用ArcGIS Pro制作三维地图

概述 随着设备性能提升和程序的升级&#xff0c;三维地图开始逐步登入主流地图&#xff0c;网上有很多使用ArcGIS制作三维地图的教程&#xff0c;这里给大家介绍一下使用ArcGIS Pro制作三维地图的方法&#xff0c;希望能对大家有所帮助。 数据来源 本教程所使用的数据是从水…

03 三维地图添加切片图层

在介绍了创建二维、三维地图之后,我们接下来介绍三维地图如何添加切片图层。地图添加切片图层的最终结果如下图所示,在此过程中默认实现了将业务图层居中显示的效果: 具体操作如下所示: 1 创建HTML基本架构,创建div和引入相关的文件,然后设置div的基本样式,如下: …

三维pcd地图转二维栅格地图

1.概述 在使用导航时&#xff0c;通常会根据二维栅格地图做路径规划&#xff0c;需要将三维点云地图转化成栅格地图。 本文采用滤波及投影的方法&#xff0c; 主要步骤包括 对输入点云进行直通滤波&#xff0c;获取限定高度范围的数据在进行半径滤波&#xff0c;去除部分孤立…

【python数据处理】替代Excel三维地图依据经纬度坐标的绘制热力地图的方式

替代Excel三维地图依据经纬度坐标的绘制热力地图的方式 背景pyecharts绘制 背景 由于某人访问了某地&#xff0c;即便是调整电脑中的区域为别的国家或者地区时候&#xff0c;excel三维地图选择时候依然会弹出很抱歉&#xff0c;三维地图当前不在你的国家/地区使用。这个“当前…

三维地图3D可视化应用案例

1、如何搭建离线地图开发环境 2、下载离线地图数据(金字塔瓦片数据&#xff09; 3、下载离线地图地形数据库&#xff08;实现地表高低起伏&#xff09; 4、添加离线地图数据到本地服务器 &#xff08;含3D&#xff09; 5、离线地图二次开发接口&#xff08;离线地图API&#…

BlenderGIS生成三维地图白模

目录 简介安装配置处理选点建模后记 简介 BlenderBlenderGISOpenTopography 可以实现地图选点并获取对应三维白模 安装 安装 blender&#xff08;版本不要太新&#xff0c;我用的是 3.0&#xff09;&#xff1a;https://www.blender.org/download/ 获取 blender-gis&#xf…

很抱歉,三维地图当前不能在你的国家/地区使用 Excel绘制三维地图问题解决

手动反爬虫&#xff1a;原博地址 https://blog.csdn.net/lys_828/article/details/123585838 知识梳理不易&#xff0c;请尊重劳动成果&#xff0c;文章仅发布在CSDN网站上&#xff0c;在其他网站看到该博文均属于未经作者授权的恶意爬取信息问题 之前在利用Excel进行三维地图…

MATLAB绘制三维地图

1、meshgrid&#xff1a;生成格点矩阵&#xff0c;类似于给定坐标空间 [x,y]meshgrid(1:10); 2、interp插值法 插值法又称“内插法”&#xff0c;是利用函数f (x)在某区间中已知的若干点的函数值&#xff0c;作出适当的特定函数&#xff0c;在区间的其他点上用这特定函数的值作…

说说基于BS架构的三维地图引擎如arcgis以及三维引擎cesium等在数字孪生三维可视化项目中踩过的那些坑

不知从何年何月BS架构的系统在PC端领域占据了大半壁江山&#xff0c;众多的软件公司为了迎合客户&#xff0c;在项目中纷纷采用BS架构&#xff0c;也因此导致培养了一大批相应的程序员技术人才。 然而&#xff0c;在移动端、手机领域&#xff0c;却又出现另一番景象&#…

ESMap三维地图开发流程

易景地图&#xff08;ESMap&#xff09;是一款三维地图在线开发平台&#xff0c;常被用来做智慧城市数据可视化的在线快速开发&#xff0c;广泛应用于室内外定位导航和数字孪生技术场景。下面就简单介绍一下ESMap三维地图的开发流程&#xff1a; 一、场景搭建 进入官网&#…

html加载三维地图,Cesium加载三维地形及WMS地图,并实现动态控制显示

写在前面: 本次工程主要实现的是cesium基础三维地形加载、视角控制、经纬度显示;重点是实现cesium加载wms图层,并对wms图层进行参数更新,实现动态控制,进一步实现时间地图的展示目的。为时间地图可视化提供了三维显示的思路。中间进行参数控制的时候,需要销毁provider,目…

实景三维数据也可以免费下载

之前分享过不少影像&#xff0c;矢量、DEM…数据下载方法。 随着实景三维的火热&#xff0c;一些实景三维数据可以免费下载吗&#xff1f; 有&#xff01;但可下载的真的不多… 今天我们就来看看怎么才能下载到免费的实景三维数据。 全国地理信息资源目录服务系统 https://…

ArcScene:构建三维地图

主要介绍一下使用ArcScene来制作三维地图&#xff0c;下面是主要的步骤 1.打开ArcGIS下面的ArcScene&#xff0c;将研究区域的DEM和矢量边界数据添加进来&#xff1a; 2.右键DEM&#xff0c;点击属性->基本高度&#xff0c;选择“在自定义表面上浮动”&#xff0c;该路径选…

【Echarts】三维地图叠加柱状图

代码如下所示&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta http-equiv"Content-Type" content"text/html; charsetGBK" /><title>echarts 地图</title><script src"https://cdn.sta…

三维地图可视化应用教程

1、如何搭建离线地图开发环境 2、下载离线地图数据(金字塔瓦片数据&#xff09; 3、下载离线地图地形数据库&#xff08;实现地表高低起伏&#xff09; 4、添加离线地图数据到本地服务器 &#xff08;含3D&#xff09; 5、离线地图二次开发接口&#xff08;离线地图API&#…

三维地图看世界

随着当今社会的不断发展&#xff0c;人们的需求以及对效率质量的要求也在不断提高。城市建设也越来越密集&#xff0c;城市规划要求越来越高&#xff0c;城市管理中对人流、车流的控制也越来越精细&#xff0c;地图作为记录地理信息的一种图形语言形式&#xff0c;不仅为人们的…

三维地图下载,3D地图下载,谷歌地球三维地形图查看

更多示例代码&#xff1a;http://www.bigemap.com/offlinemaps/gl.html 3D地球依据高程数据等对地表进行渲染&#xff0c;实现地表的起伏&#xff0c;模拟出真实的三维场景&#xff0c;让你有如身临其境般的感觉。 &#xff08;注&#xff1a;Bigemap 3D地球是一个三维地图浏览…