Skip to content
This repository has been archived by the owner on Apr 13, 2018. It is now read-only.

configuration

Joseph Pan edited this page Aug 19, 2017 · 77 revisions

配置

Table of Contents

配置文件

配置文件位于 /home/pi/.dingdang/profile.yml 下(注意是加了点的 .dingdang )。每次修改,需重启叮当生效。

注意注意注意注意:如果使用网易邮箱,注意阅读 网易邮箱说明 。另外不建议使用 QQ 邮箱。

robot_name: 'DINGDANG'  # 必须使用大写
robot_name_cn: '叮当'
first_name: '伟洲'
last_name: ''
timezone: HKT
location: '深圳'

# 是否接入微信
wechat: true

# 当有邮件时,是否朗读邮件标题
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 小表示第二天

# TTS 服务配置
tts_engine: baidu-tts

# STT 服务配置
stt_engine: baidu-stt

# 百度语音服务
# http://yuyin.baidu.com/
baidu_yuyin:
    api_key: '填写你的百度应用的API Key'
    secret_key: '填写你的百度应用的Secret Key'
    per: 0  # 发音人选择 0:女生;1:男生;3:度逍遥;4:度丫丫

# 唤醒SST引擎
stt_passive_engine: sphinx # 如果要使用 snowboy,改为 snowboy-stt

# pocketsphinx 唤醒SST引擎(默认)
pocketsphinx:
    fst_model: '/home/pi/g014b2b/g014b2b.fst'                              
    hmm_dir: '/usr/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k' #optional

# snowboy 唤醒SST引擎(可选)
# https://snowboy.kitt.ai/dashboard
snowboy:
    model: '/home/pi/dingdang/client/snowboy/dingdangdingdang.pmdl'  # 唤醒词模型
    sensitivity: "0.5"  # 敏感度

# 聊天机器人
robot: tuling  # 目前支持 tuling 和 emotibot

# http://www.tuling123.com
tuling:  # 图灵机器人
    tuling_key: '填写你的图灵机器人API Key'

# http://botfactory.emotibot.com/
emotibot:  # emotibot
    appid: '填写你的 emotibot appid'
    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             # 是否有拍照音效


#######################
# 第三方插件的配置
#######################

# 在这里放第三方插件的配置
# https://github.com/wzpan/dingdang-contrib

配置USB麦克风

坚持住!配置麦克风和音响是新用户使用叮当过程中最容易卡住的环节。只要完成这一步,后面就没什么难题啦。

如果您使用的是 ReSpeaker 2 Mic HAT,则请参见 ReSpeaker 2-Mics Pi HAT 配置教程,无需阅读本节设置。

建议通过 .asoundrc 文件来配置麦克风和音响。

首先确保已接好麦克风和音响。

获得声卡编号和设备编号

之后查看当前已接入的所有录音设备:

arecord -l

得到的结果类似这样:

pi@raspberrypi:~$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: Set [C-Media USB Headphone Set], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 2: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

上面的结果说明当前接入了两个录音设备,选择你要使用的录音设备,并记下声卡编号(或名字)和设备编号。例如,我希望使用 USB PnP Sound Device 这个设备,则声卡编号为 2 (声卡名为 Device),设备编号为 0 。

类似的方法获取音响的声卡编号和设备编号:

aplay -l

结果类似这样:

pi@raspberrypi:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Set [C-Media USB Headphone Set], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

上面的结果说明当前接入了三个播放设备,其中 card 0 是树莓派自带的声卡,如果您是使用 AUX 3.5 口外接的音响/或耳机,那么应该使用 card 0;card 1 和 card 2 则是其他的设备。记下您要使用的声卡编号和设备编号。

配置 .asoundrc

首先创建 /home/pi/.asoundrc :

touch /home/pi/.asoundrc

之后添加您选择的声卡编号和设备。这里举两种常见的配置。

  • 第一种:您使用的是一个自带音响和录音的组合设备(例如会议麦克风喇叭,或者一块连接了麦克风和音响的独立USB声卡),那么只需设置 pcm 为该组合设备的编号即可。示例:
pcm.!default {
        type plug slave {
                pcm "hw:1,0"
        }
}

ctl.!default {
        type hw
        card 1
}

上面的 hw:1,0 表示使用 card 1,设备 0。即 C-Media USB Headphone Set 。如果配成 hw:Set,0 ,效果相同(个人更推荐使用声卡名字)。

  • 第二种:您使用的是一个单独的 USB 麦克风,并直接通过树莓派的 AUX 3.5 口外接一个音响。那么可以参考如下配置:
pcm.!default {
        type asym
            playback.pcm {
                type plug
                slave.pcm "hw:0,0"
            }
            capture.pcm {
                type plug
                slave.pcm "hw:2,0"
            }        
}

ctl.!default {
        type hw
        card 2
}

由于播放设备(playback)和录音设备(capture)是独立的,所以需要各自配置。

完成后可以测试下命令行录音和播放,看看是否能正常工作。

录音:

arecord -d 3 temp.wav

回放录音:

aplay temp.wav

如果还有问题,可以参见 Unable to set default input and output audio device on Raspberry jessie

修改唤醒词

叮当默认的唤醒词是“叮当”(DINGDANG)(不过从2017-8-12镜像版本开始,唤醒词改为了“嘿叮当”),如果需要换成其他唤醒词,根据你选用的 STT 引擎,有不同的方法。

如果使用的是 PocketSphinx

  • 在 profile.yml 配置文件中修改 robot_namerobot_name_cn 配置项;
  • 编写一个 keyword.txt 文件,包含至少两个名字的全拼:
DINGDANG
ROBOT

其中 ROBOT 替换为你需要的机器人名字的全拼。

  • lmtool 里上传你刚刚创建的 keyword.txt 并编译成模型。
  • 把得到的 .dic 文件和 .lm 文件分别重命名为 dictionarylanguagemodel,替换 /home/pi/.dingdang/vocabularies/pocketsphinx-vocabulary/keyword 下的同名文件。
  • 重新运行 dingdang ,看看新的唤醒词灵敏度如何。如果不理想,换成别的唤醒词。

如果使用的是 snowboy

  • https://snowboy.kitt.ai/ ,训练你自己的模型;
  • 下载模型并上传到树莓派中,存放的路径可以随意,比如 /home/.dingdang/snowboy/my-model.pmdl ;
  • 修改 profile.yml 中 snowboymodel 的路径为你训练好的模型的路径。

优化百度语音识别准确度

可以将常用的指令写成一个 command.txt 文件,然后登录您的百度语音应用管理页面,在 【自定义设置】 的 【语音识别词库设置】 项目中,点击 【进行设置】 按钮,上传该指令文件即可。文件内容示例:

音乐
下一首歌
下首歌
切歌
上一首歌
上首歌
停止
停止播放
暂停
暂停播放
重新播放
随机播放
单曲循环
大声
小声
大点声
小点声
大声点
小声点
歌单
榜单
几点
时间
邮件
邮箱
绕口令
笑话
搜索
别听我的
听我的

有用户反映换成自己的百度语音识别 API Key 和 API Secret 后,即使上传了 command.txt ,识别效果好像依然不如镜像自带的 API Key 和 API Secret 的效果。我不是百度语音的开发者,但大致猜测这个 command.txt 主要是取到提高被识别的权重的作用,当你坚持使用上一段时间,效果应该会逐步提升。

网易邮箱说明

如果使用网易邮箱服务,需要访问如下页面,允许使用第三方客户端收发邮件:

http://config.mail.163.com/settings/imap/index.jsp?uid=您的邮箱地址

注意把链接中 您的邮箱地址 改为您真实的网易邮箱地址(带邮箱后缀)。

设置开机启动

如果希望开机启动叮当,可以这么做:

  1. 创建 /home/pi/.dingdang 到 /root/.dingdang 的软链接:
ln -s /home/pi/.dingdang /root/
  1. 在 /home/pi 目录下新建一个启动脚本 dingdang.sh ,内容为:
#!/bin/bash
sleep 5
sudo python /home/pi/dingdang/dingdang.py &

带上 sleep 5 是为了确保 alsa 加载完成后才启动叮当,避免启动后没有语音提示。

为了使叮当的重新启动插件可用(重新启动插件要求root权限),在执行时加了 sudo。如果希望叮当在开机时在终端中启动,可以修改执行命令为:sudo lxterminal -e "python /home/pi/dingdang/dingdang.py"

对于使用 ReSpeaker 2 Mic HAT 的用户,如果遇到重启后音量为 0 的问题,可以在设置好音量后先执行 sudo alsactl --file=asound.state store 命令,保存音量设置。然后把启动脚本改为:

#!/bin/bash
sleep 5
alsactl --file=/home/pi/asound.state restore
sleep 1
sudo python /home/pi/dingdang/dingdang.py &
  1. 之后在 /home/pi/.config 下找到 autostart 的文件夹。在该文件夹下创建一个空文件,文件名自拟,后缀必须是desktop,如:dingdang.desktop。

用编辑器打开该文件,修改文件内容如下并保存:

[Desktop Entry]
Name=Dingdang
Comment=Dingdang Robot
Exec=sh /home/pi/dingdang.sh
Icon=/home/pi/python_games/4row_black.png
Terminal=false
MultipleArgs=false
Type=Application
Categories=Application;Development;
StartupNotify=true

NameCommentIcon 可以自定,分别表示启动项的名称、备注和图标。Exec 表示调用的指令,和在终端输入运行脚本的指令格式一致。

启动后如需登录微信,可以使用 SendQR 插件,叫叮当“发送微信二维码”,将发送二维码图片到您邮箱用,再拿手机扫码。也可以使用 @hhao 贡献的 webserver 插件,叫叮当 “启动Web服务器”,然后访问 http://叮当的ip:8080, 里头找到 wxqr.png ,再拿手机扫码。

其他常见问题

请参见 常见问题自助

Clone this wiki locally