TTS MRCP服务解压部署包即可
部署 TTS MRCP服务需要以下组件包,版本号已省略,以产品号为准。
组件 | 包名称 | 服务名称/描述 | 安装必选 | 说明 |
---|---|---|---|---|
tts_mrcp | aicp-*-tts_mrcp.tar.gz | - | ✓ | MRCP服务 |
TTS MRCP服务硬件需求
系统: CentOS 6、CentOS 7、Suse 12 SP1
Glibc 2.12+, Kernel 2.6.32+
CPU: x86_64
内存: 8G+
硬盘: 500G+
假设安装目录为 $HOME/aicp
,组件包放在 $HOME/tarball
目录。安装后, aicp_tts_mrcp
的服务目录为 $HOME/aicp/aicp_tts_mrcp
,配置文件 aicp_tts_mrcp.toml
在其中的 conf
目录下。
安装后,服务目录 $HOME/aicp/aicp_tts_mrcp
中有以下内容
bin
:mrcp接口服务执行程序目录conf
: 服务配置目录lib
:服务运行依赖库log
:默认日志存放目录plugin
:tts插件所在目录script
:配置所用脚本目录aicp_tts_mrcp/
├──bin/
│ └──aicp_tts_mrcp*
├──conf/
│ ├──aicp_tts_mrcp.toml
│ ├──logfile.xml
│ ├──logger.xml
│ └──aicp_tts_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/
├──pids/
├──plugin/
│ └──libtts_mrcp.so*
├──script/
└── adjust_param.lua
本章节仅对经常使用的配置进行说明,更多配置项的说明请参考配置文件中注释说明。
配置文件路径为$HOME/aicp/aicp_tts_mrcp/conf/aicp_tts_mrcp.xml
。
其中默认为:
<sip-port>58060</sip-port>
<mrcp-port>51544</mrcp-port>
<rtp-port-min>40000</rtp-port-min>
<rtp-port-max>50000</rtp-port-max>
注:mrcp服务更多高级配置遵循unimrcp框架官方配置
配置文件路径为 $HOME/aicp/aicp_tts_mrcp/conf/aicp_tts_mrcp.toml
。
[api] # endpoint endpoint = 'sis-ext.cn-north-4.myhuaweicloud.com' # project_id project_id = 'your_project_id' [tts.params] # 参数调整脚本,property,speed,pitch,volume... adjust_script = 'script/adjust_param.lua' # 默认访问tts时的配置,如需修改请注意JSON格式 # 音频格式pcm采样率8000不可修改 default = ''' { "audio_format":"pcm", "sample_rate":8000, "speed":0, "pitch":0, "volume":50, } '''
aicp_tts_mrcp
服务初始化时一次性读取脚本内容(不支持热更新,修改后需要重启服务)为简化处理逻辑减少歧义,程序传入给脚本的字段和脚本返回给程序的结果统一采用字符串进行串交互
脚本中变量名由小写字母、下划线组成,当字段名含中横线-
时传入到脚本内部会替换为下划线_
脚本内部可以使用lua内置字符串操作函数进行简单的逻辑匹配处理
在编写逻辑时请注意对空值得判断,以免发生不可预期的异常行为
脚本中支持MRCP消息头中的全部合法变量,常用字段变量如下所示:
头域字段名 | 脚本可用变量 | 值说明 |
---|---|---|
- | Channel_Id |
通道名称。注意首字母大写 |
Voice-Gender |
voice_gender |
性别 male,female,neutral |
Voice-Age |
voice_age |
年龄 |
Voice-Name |
voice_name |
发音人property |
Prosody-Rate |
prosody_rate |
语速 |
Prosody-Volume |
prosody_volume |
音量 |
Vendor-Specific-Parameters |
vendor_specific_parameters |
自定义变量 |
注意:其中Vendor-Specific-Parameters
支持自定义扩展键值对,key=value的格式,多个用半角分号;
分开
具体示例如下:Vendor-Specific-Parameters:pitch=10;speed=20;volume=50
,对于此种情况,
服务会自动解析成变量名为VSP_pitch,VSP_speed,VSP_volume
传入给脚本使用,通过此字段可以动态扩展更多功能
adjust_param.lua
-- 调整语速,返回类型字符串 function get_speed() if VSP_speed~=nil then return VSP_speed end return "0" end -- 调整音调,返回类型字符串 function get_pitch() if VSP_pitch~=nil then return VSP_pitch end return "0" end -- 调整音量,返回类型字符串 function get_volume() if VSP_volume~=nil then return VSP_volume end return "50" end -- 传入待合成文字的字符集 function get_codepage() return "utf-8" end -- 调整property,返回类型字符串,为空时返回默认 function get_property() if Voice_Name~=nil then return Voice_Name end return "chinese_xiaoyan_common" end
MRCP接口服务选用unimrcp
框架实现业务支持,日志配置遵循unimrcp
日志框架配置方式。
$HOME/aicp/aicp_tts_mrcp/conf/logfile.xml
max-age="1"
表示日志存储的周期,以天为单位,超过的将会被删除。max-count="10"
表示服务运行中生成的最大日志个数,超过时将会被循环覆盖,设置0时表示不覆盖。max-size="100"
表示单个日志最大空间限制,单位MB$HOME/aicp/aicp_tts_mrcp/conf/logger.xml
<priority>INFO</priority>
可调整unimrcp生成日志的级别日志格式
2020-06-11 07:38:55:708760 140358121944832 [INFO] [mrcp_server_connection.c:789] Log Message
────────────┬──────────── ─────┬────── ─┬── ────────┬───────────────────
│ │ │ └────── 文件名:行号
│ │ └──────────────────── 日志级别
│ └──────────────────────────────── 线程号
└──────────────────────────────────────────────────── 日期时间
bin目录下执行: ./aicp_tts_mrcp -d --ak yourAK --sk yourSK