Azure文本转语音报错1007:SSML语音元素数量不符咨询
解决Azure文本转语音Error 1007(Voice元素超限)问题
排查方向1:检查嵌套的<voice>元素
Azure文本转语音服务会将嵌套的<voice>元素分别计数,比如:
<voice name="en-US-JennyNeural"> 基础文本 <voice name="zh-CN-YunxiNeural">嵌套的语音片段</voice> </voice>
这里外层和内层的<voice>都会被计入总数,若存在大量嵌套结构,实际计数会远高于你表面统计的数量。建议移除不必要的嵌套,改用平级结构组织文本。
排查方向2:验证实际生成的SSML标签数量
可能是代码生成SSML时出现逻辑错误,重复添加了<voice>标签。将最终生成的SSML内容导出,用文本编辑器的查找功能统计<voice>的出现次数(服务计数的是<voice>开始标签的数量),确认实际数量是否真为45。
排查方向3:合并同语音的文本块
如果多个连续文本块使用同一语音,不要拆分多个<voice>标签,合并为单个标签包裹:
- 错误示例:
<voice name="en-US-JennyNeural">文本1</voice> <voice name="en-US-JennyNeural">文本2</voice> <voice name="en-US-JennyNeural">文本3</voice>
- 正确示例:
<voice name="en-US-JennyNeural">文本1文本2文本3</voice>
这种方式能大幅减少<voice>元素数量,避免触发上限。
排查方向4:拆分SSML请求
如果确实需要使用大量不同语音的文本块,将整个SSML拆分为多个独立请求,每个请求的<voice>元素控制在50以内,之后再将生成的音频文件合并。
内容的提问来源于stack exchange,提问作者Yuriy N.
相关产品推荐
相关产品推荐

