当前位置: 首页 > news >正文

微软语音合成标记语言SSML文档结构和事件(详细文档和实例)

说明:Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

包含输入文本的语音合成标记语言 (SSML) 确定了文本转语音输出的结构、内容和其他特征。 例如,可以使用 SSML 来定义段落、句子、中断/暂停或静音。 可以使用事件标记(例如书签或视素)来包装文本,这些标记可以稍后由应用程序处理。

有关如何在 SSML 文档中构建元素的详细信息,请参阅以下部分。

备注

​ 某些语音不支持所有语音合成标记语言 (SSML) 标记。 这包括神经文本转语音 HD 语音、个人语音和嵌入式语音。 ​

文字转自然语音工具文本转语音(支持标记语言SSML调整语速、音调、发音、停顿)

文档结构

​ SSML 的语音服务实现基于万维网联合会的语音合成标记语言版本 1.0。 ​语音服务支持的元素可能与 W3C 标准不同。

每个 SSML 文档是使用 SSML 元素(或标记)创建的。 这些元素用于调整语音、风格、音节、韵律、音量等。

下面是 SSML 文档的基本结构和语法的子集:

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="string"><mstts:backgroundaudio src="string" volume="string" fadein="string" fadeout="string"/><voice name="string" effect="string"><audio src="string"></audio><bookmark mark="string"/><break strength="string" time="string" /><emphasis level="value"></emphasis><lang xml:lang="string"></lang><lexicon uri="string"/><math xmlns="http://www.w3.org/1998/Math/MathML"></math><mstts:audioduration value="string"/><mstts:ttsembedding speakerProfileId="string"></mstts:ttsembedding><mstts:express-as style="string" styledegree="value" role="string"></mstts:express-as><mstts:silence type="string" value="string"/><mstts:viseme type="string"/><p></p><phoneme alphabet="string" ph="string"></phoneme><prosody pitch="value" contour="value" range="value" rate="value" volume="value"></prosody><s></s><say-as interpret-as="string" format="string" detail="string"></say-as><sub alias="string"></sub></voice>
</speak>

以下列表描述了每个元素中允许的一些内容示例:

  • audio:如果音频文件不可用或不可播放,可在 audio 元素的正文中包含可讲述的纯文本或 SSML 标记。 audio 元素还包含文本和以下元素:audiobreakpsphonemeprosodysay-as 和 sub
  • bookmark:此元素不能包含文本或任何其他元素。
  • break:此元素不能包含文本或任何其他元素。
  • emphasis:此元素可包含文本和以下元素:audiobreakemphasislangphonemeprosodysay-as 和 sub
  • lang:此元素可包含除 mstts:backgroundaudiovoice 和 speak 以外的所有其他元素。
  • lexicon:此元素不能包含文本或任何其他元素。
  • math:此元素只能包含文本和 MathML 元素。
  • mstts:audioduration:此元素不能包含文本或任何其他元素。
  • mstts:backgroundaudio:此元素不能包含文本或任何其他元素。
  • mstts:embedding:此元素可包含文本和以下元素:audiobreakemphasislangphonemeprosodysay-as 和 sub
  • mstts:express-as:此元素可包含文本和以下元素:audiobreakemphasislangphonemeprosodysay-as 和 sub
  • mstts:silence:此元素不能包含文本或任何其他元素。
  • mstts:viseme:此元素不能包含文本或任何其他元素。
  • p:此元素可包含文本和以下元素:audiobreakphonemeprosodysay-assubmstts:express-as 和 s
  • phoneme:此元素只能包含文本,不能包含任何其他元素。
  • prosody:此元素可包含文本和以下元素:audiobreakpphonemeprosodysay-assub 和 s
  • s:此元素可包含文本和以下元素:audiobreakphonemeprosodysay-asmstts:express-as 和 sub
  • say-as:此元素只能包含文本,不能包含任何其他元素。
  • sub:此元素只能包含文本,不能包含任何其他元素。
  • speak:SSML 文档的根元素。 此元素可包含以下元素:mstts:backgroundaudio 和 voice
  • voice:此元素可包含除 mstts:backgroundaudio 和 speak 以外的所有其他元素。

语音服务可自动适当处理停顿(例如,在句号后面暂停片刻),或者在以问号结尾的句子中使用正确的音调。

特殊字符

若要在 SSML 元素的值或文本中使用字符 &< 和 >,则必须使用实体格式。 具体而言,必须使用 &amp; 而不是 &,使用 &lt; 而不是 <,使用 &gt; 而不是 >。 否则,无法正确分析 SSML。

例如,请指定 green &amp; yellow 而不是 green & yellow。 以下 SSML 按预期进行分析:

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US"><voice name="en-US-AvaNeural">My favorite colors are green &amp; yellow.</voice>
</speak>

引号、撇号和括号等特殊字符必须经过转义。

属性值必须用双引号或单引号括起来。 例如,<prosody volume="90"> 和 <prosody volume='90'> 是格式正确的有效元素,但无法识别 <prosody volume=90>

Speak 根元素

speak 元素包含版本、语言和标记词汇定义等信息。 speak 元素是所有 SSML 文档必需的根元素。 必须 在 lang 元 ​素内将 speak 指定为默认语言,无论是否在其他地方调整该语言。

下面是 speak 元素的语法:

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="string"></speak>
属性说明必需还是可选
version指示用于解释文档标记的 SSML 规范的版本。 当前版本为“1.0”。必需
xml:lang根文档的语言。 该值可以包含语言代码,例如 en(英语),也可以包含区域设置,例如 en-US(美国英语)。必需
xmlns用于定义 SSML 文档的标记词汇(元素类型和属性名称)的文档的 URI。 当前 URI 为 "http://www.w3.org/2001/10/synthesis"。

speak 元素必须至少包含一个语音元素。 

speak 示例

前面介绍了 speak 元素属性支持的值。

单个语音的示例

​ 本示例使用 en-US-AvaNeural 语音。 有关更多示例,请参阅语音示例。 ​

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

添加停顿

使用 break 元素替代单词之间的默认中断或暂停行为。 否则,语音服务会自动插入暂停。

下表描述了 break 元素的属性用法。

属性说明必需还是可选
strength使用以下值之一指定暂停的相对持续时间:
  • x-weak
  • weak
  • medium(默认值)
  • strong
  • x-strong
可选
time暂停的绝对持续时间,以秒为单位(例如 2s)或以毫秒为单位(例如 500ms)。 有效值的范围为 0 到 20000 毫秒。 如果设置的值大于支持的最大值,则服务将使用 20000ms。 如果设置了 time 属性,则会忽略 strength 属性。可选

下面是有关该 strength 属性的更多详细信息。

Strength相对持续时间
x-weak250 毫秒
weak500 毫秒
中型750 毫秒
1,000 毫秒
x-strong1,250 毫秒

 

中断示例

介绍了 break 元素属性支持的值。 以下三种方式都会增加 750 毫秒的中断。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US"><voice name="en-US-AvaNeural">Welcome <break /> to text to speech.Welcome <break strength="medium" /> to text to speech.Welcome <break time="750ms" /> to text to speech.</voice>
</speak>

添加静音

使用 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-exactSemicolon-exact 或 Enumerationcomma-exact。 同时使用 WordBoundary 事件和与标点符号相关的静音设置时,与标点符号相关的静音设置不会生效。
必须
Value暂停持续时间,以秒为单位(例如 2s)或以毫秒为单位(例如 500ms)。 有效值的范围为 0 到 20000 毫秒。 如果设置的值大于支持的最大值,则服务将使用 20000ms必须

mstts 静音示例


前面介绍了 mstts:silence 元素属性支持的值。

在本例中,mstts:silence 用于在两个句子之间添加 200 毫秒的静音。 

<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-AvaNeural">
<mstts:silence  type="Sentenceboundary" value="200ms"/>
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:silence 用于在逗号处添加 50 毫秒的静音,在分号处添加 100 毫秒的静音,在枚举逗号处添加 150 毫秒的静音。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="zh-CN">
<voice name="zh-CN-YunxiNeural">
<mstts:silence type="comma-exact" value="50ms"/><mstts:silence type="semicolon-exact" value="100ms"/><mstts:silence type="enumerationcomma-exact" value="150ms"/>你好呀,云希、晓晓;你好呀。
</voice>
</speak>

指定段落和句子

p 和 s 元素分别用于表示段落和句子。 如果缺少这些元素,则语音服务会自动确定 SSML 文档的结构。

段落和句子示例

以下示例定义了两个段落,其中每个段落包含句子。 在第二个段落中,语音服务会自动确定句子结构,因为它们未在 SSML 文档中定义。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US"><voice name="en-US-AvaNeural"><p><s>Introducing the sentence element.</s><s>Used to mark individual sentences.</s></p><p>Another simple paragraph.Sentence structure in this paragraph is not explicitly marked.</p></voice>
</speak>

Bookmark 元素

可以使用 SSML 中的 bookmark 元素来引用文本或标签序列中的特定位置。 然后使用语音 SDK 并订阅 BookmarkReached 事件以获取音频流中每个标记的偏移量。 没有读出 bookmark 元素。 有关详细信息,​请参阅订阅合成器事件。​

下表描述了 bookmark 元素的属性用法。

属性说明必需还是可选
markbookmark 元素的引用文本。必需

 

书签示例


前面介绍了 bookmark 元素属性支持的值。

例如,你可能想知道每个与花相关的词的时间偏移量,如以下代码片段所示:

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US"><voice name="en-US-AvaNeural">We are selling <bookmark mark='flower_1'/>roses and <bookmark mark='flower_2'/>daisies.</voice>
</speak>

 

视素元素

视素是口语中音素的视觉描述。 它定义了一个人说话时面部和嘴巴的位置。 可以使用 SSML 中的 mstts:viseme 元素请求视素输出。 有关详细信息,​请参阅使用视位获取面部位置。​

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

下表描述了 viseme 元素的属性用法。

属性说明必需还是可选
type视素输出的类型。
  • redlips_front – 与视素 ID 和音频偏移输出唇音同步
  • FacialExpression – 混合形状输出
必需

备注

目前,redlips_front 仅支持 en-US 区域设置中的神经网络声音,而 FacialExpression 支持 en-US 和 zh-CN 区域设置中的神经语音。

 

视素示例


前面介绍了 viseme 元素属性支持的值。

此 SSML 代码片段演示如何请求合成语音的混合形状。

<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-AvaNeural"><mstts:viseme type="FacialExpression"/>Rainbow has seven colors: Red, orange, yellow, green, blue, indigo, and violet.</voice>
</speak>

 我的热门文章汇总:

  • 开通微信视频号直播需要满足哪些条件?
  • 彻底永久关闭WIN10系统的自动更新(操作步骤)
  • 视频码率、帧率、分辨率、视频标清、高清、全高清的全面介绍与参考表
  • Thinkpad电脑系列产品进入Bios设置和U盘启动(重装系统)
  • 网线水晶头接法图解详细8根线芯顺序排序图示

我的在线教育原创文章汇总:

  • Vue3框架对接保利威云点播播放器的实践(实例)
  • 视频点播web端AI智能大纲(自动生成视频内容大纲)的代码与演示
  • html5视频播放器的断点续播和记忆播放是如何做的?
  • 视频安全之视频防盗链和视频防盗录
  • 课程学习网站视频禁止拖拽快进是如何做的?
  • 数字化动态ID做随机水印实现视频防录屏的效果
  • 在线教育视频中实用的视频问答互动(应用实例)
  • 教培机构在线视频播放器的视频问答功能(视频弹题、问答播放)的实现
  • 视频加密:教育机构视频培训内容如何做视频加密?

我的谷歌浏览器相关文章汇总:

  • 如何在Google Chrome浏览器中禁用密码联想与保存功能
  • 谷歌google网页索引编制报告的介绍
  • 谷歌Google抓取视频使用受支持的视频文件类型
  • Chrome 浏览器调试日志查询
  • 前端实现页面自动播放音频方法
http://www.lryc.cn/news/585022.html

相关文章:

  • Unity Demo——3D平台跳跃游戏笔记
  • WHQL认证失败怎么办?企业如何高效申请
  • LeetCode 148 排序链表解析:高效归并排序实现
  • 基于Springboot+UniApp+Ai实现模拟面试小工具二:后端项目搭建
  • 【数据结构与算法】203.移除链表元素(LeetCode)图文详解
  • doker和网站部署
  • LeetCode--43.字符串相乘
  • Kotlin 常用语法糖完整整理
  • 九联UNT403AS_S905L3SB当贝固件优盘刷机包下载
  • 9、鸿蒙Harmony Next开发:栅格布局 (GridRow/GridCol)
  • AI产品经理面试宝典第7天:核心算法面试题-上
  • 在 Spring Boot 中使用 WebMvcConfigurer
  • AI技术正以前所未有的速度重塑职业生态与行业格局,尤其在自动化测试领域,AI驱动的测试框架通过智能化、低代码化重构传统测试流程。
  • python solr数据导出脚本
  • 分割网络Segformer
  • 界面组件DevExpress WPF中文教程:Grid - 如何检查节点?
  • mongodb 开源同步工具介绍
  • Windows 应用程序的 UI 框架:WPF、WinUI 3 和 UWP的差异区别
  • Django--02模型和管理站点
  • 【三】ObservableCollection 与 List 的区别
  • 【EGSR2025】材质+扩散模型+神经网络相关论文整理随笔(四)
  • (二)OpenCV——边缘增强与检测
  • 大数据在UI前端的应用创新:基于用户反馈的产品迭代优化系统
  • PPT处理控件Aspose.Slides教程:使用 C# 将 PPTX 转换为 EMF
  • 游戏的程序员会不会偷偷改自己账号的数据?
  • TypeScript---class类型
  • 工业通信升级新选择:耐达讯CCLINKIE转Modbus TCP网关
  • 猿人学js逆向比赛第一届第十九题
  • U-Net网络学习笔记(1)
  • 2025亚太中文赛项 B题疾病的预测与大数据分析保姆级教程思路分析