使用语音合成标记语言
虽然 Azure AI 语音 SDK 使你可以提交要合成为语音的纯文本(例如使用 SpeakTextAsync() 方法),不过该服务还支持基于 XML 的语法,用于描述要生成的语音的特征。 通过此语音合成标记语言 (SSML) 语法可更好地控制口述输出的声音,使你可以:
- 指定说话风格,如使用神经语音时的“兴奋”或“愉快”。
- 插入暂停或静默。
- 指定 音素(拼音发音),例如将文本“SQL”发音为“sequel”。
- 调整语音的韵律(影响音调、音色和说话速率)。
- 使用常见的“表达为”规则,例如用于指定应将给定字符串表示为日期、时间、电话号码或其他形式。
- 插入录制的语音或音频,例如包含标准录制消息或模拟背景噪音。
例如,考虑以下 SSML:
<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-AriaNeural">
<mstts:express-as style="cheerful">
I say tomato
</mstts:express-as>
</voice>
<voice name="en-US-GuyNeural">
I say <phoneme alphabet="sapi" ph="t ao m ae t ow"> tomato </phoneme>.
<break strength="weak"/>Lets call the whole thing off!
</voice>
</speak>
此 SSML 指定两个不同神经语音之间的口述对话,如下所示:
- Ariana (cheerfully): "I say tomato:
- Guy: "I say tomato (pronounced tom-ah-toe) ... Let's call the whole thing off!"
若要向语音服务提交 SSML 说明,可以使用 SpeakSsmlAsync() 方法,如下所示:
speechSynthesizer.SpeakSsmlAsync(ssml_string);
有关 SSML 的详细信息,请参阅 Azure AI 语音 SDK 文档。