资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

呼叫中心语音-语音识别(8K)

接口描述及运行环境

本文档是百度呼叫中心语音MRCP的用户指南。

本程序做为MRCP Server端,集成了呼叫中心8K采样率语音识别(ASR)和呼叫中心专属发音人语音合成(TTS)两种能力,用户可分别单独使用某一种或同时使用。

接入步骤

开发环境

  • 开发环境依赖:

    	- Linux 64位 centos 6u3、centos 7+版本
    
    	- gcc: 8.2以上版本libc,CXX11。程序自带compiler.tar.gz压缩包
  • 并发受机器内存、核数等性能影响。

    	- 参考:4核8G内存,并发数为20。

音频格式

要求项 取值要求
采样率 8KHz
采样精度 16bits
声道 单声道
  • 音频内容为:清晰的真人发音,无背景音或其它噪音,日常用语。
  • 开发者Mrcp Client端发送的音频格式通过sip协议交互约定,目前mrcp server支持的音频格式有: PCMU PCMA L16/96/8000

语言及模型支持

支持中文普通话

发音人

目前仅支持一位发音人

调用流程

Mrcp下载与目录

点击呼叫中心语音解决方案MrcpServer完成Mrcp Server下载;

目录结构

${SERVER_ROOT}
|--- README  	// 说明文件
|--- bootstrap.sh 	// 环境初始化
|--- compiler.tar.gz 	// gcc-8.2编译器lib库
|--- mrcp-server 	// 主程序模块
	|--- audio		// 音频保存目录
	|--- bin    	// 服务可执行程序
		|--- unimrcpserver_control // 启动脚本
	|--- conf 		// 配置文件
		|--- unimrcpserver.xml 	// 可执行程序框架配置项
		|--- unimrcpserver_control.conf // 启动配置项
		|--- mrcp-asr.conf 		// 识别插件配置项
		|--- mrcp-proxy.conf 	// 合成插件配置项
		|--- comlog.conf 		// 日志配置项
	|--- data  		// 资源文件
	|--- lib   		// 依赖库
	|--- log   		// 日志目录
	|--- plugin  	// 插件目录

鉴权与IP参数配置

用户首先需进行相关配置以启动程序。一般地,配置采用默认值即可,需要用户修改的主要有:

  • 在主程序配置文件 ${SERVER_ROOT}/mrcp-server/conf/unimrcpserver.xml 中配置本程序IP,具体位置:unimrcpserver->properties->ip,可选用多种方式,只能同时使用一种:
	* type="auto",由程序自动获取机器IP。默认配置,用户无需修改。
	* type="iface",填写网口名称,较少使用。
	* 直接手动填写IP,如:<ip>10.10.0.1</ip>,可以使用。
  • 语音识别配置conf/mrcp-asr.conf中更改AUTH_APPID和AUTH_APPKEY为从百度官方获取的APPID和API Key的值。
  • 语音合成配置conf/mrcp-proxy.conf中更改AUTH_APPID和AUTH_APPKEY为从百度官方获取的APPID和API Key的值。
  • 启动配置文件 ${SERVER_ROOT}/mrcp-server/conf/unimrcpserver_control.conf,用于监测相应IP和端口,判断程序是否启动成功。搜索到_check_cmd_pro="./bin/check 127.0.0.1 1544"的位置:
	* 如果主程序配置IP采用默认type="auto"方式,则该处"127.0.0.1"不用修改。
	* 如果主程序配置IP使用手动填写IP方式,则该处的IP值修改为与它相同的值。

详细的配置说明见模块内README文件-${SERVER_ROOT}/mrcp-server/README

服务启动

  1. 初次下载MRCP server安装包,需要在 ${SERVER_ROOT}/ 目录下,以 root 权限执行 bootstrap.sh 脚本,以完成百度自带gcc8.2环境配置。
  2. 程序调试阶段,建议在程序目录${SERVER_ROOT}/mrcp-server/下,手动使用命令"./bin/unimrcpserver -r . &"启动程序,方便查看输出、定位问题。使用netstat -nlp | grep unimrcp,查看IP和端口5060/1544/1554,看是否启动成功。如果公司有防火墙限制,请记得将这三个端口打开。
  3. 使用启动脚本,以守护进程形式启动程序。在生产环境使用时,建议使用该方式:

    • 启动:在${SERVER_ROOT}/mrcp-server目录执行 ./bin/unimrcpserver_control start
    • 停止:在${SERVER_ROOT}/mrcp-server目录执行 ./bin/unimrcpserver_control stop
    • 重启:在${SERVER_ROOT}/mrcp-server目录执行 ./bin/unimrcpserver_control restart
  4. 进行start前确保系统无mrcp进程;进行stop/restart时确保系统有mrcp进程。如果不行,通过 ps aux | grep mrcp 尝试将所有mrcp相关的进程kill掉,重新 start

请求说明

鉴权信息

如需使用语音识别能力,则需在下载的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 目录下

  1. 验证语音识别正确性,则执行 ./asrclient,输入 run grammar.xml xeq.pcm,可看到返回的识别结果,使用 quit 退出。识别的是 ../data 目录下的xeq.pcm音频,也可查看log目录下日志mrcp_debug.log是否有识别结果。该工具只为测试部署正确性,测试较长音频时,会因为vad截断而只识别音频里的第一句话;只支持pcm格式音频识别;该工具也不支持批量音频识别。
  2. 用户呼叫软件如freeswitch,在与mrcp server通信时可能需要传递grammar文件,请使用mrcp server中data/grammar.xml文件。
  3. 呼叫中心场景,噪声识别是个很难解的问题。如果用户想忽略因噪声而误识别出的单字结果,例如等,可在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。

上一篇
呼叫中心语音-音频文件转写(8K)
下一篇
语音合成