调用Azure Speech Rest API含<mstts:express-as>标签返回400错误
解决Azure Speech API添加SSML风格标签后400错误
问题分析与修复步骤
1. 修正mstts命名空间协议
你当前SSML里的xmlns:mstts用了HTTPS地址,而Azure Speech API要求必须是HTTP协议的命名空间,这是导致解析错误的常见原因。修改为:
xmlns:mstts="http://www.w3.org/2001/mstts"
2. 确认语音模型支持指定风格
zh-CN-YunxiNeural支持的情感风格包含sad,但如果还是报错,可以换用该模型明确支持的其他风格(比如cheerful、gentle)测试,排除风格不兼容问题。
3. 检查请求头Content-Type
发送请求时必须设置Content-Type: application/ssml+xml,否则API无法正确识别并解析SSML内容。
修复后的完整SSML
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <speak xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" lang="zh-CN" version="1.0"> <voice name="zh-CN-YunxiNeural"> <mstts:express-as style="sad">快走吧, 路上一定要注意安全,早去早回。</mstts:express-as> </voice> </speak>
额外排查项
- 确认你的Azure Speech资源所在的eastus区域支持
zh-CN-YunxiNeural语音模型; - 检查请求体中的SSML是否存在多余转义(比如示例里的
"是HTML转义,发送时要确保是原生双引号,或者保证请求体格式正确)。
内容的提问来源于stack exchange,提问作者liuhaiqi
相关产品推荐
相关产品推荐

