使用 SSML 来自定义语音和声音

可以使用语音合成标记语言 (SSML) 为语音输出指定文本转语音的语音、语言、名称、样式和角色。 还可以在单个 SSML 文档中使用多种语音,并调整重音、语速、音调和音量。 此外,SSML 还能够插入预先录制的音频,例如音效或音符。

本文介绍如何使用 SSML 元素来指定语音和声音。 有关 SSML 语法的详细信息,请参阅 SSML 文档结构和事件

使用语音元素

必须在每个 SSML speak 元素中至少指定一个 voice 元素。 此元素可确定用于文本转语音的语音。

可以在单个 SSML 文档中包含多个 voice 元素。 每个 voice 元素可以指定不同的语音。 还可以通过不同的设置多次使用同一语音,例如,当更改句子之间的静音持续时间时。

下表介绍了 voice 元素的属性的用法:

属性 说明 必需还是可选
name 用于文本转语音输出的语音。 有关受支持的预生成语音的完整列表,请参阅语言支持 必需
effect 音频效果处理器,用于在设备上针对特定方案优化合成语音输出的质量。

对于生产环境中的某些方案,听觉体验可能会因某些设备上的播放失真而降级。 例如,由于扬声器响应、房间混响和背景噪音等环境因素,来自汽车扬声器的合成语音可能会听起来迟钝而低沉。 乘客可能必须调高音量才能听得更清楚。 为了避免在这种情况下进行手动操作,音频效果处理器可以通过补偿播放失真来让声音更清晰。

支持以下值:
  • eq_car - 在汽车、公共汽车和其他封闭车辆中提供高保真语音时,优化听觉体验。
  • eq_telecomhp8k - 优化电信或电话方案中窄带语音的听觉体验。 应使用 8 kHz 的采样率。 如果采样率不是 8 kHz,则不会优化输出语音的听觉质量。

如果值缺失或无效,则会忽略此属性,不会应用任何效果。
可选

语音示例

若要了解 voice 元素的属性支持的值,请参阅使用语音元素

单个语音的示例

本示例使用 en-US-AvaMultilingualNeural 语音。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaMultilingualNeural">
        This is the text that is spoken.
    </voice>
</speak>

多个语音的示例

speak 元素中,可为文本转语音输出指定多种语音。 这些语音可以采用不同的语言。 对于每种语音,必须将文本包装在 voice 元素中。

此示例在 en-US-AvaMultilingualNeuralen-US-AndrewMultilingualNeural 语音之间进行交替。 神经多语言语音可以根据输入文本生成不同的语言输出。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaMultilingualNeural">
        Good morning!
    </voice>
    <voice name="en-US-AndrewMultilingualNeural">
        Good morning to you too Ava!
    </voice>
</speak>

音频效果示例

使用 effect 属性优化汽车和电信等方案的听觉体验。 以下 SSML 示例结合使用了 effect 属性和汽车方案中的配置。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaMultilingualNeural" effect="eq_car">
        This is the text that is spoken.
    </voice>
</speak>

使用讲话风格和角色

默认情况下,神经网络声音采用中性讲话风格。 可在句子层面调整讲话风格、风格强度和角色。

注意

语音风格和角色文档中所述,语音服务支持对一部分神经网络声音使用风格、风格程度和角色。 若要确定每种声音支持的风格和角色,还可以使用列出声音 API 和有声内容创作 Web 应用程序。

下表介绍了 mstts:express-as 元素的属性的用法:

属性 说明 必需还是可选
style 声音特定的讲话风格。 可以表达快乐、同情和平静等情绪。 也可以针对不同场景(例如客户服务、新闻广播和语音助理)优化语音。 如果风格值缺失或无效,则会忽略整个 mstts:express-as 元素,服务将使用默认的中性语音。 必需
styledegree 讲话风格的强度。 可以指定更强或更柔和的风格,使语音更具表现力或更柔和。 可接受值的范围为:0.012(含)。 默认值为 1,表示预定义的风格强度。 最小单位为 0.01,表示略倾向于目标风格。 值为 2 表示是默认风格强度的两倍。 如果风格程度缺失或不受声音的支持,则会忽略此属性。 可选
role 讲话角色扮演。 声音可以模仿不同的年龄和性别,但声音名称不会更改。 例如,男性语音可以提高音调和改变语调来模拟女性语音,但语音名称不会更改。 如果角色缺失或不受声音的支持,则会忽略此属性。 可选

下表介绍了每个受支持的 style 属性:

Style 说明
style="advertisement_upbeat" 用兴奋和精力充沛的语气推广产品或服务。
style="affectionate" 以较高的音调和音量表达温暖而亲切的语气。 说话者处于吸引听众注意力的状态。 说话者的个性往往是讨喜的。
style="angry" 表达生气和厌恶的语气。
style="assistant" 数字助理用的是热情而轻松的语气。
style="calm" 以沉着冷静的态度说话。 语气、音调和韵律与其他语音类型相比要统一得多。
style="chat" 表达轻松随意的语气。
style="cheerful" 表达积极愉快的语气。
style="customerservice" 以友好热情的语气为客户提供支持。
style="depressed" 调低音调和音量来表达忧郁、沮丧的语气。
style="disgruntled" 表达轻蔑和抱怨的语气。 这种情绪的语音表现出不悦和蔑视。
style="documentary-narration" 用一种轻松、感兴趣和信息丰富的风格讲述纪录片,适合纪录片、专家评论和类似内容。
style="embarrassed" 在说话者感到不舒适时表达不确定、犹豫的语气。
style="empathetic" 表达关心和理解。
style="envious" 当你渴望别人拥有的东西时,表达一种钦佩的语气。
style="excited" 表达乐观和充满希望的语气。 似乎发生了一些美好的事情,说话人对此满意。
style="fearful" 以较高的音调、较高的音量和较快的语速来表达恐惧、紧张的语气。 说话人处于紧张和不安的状态。
style="friendly" 表达一种愉快、怡人且温暖的语气。 听起来很真诚且满怀关切。
style="gentle" 以较低的音调和音量表达温和、礼貌和愉快的语气。
style="hopeful" 表达一种温暖且渴望的语气。 听起来像是会有好事发生在说话人身上。
style="lyrical" 以优美又带感伤的方式表达情感。
style="narration-professional" 以专业、客观的语气朗读内容。
style="narration-relaxed" 为内容阅读表达一种舒缓而悦耳的语气。
style="newscast" 以正式专业的语气叙述新闻。
style="newscast-casual" 以通用、随意的语气发布一般新闻。
style="newscast-formal" 以正式、自信和权威的语气发布新闻。
style="poetry-reading" 在读诗时表达出带情感和节奏的语气。
style="sad" 表达悲伤语气。
style="serious" 表达严肃和命令的语气。 说话者的声音通常比较僵硬,节奏也不那么轻松。
style="shouting" 表达一种听起来好像声音在远处或在另一个地方的语气,努力让别人听清楚。
style="sports_commentary" 表达一种既轻松又感兴趣的语气,用于播报体育赛事。
style="sports_commentary_excited" 用快速且充满活力的语气播报体育赛事精彩瞬间。
style="whispering" 表达一种柔和的语气,试图发出安静而柔和的声音。
style="terrified" 表达一种害怕的语气,语速快且声音颤抖。 听起来说话人处于不稳定的疯狂状态。
style="unfriendly" 表达一种冷淡无情的语气。

下表描述了每个受支持的 role 属性:

角色 说明
role="Girl" 声音模仿女孩。
role="Boy" 声音模仿男孩。
role="YoungAdultFemale" 声音模仿年轻的成年女性。
role="YoungAdultMale" 声音模仿年轻的成年男性。
role="OlderAdultFemale" 声音模仿年长的成年女性。
role="OlderAdultMale" 声音模仿年长的成年男性。
role="SeniorFemale" 声音模仿年老女性。
role="SeniorMale" 声音模仿年老男性。

mstts express-as 示例

若要了解 mstts:express-as 元素的属性支持的值,请参阅使用讲话风格和角色

风格和程度示例

可使用 mstts:express-as 元素来表达情感(例如愉悦、同情和冷静)。 也可以针对不同场景(例如客户服务、新闻广播和语音助理)优化语音。

以下 SSML 示例使用 sad 风格程度为 2<mstts:express-as> 元素。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="zh-cn">
    <voice name="zh-cn-XiaomoNeural">
        <mstts:express-as style="sad" styledegree="2">
            快走吧,路上一定要注意安全,早去早回。
        </mstts:express-as>
    </voice>
</speak>

角色示例

除了调整说话风格和风格程度,还可调整 role 参数,使语音模拟不同的年龄和性别。 例如,男性语音可以提高音调和改变语调来模拟女性语音,但语音名称不会更改。

此 SSML 片段说明了如何使用 role 属性来更改 zh-cn-XiaomoNeural 的角色扮演。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="zh-cn">
    <voice name="zh-cn-XiaomoNeural">
        女儿看见父亲走了进来,问道:
        <mstts:express-as role="YoungAdultFemale" style="calm">
            “您来的挺快的,怎么过来的?”
        </mstts:express-as>
        父亲放下手提包,说:
        <mstts:express-as role="OlderAdultMale" style="calm">
            “刚打车过来的,路上还挺顺畅。”
        </mstts:express-as>
    </voice>
</speak>

调整讲话语言

默认情况下,多语言语音可以自动检测输入文本的语言,并以输入文本的默认区域设置中的语言说出文本,而无需使用 SSML。 此外,你还可以使用 <lang xml:lang> 元素调整这些语音的说话语言,以设置首选口音,例如表示英国英语的 en-GB。 你可在句子和字词层面调整讲话语言。 若要了解多语言语音支持的语言,请参阅使用 lang 元素的多语言语音,获取一个展示 <lang> 语法和属性定义的表。

下表介绍了 <lang xml:lang> 元素的属性的用法:

属性 说明 必需还是可选
xml:lang 你希望神经网络声音讲述的语言。 调整神经网络声音的讲话语言时必需。 如果使用的是 lang xml:lang,则必须提供区域设置。

注意

<lang xml:lang>元素与 prosodybreak 元素不兼容。 你无法调整此元素中的停顿和韵律,如音调、调型、速率或音量。

非多语言声音在设计上不支持 <lang xml:lang> 元素。

使用 lang 元素的多语言语音

使用多语言语音部分来确定语音服务支持的每个神经语音的语言,如以下示例表格中所示。 如果语音使用的不是输入文本的语言,则语音服务不会输出合成的音频。

语音 自动检测的语言编号 自动检测的语言(区域设置) 所有区域设置编号 SSML 支持的所有语言(区域设置)
en-US-AndrewMultilingualNeural1(男)
en-US-AvaMultilingualNeural1(女)
en-US-BrianMultilingualNeural1(男)
en-US-EmmaMultilingualNeural1(女)
77 南非荷兰语 (af-ZA)、阿尔巴尼亚语 (sq-AL)、阿姆哈拉语 (am-ET)、阿拉伯语 (ar-EG)、亚美尼亚语 (hy-AM)、阿塞拜疆语 (az-AZ)、印度尼西亚语 (id-ID)、孟加拉语 (bn-BD)、巴斯克语 (eu-ES)、孟加拉语 (bn-IN)、波斯尼亚语 (bs-BA)、保加利亚语 (bg-BG)、缅甸语 (my-MM)、加泰罗尼亚语 (ca-ES)、粤语 (zh-HK)、普通话 (zh-cn)、中国台湾话 (zh-TW)、克罗地亚语 (hr-HR)、捷克语 (cs-CZ)、丹麦语 (da-DK)、荷兰语 (nl-NL)、英语 (en-US)、爱沙尼亚语 (et-EE)、菲律宾语 (fil-PH)、芬兰语 (fi-FI)、法语 (fr-FR)、加利西亚语 (gl-ES)、格鲁吉亚语 (ka-GE)、德语 (de-DE)、希腊语 (el-GR)、希伯来语(he-IL)、印度语 (hi-IN)、匈牙利语 (hu-HU)、冰岛语 (is-IS)、爱尔兰语 (ga-IE)、意大利语 (it-IT)、日语 (ja-JP)、爪哇语 (jv-ID)、卡纳达语 (kn-IN)、哈萨克语 (kk-KZ)、高棉语 (km-KH)、韩语 (ko-KR)、老挝语 (lo-LA)、拉脱维亚语 (lv-LV)、立陶宛语 (lt-LT)、马其顿语 (mk-MK)、马来语 (ms-MY)、马拉雅拉姆语 (ml-IN)、马耳他语 (mt-MT)、蒙古语 (mn-MN)、尼泊尔语 (ne-NP)、挪威博克马尔语 (nb-NO)、普什图语 (ps-AF)、波斯语 (fa-IR)、波兰语 (pl-PL)、葡萄牙语 (pt-BR)、罗马尼亚语 (ro-RO)、俄语 (ru-RU)、塞尔维亚语 (sr-RS)、僧伽罗语 (si-LK)、斯洛伐克语 (sk-SK)、斯洛文尼亚语 (sl-SI)、索马里语 (so-SO)、西班牙语 (es-ES)、巽他语 (su-ID)、斯瓦希里语 (sw-KE)、瑞典语 (sv-SE)、泰米尔语 (ta-IN)、泰卢固语 (te-IN)、泰语 (th-TH)、土耳其语 (tr-TR)、乌克兰语 (uk-UA)、乌尔都语 (ur-PK)、乌兹别克语 (uz-UZ)、越南语 (vi-VN)、威尔士语 (cy-GB)、祖鲁语 (zu-ZA) 91 南非荷兰语(南非)(af-ZA), 阿尔巴尼亚语(阿尔巴尼亚)(sq-AL)】阿姆哈拉语(埃塞俄比亚)(am-ET), 阿拉伯语(埃及)(ar-EG)、阿拉伯语(沙特阿拉伯)(ar-SA)、亚美尼亚语(亚美尼亚)(hy-AM)、阿塞拜疆语(阿塞拜疆)(az-AZ)、巴斯克语(巴斯克)(eu-ES)、孟加拉语(印度)(bn-IN)、波斯尼亚语(波斯尼亚和黑塞哥维那)(bs-BA)、保加利亚语(保加利亚)(bg-BG)、缅甸语(缅甸)(my-MM)、加泰罗尼亚语(西班牙)(ca-ES)、中文(粤语、繁体)(zh-HK)、中文(普通话、简体)(zh-cn)、中文(台湾普通话)(zh-TW)、克罗地亚语(克罗地亚)(hr-HR)、捷克语(捷克语)(cs-CZ)、丹麦语(丹麦)(da-DK)、荷兰语(比利时)(nl-BE)、荷兰语(荷兰)(nl-NL)、英语(澳大利亚)(en-AU)、英语(加拿大)(en-CA)、英语(香港特别行政区)(en-HK)、英语(印度)(en-IN)、英语(爱尔兰)(en-IE)、英语(英国)(en-GB)、英语(美国)(en-US)、爱沙尼亚语(爱沙尼亚)(et-EE)、菲律宾语(菲律宾)(fil-PH), 芬兰语(芬兰)(fi-FI)、法语(比利时)(fr-BE)、法语(加拿大)(fr-CA)、法语(法国)(fr-FR)、法语(瑞士)(fr-CH)、加利西亚语(加利西亚)(gl-ES)、格鲁吉亚语(格鲁吉亚)(ka-GE)、德语(澳大利亚)(de-AT)、德语(德国)(de-DE)、德语(瑞士)(de-CH)、希腊语(希腊)(el-GR)、希伯来语(以色列)(he-IL)、印度语(印度)(hi-IN)、匈牙利语(匈牙利)(hu-HU)、冰岛语(冰岛)(is-IS)、印度尼西亚语(印度尼西亚)(id-ID)、爱尔兰语(爱尔兰)(ga-IE)、意大利语(意大利)(it-IT)、日语(日本)(ja-JP)、爪哇语(印度尼西亚)(jv-ID)、卡纳达语(印度)(kn-IN)、哈萨克语(哈萨克斯坦)(kk-KZ)、高棉语(柬埔寨)(km-KH)、韩语(韩国)(ko-KR)、老挝语(老挝)(lo-LA)、拉脱维亚语(拉脱维亚)(lv-LV)、立陶宛语(立陶宛)(lt-LT)、马其顿语(北马其顿)(mk-MK),、马来语(马来西亚)(ms-MY)、马拉雅拉姆语(印度)(ml-IN)、马耳他语(马耳他)(mt-MT)、蒙古语(蒙古)(mn-MN)、尼泊尔语(尼泊尔)(ne-NP)、挪威语(博克马尔语,挪威)(nb-NO)、普什图语(阿富汗)(ps-AF)、波斯语(伊朗)(fa-IR)、波兰语(波兰)(pl-PL)、葡萄牙语(巴西)(pt-BR)、葡萄牙语(葡萄牙)(pt-PT)、罗马尼亚语(罗马尼亚)(ro-RO)、俄语(俄罗斯)(ru-RU)、塞尔维亚语(西里尔文,塞尔维亚)(sr-RS)、僧伽罗语(斯里兰卡)(si-LK)、斯洛伐克语(斯洛伐克)(sk-SK)、斯洛维尼亚语(斯洛维尼亚)(sl-SI)、索马里语(索马里)(so-SO)、西班牙语(墨西哥)(es-MX)、西班牙语(西班牙)(es-ES)、巽他语(印度尼西亚)(su-ID)、斯瓦希里语(肯尼亚)(sw-KE)、瑞典语(瑞典)(sv-SE)、泰米尔语(印度)(ta-IN)、泰卢固语(印度)(te-IN)、泰语(泰国)(th-TH)、土耳其语(土耳其)(tr-TR)、乌克兰语(乌克兰)(uk-UA)、乌尔都语(巴基斯坦)(ur-PK)、乌兹别克语(乌兹别克斯坦)(uz-UZ)、越南语(越南)(vi-VN)、威尔士语(英国)(cy-GB)、祖鲁语(南非)(zu-ZA)

1 这些是 Azure AI 语音中的神经网络多语言语音。 所有多语言语音都可以使用输入文本默认区域设置中的语言说话,而无需使用 SSML。 不过,你仍然可以使用 <lang xml:lang> 元素调整每种语言的口音,以设置首选口音,例如英语的英国口音 (en-GB)。 每个语音的主要区域设置由名称中的前缀(如语音 en-US-AndrewMultilingualNeural)指示,其主要区域设置为 en-US

注意

多语言语音并不完全支持某些 SSML 元素,例如 breakemphasissilencesub

语言示例

若要了解 lang 元素的属性支持的值,请参阅调整口语语言

你必须在 speak 元素内将 en-US 指定为默认语言,无论是否在其他地方调整该语言。 在此示例中,en-US-AvaMultilingualNeural 的主要语言为 en-US

此 SSML 片段演示如何使用 <lang xml:lang>en-US-AvaMultilingualNeural 神经语音说出 de-DE

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
    <voice name="en-US-AvaMultilingualNeural">
        <lang xml:lang="de-DE">
            Wir freuen uns auf die Zusammenarbeit mit Ihnen!
        </lang>
    </voice>
</speak>

speak 元素内,可以为文本转语音输出指定包括 en-US 在内的多种语言。 对于每种调整后的语言,文本必须与该语言匹配并包装在 voice 元素中。 此 SSML 片段演示如何使用 <lang xml:lang> 将讲话语言更改为 es-MXen-USfr-FR

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
    <voice name="en-US-AvaMultilingualNeural">
        <lang xml:lang="es-MX">
            ¡Esperamos trabajar con usted!
        </lang>
        <lang xml:lang="en-US">
           We look forward to working with you!
        </lang>
        <lang xml:lang="fr-FR">
            Nous avons hâte de travailler avec vous!
        </lang>
    </voice>
</speak>

调整韵律

可以使用 prosody 元素来指定文本转语音输出的音高、语调曲线、范围、速率和音量的变化。 prosody 元素可包含文本和以下元素:audiobreakpphonemeprosodysay-assubs

由于韵律属性值可在较大范围内变化,因此,语音识别器会将分配的值解释为所选语音的建议实际韵律值。 文本转语音可限制或替代不支持的值。 例如,音节 1 MHz 或音量 120 就是不支持的值。

下表介绍了 prosody 元素的属性的用法:

属性 说明 必需还是可选
contour 调型表示音节的变化。 这些变化以语音输出中指定时间处的目标数组形式表示。 参数对集定义每个目标。 例如:

<prosody contour="(0%,+20Hz) (10%,-2st) (40%,+10Hz)">

每参数集中的第一个值以文本持续时间百分比的形式指定音节变化的位置。 第二个值使用音节的相对值或枚举值指定音节的升高或降低量(请参阅 pitch)。 音调轮廓不适用于单个词和短短语。 建议调整整个句子或长短语的音调轮廓。
可选
pitch 指示文本的基线音节。 可在句子层面应用音节的变化。 音调变化应为原始音频的 0.5 到 1.5 倍。 可将音调表述为:
  • 绝对值:以某个数字后接“Hz”(赫兹)表示。 例如 <prosody pitch="600Hz">some text</prosody>
  • 相对值:
    • 以相对数字表示:以前面带有“+”或“-”且后接“Hz”或“st”(用于指定音节的变化量)的数字表示。 例如 <prosody pitch="+80Hz">some text</prosody><prosody pitch="-2st">some text</prosody>。 “st”表示变化单位为半音,即,标准全音阶中的半调(半步)。
    • 以百分比表示:以“+”(可选)或“-”开头且后跟“%”的数字表示,指示相对变化。 例如 <prosody pitch="50%">some text</prosody><prosody pitch="-50%">some text</prosody>
  • 常量值:
    • x-low(相当于 0.55,-45%)
    • low(相当于 0.8,-20%)
    • medium(相当于 1,默认值)
    • high(相当于 1.2,+20%)
    • x-high(相当于 1.45,+45%)
可选
range 表示文本音节范围的值。 可使用用于描述 pitch 的相同绝对值、相对值或枚举值表示 range 可选
rate 指示文本的讲出速率。 可在字词或句子层面应用语速。 速率变化应为原始音频的 0.52 倍。 可将 rate 表述为:
  • 相对值:
    • 以相对数字表示:以充当默认值乘数的数字表示。 例如,如果值为 1,则原始速率不会变化。 如果值为 0.5,则速率为原始速率的一半。 如果值为 2,则速率为原始速率的 2 倍。
    • 以百分比表示:以“+”(可选)或“-”开头且后跟“%”的数字表示,指示相对变化。 例如 <prosody rate="50%">some text</prosody><prosody rate="-50%">some text</prosody>
  • 常量值:
    • x-slow(相当于 0.5,-50%)
    • slow(相当于 0.64,-46%)
    • medium(相当于 1,默认值)
    • fast(相当于 1.55,+55%)
    • x-fast(相当于 2,+100%)
可选
volume 指示语音的音量级别。 可在句子层面应用音量的变化。 可将音量表示为:
  • 绝对值:以从 0.0100.0(从最安静到最大声,例如 75)的数字表示。 默认值为 100.0
  • 相对值:
    • 以相对数字表示:以前面带有“+”或“-”的数字表示,指定音量的变化量。 例如 +10-5.5
    • 以百分比表示:以“+”(可选)或“-”开头且后跟“%”的数字表示,指示相对变化。 例如 <prosody volume="50%">some text</prosody><prosody volume="+3%">some text</prosody>
  • 常量值:
    • silent(相当于 0)
    • x-soft(相当于 0.2)
    • soft(相当于 0.4)
    • medium(相当于 0.6)
    • loud(相当于 0.8)
    • x-loud(相当于 1,默认值)
可选

韵律示例

若要了解 prosody 元素的属性支持的值,请参阅调整韵律

更改语速示例

此 SSML 片段演示如何使用 rate 属性将语速更改为比默认语速高 30%。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaMultilingualNeural">
        <prosody rate="+30.00%">
            Enjoy using text to speech.
        </prosody>
    </voice>
</speak>

更改音量示例

此 SSML 片段演示如何使用 volume 属性将音量更改为比默认音量高 20%。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaMultilingualNeural">
        <prosody volume="+20.00%">
            Enjoy using text to speech.
        </prosody>
    </voice>
</speak>

更改音调示例

此 SSML 片段演示如何使用 pitch 属性来以高音调讲话。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaMultilingualNeural">
        Welcome to <prosody pitch="high">Enjoy using text to speech.</prosody>
    </voice>
</speak>

更改音调升降曲线示例

此 SSML 片段演示如何使用 contour 属性更改升降曲线。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaMultilingualNeural">
        <prosody contour="(60%,-60%) (100%,+80%)" >
            Were you the only person in the room?
        </prosody>
    </voice>
</speak>

调整强调

可以使用可选的 emphasis 元素来添加或删除文本的单词级强调。 此元素只能包含文本和以下元素:audiobreakemphasislangphonemeprosodysay-assubvoice

注意

单词级强调优化仅适用于以下神经网络声音:en-US-GuyNeuralen-US-DavisNeuralen-US-JaneNeural

对于音调低且持续时间较短的字词,音调可能不够高,无法引起注意。

下表介绍了 emphasis 元素的属性:

特性 说明 必需还是可选
level 指示要应用的强调强度:
  • reduced
  • none
  • moderate
  • strong

如果未指定 level 属性,则默认级别为 moderate。 有关每个属性的详细信息,请参阅 emphasis 元素
可选

重音示例

若要了解 emphasis 元素的属性支持的值,请参阅调整重音

此 SSML 代码片段演示如何使用 emphasis 元素为单词“meetings”添加中等级别的重音。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
    <voice name="en-US-AndrewMultilingualNeural">
    I can help you join your <emphasis level="moderate">meetings</emphasis> fast.
    </voice>
</speak>

添加录制的音频

audio 元素是可选的。 可以使用它将预先录制的音频插入 SSML 文档。 如果音频文件不可用或不可播放,可在 audio 元素的正文中包含可讲述的纯文本或 SSML 标记。 audio 元素还包含文本和以下元素:audiobreakpsphonemeprosodysay-assub

包含在 SSML 文档中的任何音频必须满足以下要求:

  • 音频文件必须是有效的 *.mp3、*.wav、*.opus、*.ogg、*.flac 或 *.wma 文件。
  • 单个响应中所有文本和音频文件的总时间不能超过 600 秒。
  • 音频不得包含任何客户特定的信息或其他敏感信息。

下表介绍了 audio 元素的属性的用法:

属性 说明 必需还是可选
src 音频文件的 URI 位置。 音频必须托管在可通过 Internet 访问的 HTTPS 终结点上。 需要 HTTPS。 托管文件的域必须提供有效的受信任 TLS/SSL 证书。 应该将音频文件放在文本转语音终结点所在 Azure 区域的 Blob 存储中,以最大程度地减少延迟。 必须

音频示例

若要了解 audio 元素的属性支持的值,请参阅添加录制的音频

此 SSML 代码片段演示如何使用 src 属性插入两个 .wav 文件中的音频。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AvaMultilingualNeural">
        <p>
            <audio src="https://contoso.com/opinionprompt.wav"/>
            Thanks for offering your opinion. Please begin speaking after the beep.
            <audio src="https://contoso.com/beep.wav">
                Could not play the beep, please voice your opinion now.
            </audio>
        </p>
    </voice>
</speak>

调整音频持续时间

使用 mstts:audioduration 元素设置输出音频的持续时间。 使用此元素可帮助同步音频输出完成的时间。 音频持续时间可以在原始音频速率的 0.52 倍之间减少或增加。 原始音频是不包含任何其他速率设置的音频。 语速会根据设定值相应地减慢或加快。

音频持续时间设置应用于其所在 voice 元素中的所有输入文本。 若要再次重置或更改音频持续时间设置,必须使用包含相同或不同语音的新 voice 元素。

下表介绍了 mstts:audioduration 元素的属性的用法:

属性 说明 必需还是可选
value 请求的输出音频持续时间,以秒(例如 2s)或毫秒(例如 2000ms)为单位。

输出音频持续时间的最大值为 300 秒。 此值应介于原始音频的 0.52 倍,没有任何其他速率设置。 例如,如果请求的音频持续时间为 30s,则原始音频必须介于 15 到 60 秒之间。 如果设置的值超出这些界限,则会根据相应的最小或最大倍数设置持续时间。 对于持续时间超过 300 秒的输出音频,首先会生成不带任何其他比率设置的原始音频,然后使用韵律比率计算出调整比率,以达到所需的持续时间。
必须

mstts 音频持续时间示例

若要了解 mstts:audioduration 元素的属性支持的值,请参阅调整音频持续时间

在此示例中,原始音频大约为 15 秒。 mstts:audioduration 元素用于将音频持续时间设置为 20 秒或 20s

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="en-US">
<voice name="en-US-AvaMultilingualNeural">
<mstts:audioduration value="20s"/>
If we're home schooling, the best we can do is roll with what each day brings and try to have fun along the way.
A good place to start is by trying out the slew of educational apps that are helping children stay happy and smash their schooling at the same time.
</voice>
</speak>

添加背景音频

可以使用 mstts:backgroundaudio 元素将背景音频添加到 SSML 文档,或者使用文本转语音来混合音频文件)。 使用 mstts:backgroundaudio,可以在后台循环音频文件,在文本转语音的开头淡入,并在文本转语音的末尾淡出。

如果提供的背景音频短于文本转语音或淡出持续时间,则会循环该音频。 如果其长度超过文本转语音的持续时间,则它在完成淡出后将会停止。

每个 SSML 文档仅允许一个背景音频文件。 可以在 voice 元素中散布 audio 标记,以将更多的音频添加到 SSML 文档。

注意

mstts:backgroundaudio 元素应放在所有 voice 元素的前面。 如果已指定,它必须是 speak 元素的第一个子项。

下表介绍了 mstts:backgroundaudio 元素的属性的用法:

属性 说明 必需还是可选
src 背景音频文件的 URI 位置。 必需
volume 背景音频文件的音量。 接受的值:0100(含)。 默认值为 1 可选
fadein 背景音频淡入的持续时间,以毫秒为单位。 默认值为 0,即,不淡入。 接受的值:010000(含)。 可选
fadeout 背景音频淡出的持续时间,以毫秒为单位。 默认值为 0,即,不淡出。接受的值:010000(含)。 可选

mstss backgroundaudio 示例

若要了解 mstts:backgroundaudi 元素的属性支持的值,请参阅添加背景音频

<speak version="1.0" xml:lang="en-US" xmlns:mstts="http://www.w3.org/2001/mstts">
    <mstts:backgroundaudio src="https://contoso.com/sample.wav" volume="0.7" fadein="3000" fadeout="4000"/>
    <voice name="en-US-AvaMultilingualNeural">
        The text provided in this document will be spoken over the background audio.
    </voice>
</speak>

后续步骤