更新时间:2024-05-08 GMT+08:00
分享

SSML标记语言介绍

本文为您介绍SSML(Speech Synthesis Markup Language)标记语言的功能、标签使用及示例。

概述

SSML 是一种基于 XML 的语音合成标记语言。使用 SSML 可以更加准确、具体的定义合成音频的效果,包括控制断句分词方式、发音、速度、停顿、声调和音量等特征。相比文本输入进行合成,有更好的操作灵活性。

华为云语音合成服务的SSML实现,基于W3C的语音合成标记语言版本1.1,但并不支持W3C包含的所有的标记类型。目前仅华小飞,华小美,华小龙,华小蕊合成支持 SSML功能。该特性与语言无关。发音人property取值详见语音合成

  • 华小飞(朝气男声):chinese_huaxiaofei_common,支持8k/16k采样率。
  • 华小美(温柔女声):chinese_huaxiaomei_common,支持8k/16k采样率。
  • 华小龙(朝气男声):chinese_huaxiaolong_common,支持16k采样率。
  • 华小蕊(知性女声):chinese_huaxiaorui_common,支持16k采样率。

使用方式

语音合成服务支持的SSML标签请参见标签。详情请参考文档下方各标签的介绍和示例。语音合成的SSML功能支持多个 <say-as> 标签闭合嵌套于文本之中,如:

{
"text": "<speak>文本<break time=\"15ms\"/>本文, <say-as interpret-as=\"money\">15.55 RMB</say-as></speak>"
}

将带标签的文本作为text的参数值,上传至语音服务进行调用,以Java SDK为例:

使用postman调用格式如下:

标签

  1. <speak>

    描述:SSML文本的根节点

    语法:

    <speak>这里输入SSML标签的文本</speak>

    属性:无

    标签关系: <speak> 可以包含文本和以下标签:
    • <break>
    • <phoneme>
    • <say-as>
    • <sub>
  2. <break>

    描述:在任意位置,插入一个静音停顿

    语法:

    <!-- 空属性 -->
    <break/>
    <!-- 指定长度 -->
    <break time="string"/>
    <!-- 指定长度类 -->
    <break strength="string"/>

    属性:

    表1 标签属性

    属性名称

    属性类型

    属性值

    是否必选

    描述

    time

    String

    [number]s/[number]ms

    以s/ms为单位设置静音持续时间 (如:"1s", "500ms")。 最大静音时间为10s。(华小龙,华小蕊不支持该属性)

    strength

    String

    以下之一:none, x-weak, weak, medium,strong, x-strong

    定义韵律(none=没有韵律,x-weak=很短,x-strong=很长)

    标签关系:<break> 是空标签,不能包含任何标签。

    示例:

    一句话<break/>另外一句话
    一句话<break time="20ms"/>另外一句话
    一句话<break strength="strong"/>另外一句话
  3. <phoneme>

    描述:改变英文单词或中文多音字的发音。

    语法:

    <phoneme ph="string">这里输入字母</phoneme>
    

    属性:

    表2 标签属性

    属性名称

    属性类型

    属性值

    是否必选

    描述

    ph

    String

    拼音,CMU词典音素

    Pronunciation。

    标签关系: <phoneme> 可以包含文本,不可以包含其他SSML标签。

    示例:
    今天<phoneme ph="tian1 qi1">天气</phoneme>很好
    The <phoneme ph="W EH1 DH AH0">weather</phoneme> is very good.
  4. <say-as>

    描述:将文本解释为特定的类型内容,或者控制英文单词逐个字符拼写。

    语法:

    <say-as interpret-as="string">这里输入字母</say-as>
    

    属性:

    表3 标签属性

    属性名称

    属性类型

    属性值

    是否必选

    描述

    iterpret-as

    String

    以下之一:money, date, figure,phone, english, spell;具体含义参考下表。

    将内容解释为给定类型。

    表4 iterpret-as类型说明

    类型

    描述

    money

    date

    日期

    figure

    数次

    phone

    电话号码

    english

    英文单词

    spell

    逐个字母读英文

    标签关系: 可以包含文本 。

    示例:
    今天<phoneme ph="tian1 qi1">天气</phoneme>很好
    The <phoneme ph="W EH1 DH AH0">weather</phoneme> is very good.
    <say-as interpret-as="money">15.55 RMB</say-as>
    <say-as interpret-as="date">2022/3/8</say-as>
    <say-as interpret-as="figure">175 厘米</say-as>
    <say-as interpret-as="phone">151 12345678</say-as>
    <say-as interpret-as="english">Hello</say-as>
    <say-as interpret-as="spell">Hello</say-as>
  5. <sub>

    描述:用其他词语代替合成文本中的词语。

    语法:

    <sub alias="string">这里输入字母</sub>

    属性:

    表5 标签属性

    属性名称

    属性类型

    属性值

    是否必选

    描述

    alias

    String

    替代值

    将标记的内容替换为此值。

    标签关系: 可以包含文本 。

    示例:

    <sub alias="保罗">Paul</sub>是德国人

相关文档