语音识别
更新时间:2020-06-30
语音识别
如需使用语音识别能力,则需在下载的Mrcp Server中对识别配置文件进行参数更改 ${SERVER_ROOT}/mrcp-server/conf/mrcp-asr.conf
。确保AUTH_APPID和AUTH_APPKEY填写正确。
* AUDIO_CONTROLLER_ADDR,百度上游服务地址(默认值当前有效)
* AUTH_APPID和AUTH_APPKEY,从百度官网中获取的APPID和API Key的值。
* NEED_SAVE_AUDIO,是否保存语音识别时用户语音,默认1为保存
程序验证
首先,将mrcp-server/lib目录加入系统环境变量中,export LD_LIBRARY_PATH=${SERVER_ROOT}/mrcp-server/lib:$LD_LIBRARY_PATH
,注意将${SERVER_ROOT}修改为程序真实路径。
在主程序启动后,可使用自带的测试工具进行验证。conf/client-profiles/unimrcp.xml
是测试工具的配置文件,需要将其中的unimrcpclient->settings->sip-settings->server-ip的值修改为本机IP,端口设置为主程序端口,如5060。
切换到 ${SERVER_ROOT}/mrcp-server/bin
目录下
- 验证语音识别正确性,则执行
./asrclient
,输入run grammar.xml xeq.pcm
,可看到返回的识别结果,使用quit
退出。识别的是../data
目录下的xeq.pcm音频,也可查看log目录下日志mrcp_debug.log是否有识别结果。该工具只为测试部署正确性,测试较长音频时,会因为vad截断而只识别音频里的第一句话;只支持pcm格式音频识别;该工具也不支持批量音频识别。 - 用户呼叫软件如freeswitch,在与mrcp server通信时可能需要传递grammar文件,请使用mrcp server中
data/grammar.xml
文件。 - 呼叫中心场景,噪声识别是个很难解的问题。如果用户想忽略因噪声而误识别出的单字结果,例如
嗯
,啊
等,可在conf/mrcp-asr.conf
中设置DETECT_START_OF_INPUT_BY_VAD为0,并在SINGLE_WORD_WHTIL_LIST配置的白名单文件中进行相应配置。功能开启后,单字识别结果的场景下,只会识别白名单中的单字。
结果返回
- 语音识别. 往前端返回如下xml格式的内容:
<?xml version="1.0" encoding="UTF-8" ?>
<result>
<asr confidence="100">今天天气怎么样</asr>
<ext>
<logid>6a373e36722811e9_2_1</logid>
</ext>
</result>
- 识别结果格式支持模版配置,在conf/mrcp-asr.conf中,修改
XML_ASR_RESULT_TEMPLATE
的值即可。在conf目录下默认定义了几种模版,用户可根据需要选择一项或自己定义。
模型自训练
对于特定词句如人名、专业术语等,语音识别结果会存在不准确的情况。可通过百度语音自训练平台,进行自训练,提升识别效果。 训练完成后会得到一个模型ID,用户通过mrcp进行识别请求时,需要在mrcp客户端的vendor_specific_params参数中添加相应的键值对,如:lmid=123。