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

打包下载:

  • http://download.csdn.net/download/kxwinxp/10176965

# 解压:
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 ~/.asoundrcpcm.!default {type asym# 播放设备playback.pcm {type plugslave.pcm "hw:2,0"# 0,0 参数含义:card 0 device 0}# 录音设备capture.pcm {type plugslave.pcm "hw:1,0"}
}ctl.!default {type hwcard 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为萌小新 更多音色见wikiurl: '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: trueaddress: '你的邮箱地址'password: '你的邮箱密码'  # 如果是网易邮箱,须填写应用授权密码而不是登录密码!smtp_server: 'smtp.163.com'smtp_port: '25'  # 这里填写非SSL协议端口号imap_server: 'imap.163.com'imap_port: '143'  # 这里填写非SSL协议端口号# 拍照
# 需接入摄像头才能使用
camera:enable: falsedest_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

树莓派3B+ 叮当语音控制相关推荐

  1. python语音控制智能家电_Python 树莓派智能音箱语音控制电脑开关机-Python 实用宝典...

    完成下面这个有趣的实验,你所需要的东西有: 1.路由器(能够形成局域网,且电脑已用网线连接) 2.一个智能音箱(本教程使用的是亚马逊 Echo Dot 2) 3.主板支持wake on lan (大部 ...

  2. 树莓派语音控制开关灯

    摘要 最近在做智能家居项目,从一开始的无从下手,到现在也算是小有所成了,树莓派语音控制开关灯这个是智能家居项目一个大的组成部分,写此博客,也是为了很好的记录下此过程. 物料: 树莓派3B 语音识别模块 ...

  3. 树莓派-语音聊天机器人+语音控制引脚电平高低

    最近和几位本学院的研究生师兄师姐参加研究生电子设计大赛,自己也来折腾下之前没有搞完的语音控制小车.恰巧自己负责的是语音控制这部分,折腾了几天也差不多搞定啦-把自己的折腾套路总结一下,给一起折腾的小伙伴 ...

  4. matlab控制树莓派3b,树莓派3B+ 手机h5网页控制GPIO

    ezgif-4-5d181e9b42.gif 本文介绍如何在H5页面控制树莓派GPIO 仅实现以BCM编码方式控制GPIO,其他方式未做. 演示地址:http://gpio.exmll.cn/ 点击B ...

  5. 单片机串口控制树莓派3B播放HDMI视频,omxplayer,

    使用树莓派3B通过HDMI播放视频.并且使用串口去控制播放哪个视频. 1. 问题解耦 单片机串口控制树莓派3B播放视频? = 树莓派播放视频 + 单片机串口传参控制树莓派 树莓派播放视频:树莓派播放视 ...

  6. 玩转树莓派 —智能家居(语音控制电器开关 及语音模块的二次开发)

    本文内容为玩转树莓派 -智能家居(语音控制电器开关 及语音模块的二次开发) 1.语音模块 本人使用的是ld3320二代语音识别开发板 通过和电脑连接的是ttl转接口 连接的时候 大家注意l连接方式 2 ...

  7. 树莓派3b+控制舵机

    树莓派3b+控制舵机 1.RPi.GPIO控制: 2.gpiozero控制: 1.RPi.GPIO控制: 控制信号:GPIO18 import RPi.GPIO as GPIO import time ...

  8. Siri语音控制树莓派开关灯 --智能家居

    工具: ipad或iphone * 1 树莓派 * 1 led灯 * 1 Siri语音控制树莓派开关灯大致的原理就是通过语音指令去执行树莓派中的python脚本.这里首先要注意,树莓派要和ipad或i ...

  9. 树莓派-3-制作音乐播放器+语音控制

    参考:使用树莓派打造一个音乐播放器 (1)树莓派4B一个 (2)音箱一个 1 音乐播放器mtool安装 1.1 安装mtool mtool是一个用python写的音乐播放器,在gitee和github ...

最新文章

  1. python盘点订单_django解决订单并发问题【推荐】
  2. 互联网惨遭Struts高危漏洞摧残
  3. 未来IT的三驾马车:AI、物联网和混合云
  4. httpd网页身份认证
  5. 没有bug队——加贝——Python 练习实例 1,2
  6. SpringCloud的EurekaClient : 客户端应用访问注册的微服务(无断路器场景)
  7. 力扣-83 删除排序链表中的重复元素
  8. java生成随机验证图片的实现
  9. javafx 与java,java桌面应用程序和javafx有什么区别?
  10. metasploit下载教程linux,Metasploit 3.6安装与配置之Linux篇
  11. 游戏研发人才学校培养、企业需求与个人快速成长,华科校友分享了这些实用观点
  12. php 队列管理器,Horizon 队列管理工具
  13. python3.6 exe_详解Python3.6的py文件打包生成exe
  14. blastp 短肽比对求助
  15. 基础算法:斐波那契函数学习
  16. 10道虐心的Java面试题,被面试官虐哭了,同事一题都没答对
  17. JWT的数据格式详解
  18. axios下载文件乱码问题 无法解压 文件损坏
  19. ios html加载css样式,iOS加载HTML, CSS代码
  20. 由《成为乔布斯》联想而来

热门文章

  1. 霍夫变换阀值选取问题
  2. 关于统计学的相关函数
  3. java笔记——多线程笔记
  4. 关于嵌入式工程师薪资待遇
  5. spss 构建决策树 树形图 正在处理不显示问题
  6. mac下如何连续看图
  7. 巨简单 在eclips上面新建一个网页动态项目
  8. 水果的用途大全,喜欢水果的亲们一定要收藏哦!
  9. 3D分子构型该怎么优化
  10. 【docker】docker建立最简单最小的helloworld镜像