使用场景:
通过自定义唤醒词唤起语音识别功能,语音识别可以识别指定语法场景,并且通过TTS播报出来。
技术:
唤醒词、语音识别、tts(离线在线融合合成)
注意事项:
1、tts默认没有缓存机制,比如播放数字1,若需要高频播放,则需要自定义缓存,若存在则不需要再次发起合成,而是可以直接播放音频文件。见官方demo代码的FileSaveListener。
备注sdk及demo下载地址:http://ai.baidu.com/sdk
2、设置默认离线发音人。由于默认的在线和离线发音人不一致,导致没有网络的时候突然更改男发音人,特别突兀,体验不好。固找到默认离线发音人,demo代码:
//默认离线发音人设置为男,只有在离在线融合模式下生效TtsMode.MIX
protected String offlineVoice = OfflineResource.VOICE_FEMALE;
......
//设置在线发音人
//基础音库: 0 普通女声(默认) 度小宇=1,度小美=0,度逍遥=3,度丫丫=4
//精品音库:度博文(男)=106,度小童(女童音)=110,度小萌(萌女)=111,度米朵(女童萌)=103,度小娇(较快 女)=5
params.put(SpeechSynthesizer.PARAM_SPEAKER, "0");
3、唤醒之后,启动语音识别,会有时间误差(目前启动语音识别需要2s左右)。用户会在唤醒之后立刻说话,导致2s左右的声音识别不到,从而导致识别错误。
改善方法:增加提示音或弹窗加载中的提示。目前还没研究小度在家是怎么做到任意模式切换的。
4、语法文件:
telephone.call = 打电话给<name>, 打给<name>, 呼叫<name>,给<name>打电话
app.playunreadmsg = 播放消息,播放未读消息,播放新消息
app.open = 打开<appname>, 启动<appname>
编辑地址:https://console.bce.baidu.com/ai/?fromai=1#/ai/speech/speech/asr/index
编辑完之后记得下载,编译到app里即可。