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

2023-10-08 23:20

本文主要是介绍ROS联合Webots扩展(二)通过语音控制机器人方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过语音控制机器人方案

注意:

  • 再学习本系列教程时,应该已经安装过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秒左右):毕业设计视频-图书馆管理机器人

这篇关于ROS联合Webots扩展(二)通过语音控制机器人方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/168678

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.