树莓派3B+ 叮当语音控制
树莓派3B+ 叮当语音控制智能音箱是一个并不新的产品,但在今年却显得尤为火爆,最近发布的天猫精灵,以99元的价格强势步入人们的生活,然而所谓的智能,无非是基于语音识别技术,联控各大平台的产品,从而实现智能化。所以,基于Linux的树莓派,借助各大平台,也能实现这一功能,现在就来看看吧!项目来源 [作者:潘伟洲]:https://github.com/wzpan/din
树莓派3B+ 叮当语音控制
智能音箱是一个并不新的产品,但在今年却显得尤为火爆,最近发布的天猫精灵,以99元的价格强势步入人们的生活,然而所谓的智能,无非是基于语音识别技术,联控各大平台的产品,从而实现智能化。所以,基于Linux的树莓派,借助各大平台,也能实现这一功能,现在就来看看吧!
项目来源 [作者:潘伟洲]:https://github.com/wzpan/dingdang-robot
项目安装视频地址 [密码:dingdang123]:
http://v.youku.com/v_show/id_XMzA5NjY1OTU0MA==.html?spm=a2h3j.8428770.3416059.1由于安装过程繁琐又费时,所以这里提供自动安装脚本。
1.准备安装包
安装所需的包列表:[请自行下载并解压在
/home/pi/
目录下]PocketSphinx 离线STT引擎:
- sphinxbase & pocketsphinx
- CMUCLMTK
- MIT Language Modeling Toolkit
- m2m-aligner
- Phonetisaurus
下载地址列表:
- http://downloads.sourceforge.net/project/cmusphinx/sphinxbase/0.8/sphinxbase-0.8.tar.gz
- http://downloads.sourceforge.net/project/cmusphinx/pocketsphinx/0.8/pocketsphinx-0.8.tar.gz
- http://distfiles.macports.org/openfst/openfst-1.4.1.tar.gz
- https://github.com/mitlm/mitlm/releases/download/v0.4.1/mitlm_0.4.1.tar.gz
- https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/m2m-aligner/m2m-aligner-1.2.tar.gz
- https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/phonetisaurus/is2013-conversion.tgz
打包下载:
# 解压:
tar -zxvf sphinxbase-0.8.tar.gz
tar -zxvf pocketsphinx-0.8.tar.gz
tar -xvf openfst-1.4.1.tar.gz
tar -xvf mitlm_0.4.1.tar.gz
tar -xvf m2m-aligner-1.2.tar.gz
tar -xvf is2013-conversion.tgz
# 打包文件解压:
tar -zxvf dingdangdepend.tar.gz
2.执行自动安装脚本
对于安装超时导致的安装失败,请参考:
树莓派3B+ 软件源更改注意:安装过程需要持续1个多小时,请保持网络畅通!
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# 安装若干工具:
sudo apt-get update
sudo apt-get install -y vim git-core python-dev bison libasound2-dev libportaudio-dev python-pyaudio libatlas-base-dev python-pymad cmake uuid-dev fswebcam libav-tools
# 安装叮当
# 把 dingdang-robot 项目拉取下来:
git clone https://github.com/wzpan/dingdang-robot.git dingdang
cd dingdang
mkdir temp
# 如果需要修改分枝
# 查看所有分支
git branch -r
# 之后安装必须的 pypi 库:
sudo apt-get install -y python-setuptools
sudo easy_install pip
mkdir ~/.pip
echo -e "[global]\nindex-url = http://mirrors.aliyun.com/pypi/simple/\n[install]\ntrusted-host = mirrors.aliyun.com" > ~/.pip/pip.conf
# 更新 pypi
sudo pip install --upgrade setuptools
sudo pip --default-timeout=10000 install -r client/requirements.txt
cd ..
# 安装 Sox,支持 mp3 格式的音频
sudo apt-get install -y sox libsox-fmt-mp3
# 安装 TaskWarrior,用于日程提醒。
sudo apt-get install -y taskwarrior
# 安装 Sphinxbase/Pocketsphinx
# Stretch 已经包含了 PocketSphinx 的源,可以先装预编译的版本:
sudo apt-get install -y pocketsphinx
# 预编译的版本没有包含 Python 的接口,所以还得拉源码构建一次。
# 安装 sphinxbase
cd sphinxbase-0.8/
./configure --enable-fixed
make
sudo make install
cd ..
# 安装 pocketsphinx
cd pocketsphinx-0.8/
./configure
make
sudo make install
cd ..
# 安装 CMUCLMTK
sudo apt-get install subversion autoconf libtool automake gfortran g++ --yes
# 如果是打包下载的,可跳过此部分下载
svn co https://svn.code.sf.net/p/cmusphinx/code/trunk/cmuclmtk/
cd cmuclmtk/
./autogen.sh && make && sudo make install
cd ..
# 编译安装 OpenFST:
cd openfst-1.4.1/
sudo ./configure --enable-compact-fsts --enable-const-fsts --enable-far --enable-lookahead-fsts --enable-pdt
sudo make install
cd ..
# 编译安装 M2M:
cd m2m-aligner-1.2/
sudo make
sudo cp m2m-aligner /usr/local/bin/m2m-aligner
cd ..
# 编译安装 MITLMT:
cd mitlm-0.4.1/
sudo ./configure
sudo make install
cd ..
# 编译安装 Phonetisaurus:
cd is2013-conversion/phonetisaurus/src
sudo make
sudo cp ../../bin/phonetisaurus-g2p /usr/local/bin/phonetisaurus-g2p
cd ../../../
# 第三方插件安装
mkdir ~/.dingdang
cd ~/.dingdang
git clone http://github.com/dingdang-robot/dingdang-contrib contrib
sudo pip --default-timeout=10000 install -r contrib/requirements.txt
3.配置并测试麦克风和音箱设备
# 查看录音设备
arecord -l
# 查看外放设备
aplay -l
# 修改默认设备
sudo vim ~/.asoundrc
pcm.!default {
type asym
# 播放设备
playback.pcm {
type plug
slave.pcm "hw:2,0"
# 0,0 参数含义:card 0 device 0
}
# 录音设备
capture.pcm {
type plug
slave.pcm "hw:1,0"
}
}
ctl.!default {
type hw
card 2
}
# -------END--------
# 录音测试:
arecord -d 3 temp.wav
# 回放录音:
aplay temp.wav
# 设置麦克风采样音量和音箱音量(F3切换为麦克风,F4切换为音箱)
alsamixer
4.配置叮当
对于语音唤醒叮当需要下载训练好的离线语音库,这里提供的是“叮当”和“小梅”的数据。
下载地址:[文件不包含在打包下载中!]
- g014b2b.zip:https://pan.baidu.com/s/1o7MrWIA 下载完后放在 ~/.dingdang/ 目录下执行 unzip 命令解压。注意是带了点的 .dingdang 目录。
- vocabularies.zip:https://pan.baidu.com/s/1pLwizTT 下载完后放在 ~/.dingdang/ 目录下执行 unzip 命令解压。
如果要自己生成,请参考:
修改唤醒词
# 接下来创建一个 .dingdang 目录,该目录用于维护你的个人数据(注意是带了点的 .dingdang 目录):
cd ~
mkdir ~/.dingdang
# 将 叮当配置文件[url:https://github.com/wzpan/dingdang-robot/wiki/configuration#配置文件] 的内容拷贝下来保存到:
vim ~/.dingdang/profile.yml
#----------------Content-------------------------
robot_name: 'DINGDANG' # 必须使用大写
robot_name_cn: '叮当'
first_name: '伟洲'
last_name: '潘'
timezone: HKT
location: '深圳'
# 是否接入微信
wechat: false
# 当微信发送语音时,是直接播放语音还是执行语音命令?
# true:直接播放
# false:执行语音命令(只支持百度STT,其他两种STT识别不准)
wechat_echo: false
# 当有邮件时,是否朗读邮件标题
read_email_title: true
# 当内容过长(> 200个字)时,是否继续朗读
# true:读
# false:改为发送内容
read_long_content: false
# 最长朗读内容(仅当 read_long_content 为 false 时有效)
max_length: 200
# 是否使用邮箱发送长内容而不是微信
prefers_email: false
# 勿扰模式,该时间段内不执行通知检查
do_not_bother:
enable: true # 开启勿扰模式
since: 23 # 开始时间
till: 9 # 结束时间,如果比 since 小表示第二天
# 语音合成服务配置
# 可选值:
# baidu-tts - 百度语音识别
# iflytek-tts - 讯飞语音合成
# ali-tts - 阿里语音合成
# google-tts - 谷歌语音合成
tts_engine: ali-tts
# STT 服务配置
# 可选值:
# sphinx - pocketsphinx离线识别引擎(需训练,参考修改唤醒词教程)
# baidu-stt - 百度在线语音识别
# iflytek-stt - 讯飞语音识别
# ali-stt - 阿里语音识别
# google-stt - 谷歌语音合成
stt_engine: ali-stt
# 离线唤醒 SST 引擎
# 可选值:
# sphinx - pocketspinx离线唤醒
# snowboy-stt - snowboy离线唤醒
stt_passive_engine: sphinx
# pocketsphinx 唤醒SST引擎(默认)
pocketsphinx:
fst_model: '~/.dingdang/g014b2b/g014b2b.fst'
# snowboy 唤醒SST引擎(可选)
# https://snowboy.kitt.ai/dashboard
snowboy:
model: '~/application/dingdang/client/snowboy/dingdangdingdang.pmdl' # 唤醒词模型
sensitivity: "0.5" # 敏感度
# 百度语音服务
# http://yuyin.baidu.com/
baidu_yuyin:
api_key: 'kct13kCPMOFGpW4PNvGWvTOT'
secret_key: 'b849886fb7437daef956259ff4b5ffaa'
per: 0 # 发音人选择 0:女生;1:男生;3:度逍遥;4:度丫丫
# 讯飞语音服务
# api_id 及 api_key 需前往
# http://aiui.xfyun.cn/webApi
# 注册获取(注意创建的是WebAPI应用),仅使用语音合成无需注册
# 然后将主板的ip地址添加进ip白名单(建议使用中转服务器的ip地址)
iflytek_yuyin:
api_id: '5a44e786'
api_key: 'f4734a8a48a8415d8ffa8e5737e0e58d' # 没看到这个说明不是注册的WebAPI应用,请改注册个WebAPI应用
vid: '65360' #语音合成选项: 60120为小桃丸 67100为颖儿 60170为萌小新 更多音色见wiki
url: 'http://api.musiiot.top/stt.php' # 白名单ip中转服务器(可选)
# 阿里云语音
# ak_id及ak_secret需前往
# https://data.aliyun.com/product/nls
# 注册后请使用https://ak-console.aliyun.com/ 页面获取
ali_yuyin:
ak_id: 'LTAIcmQiyyrKhYM3'
ak_secret: '1zvUFDdSWowsg2aTGtRfbXqTKLTSFL'
voice_name: 'xiaoyun' #xiaoyun为女生,xiaogang为男生
# 谷歌语音
# api_key 的获取方式:
# 1. Join the Chromium Dev group:
# https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-dev
# 2. Create a project through the Google Developers console:
# https://console.developers.google.com/project
# 3. Select your project. In the sidebar, navigate to "APIs & Auth." Activate
# the Speech API.
# 4. Under "APIs & Auth," navigate to "Credentials." Create a new key for
# public API access.
google_yuyin:
language: 'zh-CN'
api_key: ''
# 聊天机器人
# 可选值:
# tuling - 图灵机器人
# emotibot - 小影机器人
robot: tuling
# 图灵机器人
# http://www.tuling123.com
tuling:
tuling_key: '07de572672a4492db2fce1240e89e51f'
# 小影机器人
# http://botfactory.emotibot.com/
emotibot:
appid: '31261c9aafe6d21c08a82b9c4afe6caa'
active_mode: true # 是否主动说更多点话
# 邮箱
# 如果使用网易邮箱,还需设置允许第三方客户端收发邮件
email:
enable: true
address: '你的邮箱地址'
password: '你的邮箱密码' # 如果是网易邮箱,须填写应用授权密码而不是登录密码!
smtp_server: 'smtp.163.com'
smtp_port: '25' # 这里填写非SSL协议端口号
imap_server: 'imap.163.com'
imap_port: '143' # 这里填写非SSL协议端口号
# 拍照
# 需接入摄像头才能使用
camera:
enable: false
dest_path: "/home/pi/camera" # 保存目录
quality: 5 # 成像质量(0~100)
vertical_flip: true # 竖直翻转
horizontal_flip: false # 水平翻转
count_down: 3 # 倒计时(秒),仅当开启倒计时时有效
sendToUser: true # 拍完照是否发送到邮箱/微信
sound: true # 是否有拍照音效
usb_camera: false # 是否使用USB摄像头(默认是树莓派5MP摄像头)
#######################
# 第三方插件的配置
#######################
# 在这里放第三方插件的配置
# https://github.com/wzpan/dingdang-contrib
# ----------------END-------------------------
运行叮当
python ~/dingdang/dingdang.py
5.维护升级
# 进入 dingdang 的目录,更新一下 dingdang :
cd ~/dingdang
git pull
# 如果安装了第三方插件 dingdang-contrib,进入 .dingdang/contrib,更新下第三方插件:
cd ~/.dingdang/contrib
git pull
sudo pip install --upgrade -r requirements.txt
# 运行叮当:
python ~/dingdang/dingdang.py
# 结束叮当
# 查看进程
ps auwx | grep dingdang
# 结束 pid:888 进程
kill -9 888
# 如果设置开启了微信,会出现一个二维码,用微信扫一扫登录即可完成微信接入(相当于登录了一个微信客户端)。
中转服务器的ip地址:101.132.139.80
更多推荐
所有评论(0)