微软语音合成标记语言SSML文档结构和事件(详细文档和实例)
说明:Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn
包含输入文本的语音合成标记语言 (SSML) 确定了文本转语音输出的结构、内容和其他特征。 例如,可以使用 SSML 来定义段落、句子、中断/暂停或静音。 可以使用事件标记(例如书签或视素)来包装文本,这些标记可以稍后由应用程序处理。
有关如何在 SSML 文档中构建元素的详细信息,请参阅以下部分。
备注
某些语音不支持所有语音合成标记语言 (SSML) 标记。 这包括神经文本转语音 HD 语音、个人语音和嵌入式语音。
文字转自然语音工具文本转语音(支持标记语言SSML调整语速、音调、发音、停顿)
文档结构
SSML 的语音服务实现基于万维网联合会的语音合成标记语言版本 1.0。 语音服务支持的元素可能与 W3C 标准不同。
每个 SSML 文档是使用 SSML 元素(或标记)创建的。 这些元素用于调整语音、风格、音节、韵律、音量等。
下面是 SSML 文档的基本结构和语法的子集:
以下列表描述了每个元素中允许的一些内容示例:
audio
:如果音频文件不可用或不可播放,可在audio
元素的正文中包含可讲述的纯文本或 SSML 标记。audio
元素还包含文本和以下元素:audio
、break
、p
、s
、phoneme
、prosody
、say-as
和sub
。bookmark
:此元素不能包含文本或任何其他元素。break
:此元素不能包含文本或任何其他元素。emphasis
:此元素可包含文本和以下元素:audio
、break
、emphasis
、lang
、phoneme
、prosody
、say-as
和sub
。lang
:此元素可包含除mstts:backgroundaudio
、voice
和speak
以外的所有其他元素。lexicon
:此元素不能包含文本或任何其他元素。math
:此元素只能包含文本和 MathML 元素。mstts:audioduration
:此元素不能包含文本或任何其他元素。mstts:backgroundaudio
:此元素不能包含文本或任何其他元素。mstts:embedding
:此元素可包含文本和以下元素:audio
、break
、emphasis
、lang
、phoneme
、prosody
、say-as
和sub
。mstts:express-as
:此元素可包含文本和以下元素:audio
、break
、emphasis
、lang
、phoneme
、prosody
、say-as
和sub
。mstts:silence
:此元素不能包含文本或任何其他元素。mstts:viseme
:此元素不能包含文本或任何其他元素。p
:此元素可包含文本和以下元素:audio
、break
、phoneme
、prosody
、say-as
、sub
、mstts:express-as
和s
。phoneme
:此元素只能包含文本,不能包含任何其他元素。prosody
:此元素可包含文本和以下元素:audio
、break
、p
、phoneme
、prosody
、say-as
、sub
和s
。s
:此元素可包含文本和以下元素:audio
、break
、phoneme
、prosody
、say-as
、mstts:express-as
和sub
。say-as
:此元素只能包含文本,不能包含任何其他元素。sub
:此元素只能包含文本,不能包含任何其他元素。speak
:SSML 文档的根元素。 此元素可包含以下元素:mstts:backgroundaudio
和voice
。voice
:此元素可包含除mstts:backgroundaudio
和speak
以外的所有其他元素。
语音服务可自动适当处理停顿(例如,在句号后面暂停片刻),或者在以问号结尾的句子中使用正确的音调。
特殊字符
若要在 SSML 元素的值或文本中使用字符 &
、<
和 >
,则必须使用实体格式。 具体而言,必须使用 &
而不是 &
,使用 <
而不是 <
,使用 >
而不是 >
。 否则,无法正确分析 SSML。
例如,请指定 green & yellow
而不是 green & yellow
。 以下 SSML 按预期进行分析:
My favorite colors are green & yellow.
引号、撇号和括号等特殊字符必须经过转义。
属性值必须用双引号或单引号括起来。 例如, 和
是格式正确的有效元素,但无法识别
。
Speak 根元素
speak
元素包含版本、语言和标记词汇定义等信息。 speak
元素是所有 SSML 文档必需的根元素。 必须 在 lang 元 素内将 speak
指定为默认语言,无论是否在其他地方调整该语言。
下面是 speak
元素的语法:
version
xml:lang
en
(英语),也可以包含区域设置,例如 en-US
(美国英语)。xmlns
speak 元素必须至少包含一个语音元素。
speak 示例
前面介绍了 speak 元素属性支持的值。
单个语音的示例
本示例使用 en-US-AvaNeural 语音。 有关更多示例,请参阅语音示例。
This is the text that is spoken.
添加停顿
使用 break
元素替代单词之间的默认中断或暂停行为。 否则,语音服务会自动插入暂停。
下表描述了 break
元素的属性用法。
strength
- x-weak
- weak
- medium(默认值)
- strong
- x-strong
time
2s
)或以毫秒为单位(例如 500ms
)。 有效值的范围为 0 到 20000 毫秒。 如果设置的值大于支持的最大值,则服务将使用 20000ms
。 如果设置了 time
属性,则会忽略 strength
属性。下面是有关该 strength
属性的更多详细信息。
中断示例
介绍了 break
元素属性支持的值。 以下三种方式都会增加 750 毫秒的中断。
Welcome to text to speech. Welcome to text to speech. Welcome to text to speech.
添加静音
使用 mstts:silence
元素在文本前后,或者在两个相邻句子之间添加暂停。
mstts:silence
和 break
之间的差别之一是,break
元素可以插入到文本中的任意位置。 静音仅适用于输入文本的开头或结尾,或者两个相邻句子的分界处。
静默设置应用于其所在 voice
元素内的所有输入文本。 若要再次重置或更改静音设置,必须使用包含相同或不同语音的新 voice
元素。
下表描述了 mstts:silence
元素的属性用法。
type
Leading
– 文本开头的附加静音。 设置的值将添加到文本开始前的自然静音中。Leading-exact
– 文本开头的静音。 该值是绝对静音长度。Tailing
– 文本末尾的附加静音。 设置的值将添加到最后一个单词后的自然静音中。Tailing-exact
– 文本末尾的静音。 该值是绝对静音长度。Sentenceboundary
– 相邻句子之间的附加静音。 此类型的实际静音长度包括上一个句子中最后一个单词后的自然静音、为此类型设置的值,以及下一个句子中起始单词之前的自然静音。Sentenceboundary-exact
- 相邻句子之间的静音。 该值是绝对静音长度。Comma-exact
- 半角或全角格式的逗号处的静音。 该值是绝对静音长度。Semicolon-exact
- 半角或全角格式的分号处的静音。 该值是绝对静音长度。Enumerationcomma-exact
- 全角格式的枚举逗号处的静音。 该值是绝对静音长度。
绝对静音类型(带有 -exact
后缀)替换其他任何自然前导或尾随静音。 绝对静音类型优先于相应的非绝对静音类型。 例如,如果同时设置了 Leading
和 Leading-exact
类型,则 Leading-exact
类型将生效。 WordBoundary 事件优先于标点符号相关的静音设置,包括 Comma-exact
、Semicolon-exact
或 Enumerationcomma-exact
。 同时使用 WordBoundary
事件和与标点符号相关的静音设置时,与标点符号相关的静音设置不会生效。
Value
2s
)或以毫秒为单位(例如 500ms
)。 有效值的范围为 0 到 20000 毫秒。 如果设置的值大于支持的最大值,则服务将使用 20000ms
。mstts 静音示例
前面介绍了 mstts:silence
元素属性支持的值。
在本例中,mstts:silence
用于在两个句子之间添加 200 毫秒的静音。
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.
在此示例中,mstts:silence
用于在逗号处添加 50 毫秒的静音,在分号处添加 100 毫秒的静音,在枚举逗号处添加 150 毫秒的静音。
你好呀,云希、晓晓;你好呀。
指定段落和句子
p
和 s
元素分别用于表示段落和句子。 如果缺少这些元素,则语音服务会自动确定 SSML 文档的结构。
段落和句子示例
以下示例定义了两个段落,其中每个段落包含句子。 在第二个段落中,语音服务会自动确定句子结构,因为它们未在 SSML 文档中定义。
Introducing the sentence element. Used to mark individual sentences.
Another simple paragraph. Sentence structure in this paragraph is not explicitly marked.
Bookmark 元素
可以使用 SSML 中的 bookmark
元素来引用文本或标签序列中的特定位置。 然后使用语音 SDK 并订阅 BookmarkReached
事件以获取音频流中每个标记的偏移量。 没有读出 bookmark
元素。 有关详细信息,请参阅订阅合成器事件。
下表描述了 bookmark
元素的属性用法。
mark
bookmark
元素的引用文本。
书签示例
前面介绍了 bookmark
元素属性支持的值。
例如,你可能想知道每个与花相关的词的时间偏移量,如以下代码片段所示:
We are selling roses and daisies.
视素元素
视素是口语中音素的视觉描述。 它定义了一个人说话时面部和嘴巴的位置。 可以使用 SSML 中的 mstts:viseme
元素请求视素输出。 有关详细信息,请参阅使用视位获取面部位置。
视素设置应用于其所在 voice
元素中的所有输入文本。 若要再次重置或更改视素设置,必须使用包含相同或不同语音的新 voice
元素。
下表描述了 viseme
元素的属性用法。
type
redlips_front
– 与视素 ID 和音频偏移输出唇音同步FacialExpression
– 混合形状输出
备注
目前,redlips_front
仅支持 en-US
区域设置中的神经网络声音,而 FacialExpression
支持 en-US
和 zh-CN
区域设置中的神经语音。
视素示例
前面介绍了 viseme
元素属性支持的值。
此 SSML 代码片段演示如何请求合成语音的混合形状。
Rainbow has seven colors: Red, orange, yellow, green, blue, indigo, and violet.
我的热门文章汇总:
- 开通微信视频号直播需要满足哪些条件?
- 彻底永久关闭WIN10系统的自动更新(操作步骤)
- 视频码率、帧率、分辨率、视频标清、高清、全高清的全面介绍与参考表
- Thinkpad电脑系列产品进入Bios设置和U盘启动(重装系统)
- 网线水晶头接法图解详细8根线芯顺序排序图示
我的在线教育原创文章汇总:
- Vue3框架对接保利威云点播播放器的实践(实例)
- 视频点播web端AI智能大纲(自动生成视频内容大纲)的代码与演示
- html5视频播放器的断点续播和记忆播放是如何做的?
- 视频安全之视频防盗链和视频防盗录
- 课程学习网站视频禁止拖拽快进是如何做的?
- 数字化动态ID做随机水印实现视频防录屏的效果
- 在线教育视频中实用的视频问答互动(应用实例)
- 教培机构在线视频播放器的视频问答功能(视频弹题、问答播放)的实现
- 视频加密:教育机构视频培训内容如何做视频加密?
我的谷歌浏览器相关文章汇总:
- 如何在Google Chrome浏览器中禁用密码联想与保存功能
- 谷歌google网页索引编制报告的介绍
- 谷歌Google抓取视频使用受支持的视频文件类型
- Chrome 浏览器调试日志查询
- 前端实现页面自动播放音频方法