项目博客:http://dingdang.hahack.com/

-->写给玩过此项目的童鞋。

项目配置教程中的修改唤醒词步骤是这样的(如图):

语音唤醒 android startActivity 语音唤醒名字_txt文件

但我找到的诀窍并不完全是按这个步骤来的,下面将举例说明。

  1. 给机器人起名字:“小贝”;
  2. 确定一个唤醒词(最好用四字词):小贝同学
  3. 然后用手机语音测试,如Siri。对着手机说:“小贝”和“小贝同学”,看手机上识别出的结果,可能的结果有:“小为”、“交杯”、“小类”、“小贝”“小白” 和 “小贝同学”、“小飞同学”、“小薇同学”、“这位同学”等等等。。。。
  4. 记录这些词的大写拼音字母到keyword.txt文件中,上传并编译成模型,然后把得到的后缀为 .lm 和 .dic
  5. 替换 /home/pi/.dingdang/vocabularies/pocketsphinx-vocabulary/keyword 下的同名文件;
  6. 重新运行叮当,将其放在嘈杂的环境中,然后查看日志输出,统计识别出最多的结果,绝大部分都是二字词,而该系统只有识别到含有机器人名字 “XIAOBEI” 或者 “XIAOBEI**” 的结果才能唤醒音箱的;
  7. 所以我们可以新建一个keyword.txt文件只写入“XIAOWEI”(用于识别返回嘈杂环境中误识的结果,绝不可以含有机器人名字拼音“XIAOBEI”)、“XIAOBEITONGXIE”(用于识别返回唤醒词的结果,必须含有机器人名字拼音“XIAOBEI”才能唤醒机器人),然后上传编译成模型,但这次只把其中 .dic 的文件下载下来再次替换 /home/pi/.dingdang/vocabularies/pocketsphinx-vocabulary/keyword 下的同名文件;
  8. 然后重新运行叮当,你会发现误识率降低了,识别率也升高了,一叫就醒。

原理:

      嘈杂环境中绝大多数识别到的都是二字词,所以匹配到dictionary文件中的“XIAOWEI”,不含有机器人全名“XIAOBEI”,所以无法唤醒系统;而通过四字唤醒词唤醒时,则会匹配到dictionary文件中的“XIAOBEITONGXUE”,其中含有机器人的全名“XIAOBEI”,所以能唤醒系统。其过程如图所示:

语音唤醒 android startActivity 语音唤醒名字_离线语音唤醒_02

补充一个例子文件截图,方便理解:

语音唤醒 android startActivity 语音唤醒名字_PocketSphinx_03