ASR MRCP服务解压部署包即可。
部署 ASR MRCP服务需要依赖华为云语音交互服务(SIS)。
部署示意图如下:
部署 ASR MRCP服务需要以下组件包,版本号已省略,以产品号为准。
组件 | 包名称 | 服务名称/描述 | 安装必选 | 说明 |
---|---|---|---|---|
asr_mrcp | ei-*-asr_mrcp.tar.gz | - | ✓ | ASR MRCP服务 |
ASR MRCP服务硬件需求
系统: CentOS 6、CentOS 7、Suse 12 SP1、麒麟
Glibc 2.12+, Kernel 2.6.32+
CPU: x86_64、aarch64
内存: 8G+
硬盘: 500G+
假设安装目录为 $HOME/aicp
,将组件包拷贝到此目录并解压。
安装后, ei_asr_mrcp
的服务目录为 $HOME/aicp/ei_asr_mrcp
,配置文件 ei_asr_mrcp.toml
在其中的 conf
目录下。
安装后,服务目录 $HOME/aicp/ei_asr_mrcp
中有以下内容
bin
:mrcp接口服务执行程序目录conf
: 服务配置目录lib
:服务运行依赖库log
:默认日志存放目录plugin
:asr插件所在目录script
:配置所用脚本目录ei_asr_mrcp/
├──bin/
│ └──ei_asr_mrcp*
├──conf/
│ ├──ei_asr_mrcp.toml
│ ├──logfile.xml
│ ├──logger.xml
│ ├──default_grammar.xml
│ └──ei_asr_mrcp.xml
├──lib/
│ ├──libapr-1.so.0*
│ ├──libaprutil-1.so.0*
│ ├──libcrypto.so.1.1*
│ ├──libcurl.so.4*
│ ├──libexpat.so.0*
│ ├──libsofia-sip-ua.so.0*
│ ├──libssl.so.1.1*
│ └──libunimrcpserver.so.0*
├──log/
├──plugin/
│ └──libasr_mrcp.so*
└──script/
├──mrcp_result.lua
└──param_adjust.lua
本章节仅对经常使用的配置进行说明,更多配置项的说明请参考配置文件中注释说明。
配置文件路径为$HOME/aicp/ei_asr_mrcp/conf/ei_asr_mrcp.xml
。
其中默认为:
<sip-port>8060</sip-port>
<mrcp-port>1544</mrcp-port>
<rtp-port-min>5000</rtp-port-min>
<rtp-port-max>6000</rtp-port-max>
注:mrcp服务更多高级配置遵循unimrcp框架官方配置
配置文件路径为 $HOME/aicp/ei_asr_mrcp/conf/ei_asr_mrcp.toml
。
# API配置
[api]
# endpoint
endpoint = 'sis-ext.cn-north-4.myhuaweicloud.com'
# project_id
project_id = 'your_project_id'
找到param_adjust_script
配置项,该配置指向了一个lua脚本,打开脚本内容如下:
function get_adjust_value(name,local_value,rule_value,mrcp_value) local real_value=local_value if( rule_value~= "") then real_value=rule_value elseif( mrcp_value~= "") then real_value=mrcp_value else real_value=local_value end return real_value end
get_adjust_value
函数,在每次会话创建后会被调用,用于调整参数优先级找到default_grammar_file
配置项,该配置指向了一个xml文件
支持加载本地语法文件。
注:默认情况不需要配置此项,即使用客户传入的语法文件;如果配置此项目,则始终本地语法文件优先级高于传入的语法文件
找到asr_result_max_byte_limit
配置项,此配置项支持识别结果返回前允许的最大字符限制,单位Byte,超出后,后面的内容将会被截断。默认0不限制
找到xml_result_charset
配置项,该配置项可以指定结果的字符编码,可选utf-8或者gbk
找到xml_result_generate_script
配置项,该配置指向了一个lua脚本,打开脚本内容如下:
str_format = [==[ <?xml version="1.0" encoding="%s" ?> <result> <interpretation grammar="%s" confidence="%s"> <instance> <r0>%s</r0> <start>%s</start> <nlresult>type=%s time=%s %s result=%s score=%s</nlresult> </instance> <input mode="speech">%s</input> </interpretation> </result> ]==] function get_xml_result() if (_recog_mode~="speech-to-text") then _recog_mode = "voice-guide" end return string.format(str_format,_charset,symbol_cvt(_grammar_url),_confidence,_channel_id,_time_begin,_recog_mode,_time_begin,_time_end, end
注:此脚本内容根据不同客户需求,可进行定制化修改
在所配置的lua脚本中允许使用的全局变量列表如下:
变量名 | 含义 | 可用时机 |
---|---|---|
_recog_mode |
识别模式{voice-guide,speech-to-text} | 语法文件解析后 |
_charset |
结果编码{gbk,utf-8} | 识别完成后 |
_grammar_url |
语法文件路径 | 识别完成后 |
_confidence |
识别置信度 | 识别完成后 |
_channel_id |
通道标识 | 会话建立后 |
_asr_result |
语音识别结果 | 识别完成后 |
_time_begin |
识别时间戳-开始 | 识别完成后 |
_time_end |
识别时间戳-结束 | 识别完成后 |
_speed |
识别结果语速 | 识别完成后,需配置语能开启 |
_avg_vol |
识别结果平均音量 | 识别完成后,需配置功能开启 |
_max_vol |
识别结果最大音量 | 识别完成后,需配置功能开启 |
_emotion |
识别结果情绪信息 | 识别完成后,需配置功能开启 |
_logging_tag |
同mrcp头域中Logging-Tag |
mrcp请求中携带 |
_vendor_specific_parameters |
mrcp头域中Vendor-Specific-Parameters |
mrcp请求中携带 |
^例如:params1=aaa;params2=222;params3=33" | ||
VSP_xxx |
其中xxx表示从Vendor-Specific-Parameters 中分割出的参数 |
同Vendor-Specific-Parameters |
^例如:VSP_params1、VSP_params2、VSP_params3,变量对应的值依次即为aaa、222、33 | ||
_sentence_index |
当前识别句索引 | 识别完成后(仅流式识别模式下有效) |
_silence_duration |
句间静音时长 | 识别完成后(仅流式识别模式下有效) |
MRCP接口服务选用unimrcp
框架实现业务支持,日志配置遵循unimrcp
日志框架配置方式。
日志文件生成规则配置
配置文件:$HOME/aicp/ei_asr_mrcp/conf/logfile.xml
max-age="1"
表示日志存储的周期,以天为单位,超过的将会被删除。max-count="10"
表示服务运行中生成的最大日志个数,超过时将会被循环覆盖,设置0时表示不覆盖。max-size="100"
表示单个日志最大空间限制,单位MB日志内容输出规则配置
配置文件:$HOME/aicp/ei_asr_mrcp/conf/logger.xml
<priority>INFO</priority>
可调整unimrcp框架的日志级别<source name="RECOG-PLUGIN" priority="INFO" masking="NONE"/>
可调整插件的日志级别。注:同一台机器部署多个ASR MRCP服务,即多进程方式使用时,确保日志目录相互独立
日志格式
2020-06-11 07:38:55:708760 140358121944832 [INFO] [mrcp_server_connection.c:789] Log Message
────────────┬──────────── ─────┬────── ─┬── ────────┬───────────────────
│ │ │ └────── 文件名:行号
│ │ └──────────────────── 日志级别
│ └──────────────────────────────── 线程号
└──────────────────────────────────────────────────── 日期时间
bin目录下执行: ./ei_asr_mrcp -d --ak yourAK --sk yourSK