从零搭建一个属于自己的智慧语音“魔镜”(MagicMirro+wukong-robot)语音部分

article/2025/1/13 13:33:20

这里我采用的是wukong-robot的开源项目,这个项目可以说是目前语音部分最好的解决方案,给大家分析下整个语音部分的构成,大致分为下面几个模块。
在这里插入图片描述
这里的语音识别(ASR)和语音合成(TTS)可以使用百度大脑、阿里、腾讯云、迅飞云的,他们都有开放的api接口,但是讯飞云的语音合成ip白名单限制,你可以固定自己的外网ip来使用,注意是外网ip。或者在控制台提交工单,可以为私人取消ip白名单限制。
一、环境
麦克风:这里建议使用usb免驱麦克风,个人建议psp3 eye 这个比较好,首先是usb免驱,由于属于淘汰的产品,所以价格相对便宜。
音箱:3.5mm接口音箱,这里不建议使用蓝牙音箱。
我的设备: respeaker+3.5mm接口小音响

二、手动安装

1.克隆本仓库:

$ git clone https://github.com/wzpan/wukong-robot.git

2.安装sox,ffmpeg和PyAudio:

$ sudo apt-get install portaudio19-dev python-pyaudio python3-pyaudio sox pulseaudio libsox-fmt-all ffmpeg
$ pip3 install pyaudio

3.安装依赖的库:

cd wukong-robot
pip3 install -r requirements.txt

这里由于安装的依赖较多,我上篇博客有提到过,一定要注意网络稳定,我当时因为网络不稳定,都快把我搞疯了。
如果遇到警告可以忽略,但是如果有错误的话,一定要解决,因为有可能是你某个库没有安装成功。

4.编译_snowboydetect.so

手动编译snowboy,得到_snowboydetect.so,以支持更多的平台。

①、安装swig

挨个执行一下命令行
首先确保你的系统已经安装swig。

wget http://hahack-1253537070.file.myqcloud.com/misc/swig-3.0.10.tar.gz
tar xvf swig-3.0.10.tar.gz
cd swig-3.0.10
sudo apt-get -y update
sudo apt-get install -y libpcre3 libpcre3-dev
./configure --prefix=/usr --without-clisp --without-maximum-compile-warnings
make
sudo make install
sudo install -v -m755 -d /usr/share/doc/swig-3.0.10
sudo cp -v -R Doc/* /usr/share/doc/swig-3.0.10
sudo apt-get install -y libatlas-base-dev

②、打造snowboy

wget http://hahack-1253537070.file.myqcloud.com/misc/snowboy.tar.bz2
tar -xvjf snowboy.tar.bz2
cd snowboy/swig/Python3
make
cp _snowboydetect.so ~/wukong-robot/snowboy/>

5.安装第三方技能插件库wukong-contrib

mkdir $HOME/.wukong
cd $HOME/.wukong
git clone http://github.com/wzpan/wukong-contrib.git contrib
pip3 install -r contrib/requirements.txt

6.更新唤醒词

默认自带的唤醒词是在Macbook上录制的,用的是作者的声音模型。但由于不同的人发声不同,所以不保证对于其他人都能很好的适用。

而树莓派上或者其他板子上接的麦克风可能和PC上的麦克风的声音畸变差异非常大,所以现有的模型更加不能直接在树莓派上工作,否则效果会非常糟糕。

如果您是第一次使用,需要先创建一个配置文件方便配置重启词。这个工作可以提交wukong-robot帮你完成。在wukong-robot的根目录下执行:

python3 wukong.py

第一次启动将提示你是否要到用户目录下创建一个配置文件,输入侧y即可。配置文件将会保存在~/.wukong/config.yml。
然后在wukong-robot文件夹里面,找到里面还wukong.pmdl的模型。将自己录制好的模型替换掉。这里建议把训练好的直接改名为wukong.pmdl然后直接覆盖掉原来的就ok。
注意:唤醒词在树莓派上强烈建议自己训练.snowboy建议官方在树莓派上先用rec t.wav这样的命令录制唤醒词,然后在训练的时候通过上传按钮上传到服务器中进行训练。
这里我只给大家提供一个简单的可以使用的教程,其他的插件在github上也有介绍,同时也欢迎大家来讨论。
注意:大家clone下来的配置文件,是别人的apikey之类的配置,强烈建议自己去官网申请自己的api的接口,因为免费版的一般都有次数限制,如果每天使用的人数过多就无法使用。

7、报错处理

根据我的安装经验,一般会报一个如下错误

Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 934
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 934
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 934
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Cannot connect to server socket err = No such file or directory

这个不影响功能,只是的PulseAudio的告警,可以忽略。

悟空+魔镜完整版镜像
提取码:8ro9


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

相关文章

树莓派——智能推送

树莓派——智能推送 本教程为python实训作业的笔记,包括了从如何烧系统到最后作品成型我所踩过的坑,走过的弯路(说多都是泪啊_) 开头篇 首先,老爷保号,bug远离我。 随着科技的发展,广告行业的…

树莓派安装开源项目——wukong_robot和魔镜结合 个人经验总结

首先安装树莓派镜像 系统:windows10 工具:SD卡、读卡器、树莓派3b、SD卡格式化工具、win32DiskImager、Raspbian系统镜像、Xshell(ssh工具) 镜像下载可选用官网 https://www.raspberrypi.org/downloads/ 后续镜像烧录与初始化修改 ,可参考多…

从零搭建一个属于自己的智慧语音“魔镜”(MagicMirro+wukong-robot)魔镜部分

语音部分结尾有已经烧录好的完整版镜像,动手能力较差的小伙伴,可以前去自取。 一、系统环境 硬件:原子镜、相框、显示器、至少8g的内存卡、树莓派3b 软件:2019-07-10-raspbian-buster的镜像 镜像链接:https://www.ra…

树莓派使用入门

作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 官方文档 官方Github Github raspberrypi/documentation 树莓派(Raspberry pi) 使用Pi Imager安装烧录操作系…

基于树莓派的智能魔镜,支持人脸识别、情感监测、热词唤醒、语音交互,以及与手机APP交互、温湿度/新闻热点/日期显示等

目录 功能清单 界面演示 系统框图 设计方案 整体结构 网站设计 app设计 魔镜界面设计 温湿度传感器 光电传感器 相关教程 第三方库的安装 安装库 换源 安装mqtt 安装Qt5 git clone提速 安装Adafruit_DHT opencv安装 安装字体 安装portaudio 安装snowboy 安装…

将Linux可执行文件变成可执行命令

查看PATH环境变量 echo $PATH 或 env | grep PATH 添加路径到PATH export PATH/usr/test:$PATH 临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢#复原有的path配置,通过修改.bashrc文件可以永久保存。 vim ~/.bashrc export PA…

linux执行软件,软件可执行文件 linux 可执行文件

如何制作exe程序可执行文件 Java制作成exe的安装文件真是太复杂了,有几种打包软件,比如InstallAnyWere等,可以打包成你想要的安装文件,但那个软件是英文版的,功能也挺大的,我也没找到相关的资料&#xff0c…

linux 如何运行一个可执行文件

本文只为整理思路,供自己日后参考。现在就从从一个执行文件a.out的运行开始,自上而下地分析linux是如何运行一个执行文件的。 1、首先,需要了解一下a.out这个目标文件。a.out在linux下是ELF(Executable Linkable Format&#xff…

浅析linux可执行文件

程序是以可执行文件的形式存放在磁盘上的,可执行文件既包括目标代码也包括数据。我们一般所使用的库函数可以被静态的拷贝到可执行文件中,也可以运行时动态链接。 可执行文件是一个普通文件,它描述了如何初始化一个新的执行上下文,也就是如何开始一个新的计算。当进程开始执…

python打包为linux可执行文件

1、将python文件打包后(dist及log文件不需要打包)上传至linux服务器,同一目录下 注:不要打包成zip格式,zip从windos上传至linux解压后会存在编码格式不一致的问题 2、安装pyinstaller打包库 pip installer pyinsta…

Linux 可执行文件结构与进程结构

Linux可执行文件结构 在 Linux 下,程序是一个普通的可执行文件,以下列出一个二进制可执行文件的基本情况: 可以看出,此可执行文件在存储时(没有调入到内存前)分为代码区(text)、数据…

Linux可执行文件与进程的虚拟地址空间

作者简介: 本文由西邮陈莉君教授研一学生贺东升编辑,梁金荣、张孝家校对 建议结合之前的《linux的内存寻址方式》看。 Linux可执行文件与进程的虚拟地址空间 一个可执行文件被执行的同时也伴随着一个新的进程的创建。Linux会为这个进程创建一个新的虚拟地…

linux 可执行文件启动流程

linux ELF文件启动流程 一、背景 ​ 最近看了《linkers and loader》和以前学习《程序员的自我修养》,但是看了理解不是特别透,所以就想通过一个实际的案例来把了解到知识串起来,因此就想到把linux 识别和启动elf可执行文件流程梳理下&…

Linux可执行文件制作

Linux可执行文件制作 背景 测试过程中,需要针对不同的Linux系统、核心服务版本进行验证,各种环境依赖的python版本以及已安装的库存在较大差异,考虑到实际测试需求以及出差现场使用的要求,需要将测试脚本打包为可执行文件&#xf…

如何将Python程序打包成linux可执行文件

如何将Python程序打包成linux可执行文件 方法1.安装环境2.打包程序3.执行文件 方法 前段时间尝试使用Python的tkinter制作了一个简单的丑丑的图形化界面,现在想把它打包成Linux可执行文件,具体步骤如下: 1.安装环境 使用的工具是pyinstall…

linux 运行可执行文件

本文只为整理思路,供自己日后参考。现在就从从一个执行文件a.out的运行开始,自上而下地分析linux是如何运行一个执行文件的。 1、首先,需要了解一下a.out这个目标文件。a.out在linux下是ELF(Executable Linkable Format)文件格式,该目标文件由一个文件头、代码段、数据段…

从零编写linux0.11 - 第十一章 可执行文件

从零编写linux0.11 - 第十一章 可执行文件 编程环境:Ubuntu 20.04、gcc-9.4.0 代码仓库:https://gitee.com/AprilSloan/linux0.11-project linux0.11源码下载(不能直接编译,需进行修改) 本章目标 本章会加载并运行…

Linux可执行文件

文章目录 1. 什么是可执行文件2. 可执行文件的区别./ 表示什么?为什么是/usr/bin?总结 1. 什么是可执行文件 可执行文件指的是这个文件可以被运行.这个文件可以是一个代码文件,也可以是一个二进制文件 Linux文件系统中只有文件和目录(一切皆文件). 在Linux中,运行一个文件的…

技术人员如何创业(1)---产品及想法

不得不说这是个浮躁的社会,人人在这个社会都想暴富或者成名。在这些引诱的驱使下很多人都脱离了原来的稳定工作创业。前几天看了《中国合伙人》,故事讲到了几个大学生从校园到工作、再到创办了一个伟大的企业,这个故事更加激励了创业大军的壮…

蓝河科技10个月创立3.05亿美元的农业机器人公司

从创业构想到模式验证,仅10个月如何做到? 蓝河科技(Blue River Technology)是一家成立于2011年的农业机器人公司,总部位于硅谷,主营业务为设计、生产和销售农业机器人,农业机器人租赁业务和相关…