树莓派全语音控制媒体播放器(Fully Speech-Controlled Media Player)
树莓派全语音控制媒体播放器(Fully Speech-Controlled Media Player)
主要特点:
*全程无外设操作,可以在无鼠标键盘显示器等外设的情况下(Headless),完全通过麦克风输入语音命令来控制媒体播放。从导入媒体文件,播放,查询,停止,到关机全程语音控制。
*通过硬件开关控制语音输入。
*同音字处理,提高命令识别率。
*分类媒体播放。音乐,诗词,有声读物,评书,相声,讲坛等各类资源分别播放。
*分类媒体检索。可以一次性检索全部各类媒体,也可以分类检索。
*可选择输出设备,3.5mm耳机插孔和HDMI切换。
*断点续播。系统启动后自动继续上次的播放,每次停止后继续播放也是从上次停止的时间点开始。
*添加收藏。可以把喜欢的媒体添加到收藏,集中播放。
*除基本的上下曲选择,单曲,随机,顺序播放模式外,还可以选择上下专辑和专辑循环模式。新增加点播模式,可按人名或作品名称点播。
*语音命令列表:分为特定字符识别和自然语言识别两部分。详见mingling_liebiao文件。
*命令识别方式为模糊识别,即只要包含关键字即可。例如想播放上一首歌可以说"上一首","上一曲","上一个","播放上一首"等,但多余字符与关键字符的距离不能超过两个字。自然语言被识别后会反问确认,可回答“是|对|没错”确认,其它内容则被认为否认,将终止执行。
硬件环境:
*在Raspberry Pi 3,4测试通过。
*USB麦克风一个。
*按键开关一个。用于硬件控制语音输入,可用两根排线代替。
软件环境:
*系统RaspberryPi OS 10(Buster) with desktop(2020-05-27)。64位系统没有omxplayer,用mplayer代替测试有问题。
*语音录制采用sphinx的speech_recognition模块。也可用arecord加参数设置录制时间,格式,码率的方式。
*语音识别采用vosk。目前只做了对汉语普通话的识别,vosk本身支持多种语言识别。
*数据库采用sqlite3。用于管理媒体资源和系统语音提示。
*系统语音提示TTS(text-to-speech)采用余音ekho(汉语), open-JTalk(日语)和espeak(英语)三种语言,可选择。
*媒体播放采用omxplayer,aplay和mplayer,分别用于不同场景的媒体播放。
安装步骤:
*按键开关的两根线连接到Pi上的GPIO 2(BCM)和任一接地(Ground)。
*默认系统用户pi,系统更新:
sudo update
sudo upgrade
*安装相关软件及依赖:
sudo apt install python-pip python3-pip python-pyaudio python3-pyaudio pulseaudio libpulse-dev libgfortran3 libgfortran3-armhf-cross libportaudio2 libvdpau-dev libmagic-dev mplayer espeak
sudo usermod -aG gpio pi
sudo usermod -aG audio pi
升级pip并安装相关模块:为实现"headless"(无外设),要用systemctl使系统启动后自动进入后台守护进程(daemon),“pip3 install"前必须加"sudo”!如果连接外设手动启动程序,可以不加。如果用pip3安装太慢可以到PyPI下载安装。
sudo -H pip3 install --upgrade pip
sudo pip3 install RPi.GPIO
sudo pip3 install PyAudio
sudo pip3 install pyttsx3
安装sphinx:
sudo pip install SpeechRecognition
安装本软件和vosk:
cd /home/pi/Documents
git clone https://github.com/flyingboy98/Raspberry_Pi_Fully_Speech-Controlled_Media_Player_Python.git
mv Raspberry_Pi_Fully_Speech-Controlled_Media_Player_Python/ yuyinbofang/
mv ./yuyinbofang/gongjv ./
wget -O yy.zip https://github.com/flyingboy98/Ekho_Mandarin_Only/raw/main/yy.zip
unzip yy.zip
sudo rm yy.zip
下载vosk和中文model:
sudo pip3 install vosk
cd yuyinbofang/
wget -O vosk-model-small-cn-0.3.zip http://alphacephei.com/vosk/models/vosk-model-small-cn-0.3.zip
unzip vosk-model-small-cn-0.3.zip
mv vosk-model-small-cn-0.3/ model/
rm vosk-model-small-cn-0.3.zip
mkdir tmp
mkdir /home/pi/Music/mp3 /home/pi/Music/wav
mkdir /home/pi/Music/mp3/shici /home/pi/Music/mp3/yinyue /home/pi/Music/mp3/pingshu /home/pi/Music/mp3/langdu /home/pi/Music/mp3/xiangsheng /home/pi/Music/mp3/jiangtan
chmod 755 echo
chown -R pi:pi /home/pi/Documents
chown -R pi:pi /home/pi/Music
cd ~
yy文件夹是经过简化处理的余音(ekho),只保留了汉语普通话。如果需要其它语言可在余音官网下载完整版(www.eguidedog.net/cn/ekho_cn.php)。
安装open-JTalk:
sudo apt install open-jtalk open-jtalk-mecab-naist-jdic
sudo mkdir /usr/share/hts-voice/
cd /usr/share/hts-voice/
sudo git clone https://github.com/icn-lab/htsvoice-tohoku-f01.git
cd ~
*全部安装完成后/home/pi/Documents下应该包含yuyinbofang,gongjv,yy三个并列的文件夹。yuyinbofang文件夹下应该包括model,tmp两个子文件夹和bofangqi.py,duihua.db,echo,tongyinzi.py,zhukong.py,ziyuanguanli.py,wannianli.py等文件。
使用方法:
*准备媒体文件:
!!!媒体文件名格式:人名 - 文件名.扩展名
文件名中间的空格和横杠都是英文半角字符。文件名中如果有圆括号,也必须是半角字符且要放在最后,也就是说括号后就是".扩展名",不能再有其它任何字符!
请务必按以上格式修改文件名,否则无法导入!
全部修改完文件名后,用gongjv文件夹下的jiancha_mingcheng.py检查有无错误。方法是启动文件后,手动输入要检查的文件夹路径(input)。如果提示有错误,具体查看媒体文件夹下生成的文件xiugai.txt,并再次修改。
*媒体文件拷贝到USB存储设备:这步适用于语音命令"复制"自动拷贝,手动拷贝可省略。
在USB存储设备上建立文件夹Music(注意大写),然后在Music下建立mp3和wav两个子文件夹,再在mp3下建立yinyue,shici, langdu,pingshu,xiangsheng,jiangtan六个子文件夹。把准备好的媒体文件分类拷贝到各个文件夹中。
*从存储卡拷贝媒体文件到Pi:手动拷贝省略。
启动yuyinbofang/zhukong.py,打开语音开关,等待语音提示说完。输入语音命令"复制"。听到"好的"语音提示后关闭开关。如果识别有误,再次输入语音命令。
对于Pi 3A+,因为只有一个USB口,复制媒体,更新,升级这类需要接入U盘的动作,在命令发出后有十五秒的时间拔下麦克风,插入U盘并识别。
对于Pi 4B,如果不想等待十五秒钟,可以删除或注释掉gongjv文件夹下的gengxin.py,shengji.py和tianjia.py三个文件头部的
sleep (15)
语句。
完成后语音提示添加完成,可以取下U盘了。
*检索媒体:使用命令"搜索全部"或其它分类检索命令。等待语音提示完成检索。在Pi 3A+上检索7000个媒体文件大概需要十多分钟。
*至此,已完成所有准备工作,可以正常使用了。
目前问题:
*首次运行建议连接外设,出现问题便于处理。
*vosk经常警告(warning)内存问题,会卡住十几到几十秒的时间。如长时间无反应需要重启。
*打开语音开关后要等待三到五秒加载录音模块。系统启动后只有初次输入语音命令前有语音提示"有事您说话",之后没有这个提示。有没有提示都要等待三到五秒。
*由于发音,周围环境,输入时机和麦克质量的关系,命令识别会有错误发生。
设置开机自启动:
*系统音频设置:
sudo vi /usr/share/alsa/alsa.conf
修改:
defaults.pcm.card 0
defaults.pcm.subdevice -1
为:
defaults.pcm.card 2
defaults.pcm.subdevice 0
建立系统音频设置文件:
sudo vi /etc/alsa/asound.conf
添加下列内容:
pcm.!default {type asymplayback.pcm{type hwcard 1device 0}
}
*建立自启动服务:
sudo systemctl edit --force --full yuyinbofang
添加下列内容:
[Unit]
Description=yuyinbofang
After=multi-user.target[Service]
WorkingDirectory=/home/pi/Documents/yuyinbofang
ExecStart=/usr/bin/python3 zhukong.py[Install]
WantedBy=multi-user.target
Ctrl-x,选"Y",保存退出。
启动服务:调试无误后再启动。
sudo systemctl daemon-reload
sudo systemctl enable yuyinbofang.service
临时停止服务:
sudo systemctl stop yuyinbofang.service
终止服务:
sudo systemctl disable yuyinbofang.service
完整系统映像压缩包(Pi 3/4适用):
*链接: https://pan.baidu.com/s/1AHgMTt2HKm0RcD47uLf-Zg 提取码: 9wbe
*无密码,解压后映像文件大小:7969177600字节。
*映像系统包括本软件和四轮驱动小车(https://blog.csdn.net/flyingboy_98/article/details/109157841)。
*映像中的文件为旧版本,删除后按上述安装方式安装新版本即可。
树莓派全语音控制媒体播放器(Fully Speech-Controlled Media Player)相关推荐
- 树莓派-3-制作音乐播放器+语音控制
参考:使用树莓派打造一个音乐播放器 (1)树莓派4B一个 (2)音箱一个 1 音乐播放器mtool安装 1.1 安装mtool mtool是一个用python写的音乐播放器,在gitee和github ...
- 使用AVPlayer自定义支持全屏的播放器(二)
前言 前段时间封装了一个视频播放器,由于时间匆忙,还有很多问题以及细节还没有来得及修改,最近挤了一点时间,将播放器完善了一下,具体思路请参考使用AVPlayer自定义支持全屏的播放器(一),本 ...
- 可听周杰伦许嵩周深的歌,Windows,macOS,Linux均可用的全平台音乐播放器
title: 可听周杰伦许嵩周深的歌,Windows,macOS,Linux均可用的全平台音乐播放器 Windows10版运行 image-20201214152050007 Mac版运行 image ...
- 使用AVPlayer自定义支持全屏的播放器(一)
前言 最近在项目中,遇到了视频播放的需求,直接使用系统封装的播放器太过于简单,不能很好的满足项目要求,于是花时间研究了一下,使用AVPlayer来自定义播放器. 本视频播放器主要自定义了带缓冲 ...
- H5页面 点击按钮播放视频,默认全屏播放,取消全屏后播放器自动隐藏
/*** @description 播放全屏 * @param {Object} element*/function launchFullScreen(element) {if (element.re ...
- 树莓派python蓝牙_树莓派3B 爬虫蓝牙播放器
一直没有尝试使用一下树莓派3B 的蓝牙功能,今天特别想试试,于是就烧录了最新的raspbian镜像,然后接上5寸GPIO触摸屏和键盘鼠标,开始了调试,网上看了看其他人的教程,发现都很老了,有的还不能用 ...
- jquery video全屏_video播放器全屏兼容方案
播放视频 video全屏 var Features = {}; var target = $('#video')[0]; // Get DOM element from jQuery collecti ...
- Linux系统下运行QT视频播放器示例程序(Media Player Example )
一.环境介绍 操作系统: ubuntu 18.04 64位 二.安装解码器 wbyq@wbyq:~$ sudo apt-get install gstreamer1.0-libav 三.运行示例程序
- QT实现Media Player(媒体播放器)
QT实现Media Player 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 Media Player示例使用Microsoft Media Player Act ...
最新文章
- hdoj_1047_大數加法 java 模擬
- 你是怎样“被平均”的?细数统计数据中的那些坑
- Java案例:按奇偶行拆分文件
- 【java】多线程博客积累
- TortoiseGit客户端的ssh密钥配置
- XBMC源代码分析 7:视频播放器(dvdplayer)-输入流(以libRTMP为例)
- linux junit
- android dump内存,android dump内存办法大全
- 0基础也可直接运行的微信表情包批量转换
- 需要点智商才能看懂的恐怖故事,你能看懂多少个?
- kepware怎么读modbus/tcp数据_DDR3读写数据调试
- 大学及毕业总共9年时间追求过一个女孩却最终没有成功,期间的心酸,痛苦,怨恨以及最后消散写成了这篇2万字的散文诗小说。每一个字都是自己的心血,试问人生有几个9年?更何况是在你最美好的年华。喜欢的交流下。
- Java随笔记录第二章:输入输出流程控制
- 贪心算法基础之活动时间安排(一)安排 51nod 贪心教程
- tiptop 编译运行_CPU 利用率背后的真相,只有 1% 人知道
- 对基层技术管理者的一些建议
- linux彻底卸载nginx,linux彻底删除nginx
- UserBehavior用户行为分析
- 【电力系统分析】同步发电机
- python 爬虫 kugou音乐详细教程(requests模块)