微软 AI 声音怎么控制停顿?用 SSML 核对语速与朗读内容

用Azure合成同一句的停顿和语速版本并核对读音,同时核对输入与输出边界。

微软语音合成的停顿与语速可通过 SSML 控制。要让导览句子在“注意”后停一下,结构化标签比在文字里连续加逗号更容易复核。本文依据 Azure Speech 文档给出 XML 与调用方式;未调用服务,音色支持和最终读音需用自己的资源验证。

先确认音色与语言

在当前资源的音色列表中选择支持 zh-CN 和所需 SSML 标签的音色,将名称保存为 AZURE_SPEECH_VOICE。不同声音,尤其部分 HD 声音,对标签的支持并不相同。不要把一个音色支持的情绪风格复制给另一个音色就当成有效;本例仅控制 break 与 prosody。

微软 AI 声音怎么控制停顿?用 SSML 核对语速与朗读内容

把停顿写成标签

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="zh-CN">
  <voice name="替换为当前资源支持的音色名称">
    注意。<break time="500ms"/>
    <prosody rate="-10%">请在展柜外观看,不要触摸展品。</prosody>
  </voice>
</speak>

保存为 ssml.xml 并替换音色名。这里的 500ms 与 -10% 是试验输入,不是实际测得的停顿和语速。XML 特殊字符如 & 需转义为 &amp;,不能把整段标签作为普通朗读文字提交。

使用 SSML 专用入口并核对状态

import os
import azure.cognitiveservices.speech as s
config = s.SpeechConfig(subscription=os.environ["AZURE_SPEECH_KEY"],
                        region=os.environ["AZURE_SPEECH_REGION"])
audio = s.audio.AudioOutputConfig(filename="guide.wav")
synth = s.SpeechSynthesizer(speech_config=config, audio_config=audio)
xml = open("ssml.xml", encoding="utf-8-sig").read()
result = synth.speak_ssml_async(xml).get()
if result.reason != s.ResultReason.SynthesizingAudioCompleted:
    raise RuntimeError(str(s.SpeechSynthesisCancellationDetails(result)))

官方指出带 BOM 的 XML 字符串可能报错,因此按 utf-8-sig 读取。状态检查要先于“导出成功”的判断,空文件或取消结果不能当作音频完成。

对比两个版本再决定参数

另存无 break、无 prosody 的基础版,保持文字与音色一致,听辨“注意”后是否更清楚、整句是否拖沓,检查“展柜”等词是否误读。音色不支持标签时查文档和取消详情;标签生效但不自然时只改变一个参数。下一步使用确认过的版本试听真实场景,不把示例数值当所有配音的默认设置。

参考资料

依据 2026-10-03 读取的官方资料整理:官方文档 1;官方文档 2;官方文档 3。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/33098.html

赞 (0)
AI小管家的头像AI小管家
AI 语音打分能看出什么?用 Azure 发音评估核对音素错误
上一篇 2小时前
已有旋律怎么续写成 MIDI?用 MusicRNN 核对音符与节奏
下一篇 2小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部