SSML示例详解
## 这是个人常用的SSML模板 ```xml <speak version="1.0" xmlns
渲染中...
## 这是个人常用的SSML模板
```xml
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:mstts="https://www.w3.org/2001/mstts"
xmlns:emo="http://www.w3.org/2009/10/emotionml"
xml:lang="zh-CN">
<voice name="{voice_model}" rate="{voice_speed}"> <!-- 动态赋值音频模型 和 语速 -->
<mstts:silence type="Leading" value="1000ms"/> <!-- # 文本开头的附加静音 -->
<mstts:silence type="Tailing" value="1000ms"/> <!-- # 文本末尾的静音 -->
<mstts:silence type="Sentenceboundary" value="1000ms"/> <!-- # 在两个句子之间添加 1000 毫秒的静音 -->
<mstts:silence type="Comma" value="300ms"/> <!-- # 逗号处添加 300 毫秒的静音 -->
<mstts:silence type="Semicolon" value="500ms"/> <!-- # 分号处添加 500 毫秒的静音 -->
<mstts:silence type="Enumerationcomma" value="300ms"/> <!-- # 枚举逗号处添加 300 毫秒的静音 -->
<mstts:express-as style="sad" styledegree="2"> <!-- 情感、风格使用示例 -->
快走吧,路上一定要注意安全,早去早回。
</mstts:express-as>
<break time="1s" /> <!-- # 开头默认停顿1秒 -->
{voice_text} <!-- 动态赋值要转换的文本 -->
</voice>
</speak>
```
<!-- more -->
## Azure文档示例
这里记录Azure官方给出的文档示例及相关说明。官方文档链接:[SSML文档](https://learn.microsoft.com/zh-cn/azure/ai-services/speech-service/speech-synthesis-markup-structure)
### 示例
```xml
<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` 元素还包含文本和以下元素:`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 按预期进行分析:
```xml
<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 & yellow.
</voice>
</speak>
```
引号、撇号和括号等特殊字符必须经过转义。 有关详细信息,请参阅[可扩展标记语言 (XML) 1.0:附录 D](https://www.w3.org/TR/xml/#sec-entexpand)。
属性值必须用双引号或单引号括起来。 例如,`<prosody volume="90">` 和 `<prosody volume='90'>` 是格式正确的有效元素,但无法识别 `<prosody volume=90>`。
#### 主动停顿
使用 `break` 元素替代单词之间的默认中断或暂停行为。 否则,语音服务会根据文本自动插入暂停。
主动停顿示例:
```xml
<break time="1s" />
```
`break` 元素可以有两个可选属性:
- `strength`:使用以下值之一指定暂停的相对持续时间:`x-weak`、`weak`、`medium`(默认值)、`strong`、`x-strong`。
- `time`:暂停的绝对持续时间,以秒为单位(例如 `2s`)或以毫秒为单位(例如 `500ms`)。 有效值的范围为 `0` 到 `5000` 毫秒。 如果设置的值大于支持的最大值,则服务将使用 `5000ms`。 如果设置了 `time` 属性,则会忽略 `strength` 属性。END
评论
登录后查看和发表评论
前往登录