USSML 语法

USSML 语法说明 #

简介 #

USSML(Unified Speech Synthesis Markup Language)旨在归一化各TTS供应商的 SSML(Speech Synthesis Markup Language)语法格式。USSML 支持最常用的几个 SSML 标签:停顿 <break> 、指定读音<phoneme>、替换合成文本<sub>和指定朗读方式<say-as>,可以满足大部分的语音合成需求。如有 USSML 不支持的标签,用户仍然可以直接使用 TTS 供应商的 SSML 语法进行语音合成。

使用方式 #

语法格式 #

USSML 语法格式如下:

<speak sttts:version="0.1">
    <break time="string" />
    <phoneme alphabet="string" ph="string"></phoneme>
    <sub alias="string"></sub>
    <say-as interpret-as="string"></say-as>
</speak>

<speak> 标签用于包裹其他子标签外,剩余标签均不可嵌套使用。

特殊字符 #

由于使用 XML,USSML 中的特殊字符需要进行转义,如下表所示:

特殊字符转义字符
&&amp;
<&lt;
>&gt;
"&quot;
'&apos;

例如:

It’s a good day. 的 USSML 表示为:

<speak sttts:version="0.1">
    It&apos;s a good day.
</speak>

标签说明 #

<speak> #

<speak> 标签是 USSML 的根标签,用于包裹所有的 USSML 标签。

属性 sttts:version 用于指定 USSML 的版本号,目前 USSML 的版本号为 0.1

<speak sttts:version="0.1">
    <!-- USSML 标签 -->
</speak>

<break> #

<break> 标签用于指定停顿,其 time 属性用于指定停顿的时长。time 属性的值是一个字符串,单位为秒或毫秒。停顿的最大时长为5秒。例如:

<break time="5s" />

<break time="5000ms" />

<phoneme> #

<phoneme> 标签用于指定读音,其 alphabet 属性用于指定使用的音标字母表, ph 属性用于指定读音的内容。alphabet 属性的可选值包括: 汉语拼音 pinyin, 国际音标 ipa, CMU 发音词典 cmu,目前仅支持 pinyinalphabet 属性若为空,默认值为 pinyin

拼音用法:字与字的拼音用空格分隔,拼音的数目必须与字数相等。每个拼音由发音和音调组成,音调为1~5的数字编号,其中”5”表示轻声。

例如:

<phoneme ph="mai2 mo4" alphabet="pinyin">埋没</phoneme>

<sub> #

<sub> 标签用于在合成过程中替换文本。该标签的 ‘alias’ 属性用于指定要替换的文本内容。合成时,‘alias’ 属性所包含的文本将会取代原始文本进行合成,若有字幕,字幕内容为标签内的原始文本。

<sub> 标签内容与 ‘alias’ 属性的文本均不得为空。

例如:

<sub alias="World Wide Web Consortium">W3C</sub>

<say-as> #

<say-as> 标签允许您使用特定的朗读方式来合成标签内容。该标签的 ‘interpret-as’ 属性用于指定朗读方式。不同的供应商对相同的朗读方式可能产生略微不同的结果。

interpret-as 属性支持多种值,包括:

说明样例
cardinal按照数值方式进行发音“1487” 读作 “一千四百八十七”
digit按数字串发音“12345” 读作 “一二三四五”
phone按电话号码常用方式发音“1301001155” 读作 “幺三零幺零零幺幺五五”
address按地址发音“市台路388-301号” 读作 “市台路三八八杠三零幺号”
date按日期发音“1998-12-12” 读作 “一九九八年十二月十二日”
clock按时刻发音“12:00:12” 读作 “十二点零分十二秒”

例如:

<say-as interpret-as="cardinal">12345</say-as>

示例 #

例 1 #

<speak sttts:version="0.1">
    你说<phoneme ph="bo2"></phoneme>    <break time="500ms" />
    我说<phoneme ph="bao2"></phoneme></speak>

例 2 #

<speak sttts:version="0.1">
    <sub alias="World Wide Web Consortium">W3C</sub>
    是一个国际性的标准化组织。
</speak>

例 3 #

<speak sttts:version="0.1">
    <sub alias="青岛啤酒">TsingTao</sub>
    用河南话说就是,
    <phoneme ph="qing2 dao1 pi4 jiu1">青岛啤酒</phoneme>    <say-as interpret-as="cardinal">12345</say-as>
</speak>