You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SSML指令调整TTS语音输出失效问题排查

问题原因与解决办法

核心问题:TTS引擎不支持<emphasis>标签

你使用的System.Speech.Synthesis.SpeechSynthesizer默认调用Windows内置的基础TTS引擎(比如早期的Microsoft Anna),这类引擎对SSML的支持非常有限,完全不识别<emphasis>这类韵律控制标签,所以修改emphasis等级后发音没有任何变化。

具体解决步骤

  • 切换到支持SSML的TTS引擎
    先查看系统中已安装的支持SSML的引擎(比如Microsoft David Desktop、Microsoft Zira Desktop,Windows 10/11的新引擎都支持),在命令中指定该引擎:
    修改后的批处理命令:

    powershell.exe "Add-Type -AssemblyName System.Speech; $synth = New-Object -TypeName System.Speech.Synthesis.SpeechSynthesizer; $synth.SelectVoice('Microsoft David Desktop'); $ssml = Get-Content -Path '%userprofile%\ssml.txt' -Raw; $synth.SpeakSsml($ssml)"
    

    可以用以下PowerShell命令列出所有可用引擎名称:

    Add-Type -AssemblyName System.Speech; $synth = New-Object System.Speech.Synthesis.SpeechSynthesizer; $synth.GetInstalledVoices() | ForEach-Object { $_.VoiceInfo.Name }
    
  • 确保SSML文件编码正确
    你的SSML语法没问题,但要保证文件是UTF-8编码(无BOM),否则可能出现解析错误。用记事本打开ssml.txt,选择“另存为”,编码选UTF-8后保存。

  • 修正批处理路径转义
    原命令中\"%userprofile%\ssml.txt\"的转义容易出问题,改用单引号包裹路径可以避免批处理和PowerShell的转义冲突,如上面的修改后的命令所示。

内容的提问来源于stack exchange,提问作者user2956477

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 07:48:40