树莓派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

下载地址列表:

打包下载:


# 解压:
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.配置叮当

对于语音唤醒叮当需要下载训练好的离线语音库,这里提供的是“叮当”和“小梅”的数据。

下载地址:[文件不包含在打包下载中!]

如果要自己生成,请参考:
修改唤醒词

# 接下来创建一个 .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
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐