密级公开
版本10D.2

AICP TTS 优化指南

1. 概述#

本文档描述 AICP-10 平台中 TTS 能力的合成声音优化的方法,主要包括:

  • 自定义标记
  • S3ML语言
  • 外部规则

2. 自定义标记#

自定义标记通过在文本中增加简单的标记,来对合成声音进行控制和优化。

标记含义示例
空格文字间短停顿-
·文字间短停顿,和空格差别不大,空格可能略显突兀,点比较柔和请问·有什么可以帮您?
""引号强制分词-
`强制电报读法、数字间短停顿2013年8月,请输入 `201308
单个^强制数目读法、去掉停顿您还可以根据^需要·简短地说出需求
【】区域控制符,其中的文字可以独立调整语速和几个词停顿一次-
〖〗强制首字姓氏发音请问您是〖曾志伟〗先生吗?

3. S3ML语言#

TTS 能力支持使用 S3ML 标记语言来对合成声音进行控制和优化。但目前的版本只能支持部分标记。

3.1 SSML介绍#

SSML (Speech Synthesis Markup Language)语音合成标记语言定义了一套丰富的,基于XML的标记语言以支持在Web语音浏览器或者其它应用程序中生成合成语音。这一标记语言的的主要作用在于提供给合成内容的作者一个标准的方法来控制语音的各个方面,例如发音、音量、语速、基频等。

SSML目前是W3C的草案,具体内容参见 http://www.w3.org/TR/speech-synthesis/。

3.2 S3ML介绍#

捷通华声语音合成系统定义了S3ML(SinoVoice Speech Synthesis Markup Language)即捷通华声语音标记语言。S3ML符合基本的SSML规范,但更为详细地定义了SSML没有精确定义的部分(例如say-as的具体语法),同时也支持一些针对中文语音合成的扩展。

3.3 支持的标签#

3.3.1 speak#

  • 描述:

<speak>标签是所有待支持S3ML标签的根节点。一切需要调用S3ML标签的文本或其他标签都要包含在<speak></speak>中。

  • 语法格式:
<speak>...</speak>

3.3.2 prosody#

  • 描述:

<prosody>标签控制语音输出的音量、音高和语速。其属性均为可选,但必须至少有一项,否则没有意义。如果某个属性的值是非法的,则忽略此属性。

  • 格式:
<prosody pitch="..." rate="..." volume="...">文本</prosody>
  • 属性
属性名称属性类型属性值必选描述
pitchString{"x-high","high","medium","low","x-low","default}基频的高低
rateString{"x-high","high","medium","low","x-low","default}语速的快慢
volumeString{"x-high","high","medium","low","x-low","default}音量的大小
  • 示例:
<speak>
你昨晚看了<prosody pitch="high" rate="slow" volume="x-high">黑客帝国</prosody>了吗?
我已经看过<prosody pitch="low" rate="high" volume="x-low">黑客帝国</prosody>
</speak>

3.3.3 mark标签#

  • 描述:

一个空标记,用于在文档中放入一个标签,它可以用于在文本/标记序列中快速查找某个特定位置,也可以在输出语音流中的相同位置放置一个标签以便通知用户。

  • 格式:
<mark name="..." />
  • 属性:
属性名称属性类型属性值必选描述
nameString标记元素的值,长度不能超过256字节(包含引号)标记的名称
  • 示例:
<speak>
从这里<mark name="here"/>开始出发,到那里<mark name="there"/>停止。
</speak>

当前版本不支持进度回调,因此此tag无效

4. 外部规则#

使用外部工具修改合成的规则文件,然后放到音库目录下。

目前只能是做静态更新,也即替换文件后需要重启服务器。