TTS MRCP服务 部署手册

目录

▶︎
all
running...

1. 概述

TTS MRCP服务解压部署包即可

2. 组件包

部署 TTS MRCP服务需要以下组件包,版本号已省略,以产品号为准。

组件 包名称 服务名称/描述 安装必选 说明
tts_mrcp aicp-*-tts_mrcp.tar.gz - MRCP服务

3. 准备工作

3.1 硬件资源

TTS MRCP服务硬件需求

  系统:  CentOS 6、CentOS 7、Suse 12 SP1
         Glibc 2.12+, Kernel 2.6.32+
  CPU:   x86_64
  内存:  8G+
  硬盘:  500G+

4. 部署安装

假设安装目录为 $HOME/aicp,组件包放在 $HOME/tarball 目录。安装后, aicp_tts_mrcp
的服务目录为 $HOME/aicp/aicp_tts_mrcp,配置文件 aicp_tts_mrcp.toml 在其中的 conf 目录下。

4.1 目录结构

安装后,服务目录 $HOME/aicp/aicp_tts_mrcp 中有以下内容

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

5. 配置项

本章节仅对经常使用的配置进行说明,更多配置项的说明请参考配置文件中注释说明。

5.1 mrcp服务配置

配置文件路径为$HOME/aicp/aicp_tts_mrcp/conf/aicp_tts_mrcp.xml

其中默认为:

注:mrcp服务更多高级配置遵循unimrcp框架官方配置

5.2 tts插件配置

配置文件路径为 $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,
  }
  '''

5.3 可编程脚本配置

5.3.1 原理解释

  1. aicp_tts_mrcp服务初始化时一次性读取脚本内容(不支持热更新,修改后需要重启服务)
  2. 当有请求到来时,在每个合成任务前,会调用脚本中函数进行参数值的获取和使用
  3. 服务调用脚本时,会传入程序内部已经解析出来的字段名和字段值,供脚本使用
  4. 脚本内部函数即可通过传入的字段进行简单逻辑处理,返回给程序期望的字段值

5.3.2 脚本编写

  1. 为简化处理逻辑减少歧义,程序传入给脚本的字段和脚本返回给程序的结果统一采用字符串进行串交互

  2. 脚本中变量名由小写字母、下划线组成,当字段名含中横线-时传入到脚本内部会替换为下划线_

  3. 脚本内部可以使用lua内置字符串操作函数进行简单的逻辑匹配处理

  4. 在编写逻辑时请注意对空值得判断,以免发生不可预期的异常行为

  5. 脚本中支持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传入给脚本使用,通过此字段可以动态扩展更多功能

5.3.3 脚本示例

5.3.3.1 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

5.4 日志配置

MRCP接口服务选用unimrcp框架实现业务支持,日志配置遵循unimrcp日志框架配置方式。

5.5 运行日志

日志格式

2020-06-11 07:38:55:708760 140358121944832 [INFO] [mrcp_server_connection.c:789] Log Message
 ────────────┬────────────  ─────┬──────    ─┬──   ────────┬─────────────────── 
             │                   │           │             └────── 文件名:行号
             │                   │           └──────────────────── 日志级别
             │                   └──────────────────────────────── 线程号
             └──────────────────────────────────────────────────── 日期时间

6. 运行

bin目录下执行: ./aicp_tts_mrcp -d --ak yourAK --sk yourSK