Amazon Polly字符上限提升后音频生成异常问题咨询
我之前在调整Polly字符上限时也踩过类似的坑,给你几个实际可行的排查和解决思路:
排查隐藏/非标准字符的字符数占用
Polly的字符计数是包含所有Unicode字符的,包括换行符、空格、全角符号、表情甚至一些不可见的控制字符。你看到的2450个可见字符,加上这些隐藏字符后可能已经悄悄超过了3000的上限。建议你在调用Polly前,先统计**完整输入字符串(包括用户输入+程序自动添加内容)**的实际字符数,比如用代码里的字符串长度函数(比如Python的len()、Java的length())来确认总长度是否在3000以内。重新评估程序自动添加内容的字符数
之前你预留了50字符的自动添加空间,但现在可能自动添加的内容变多了——比如某些场景下会额外插入SSML标签、提示语或者格式标记。比如用户输入2950字符,加上自动添加的60字符,总长度就到3010,直接触发Polly的上限限制。建议你实际统计一下程序自动添加内容的最大可能字符数,再调整用户输入上限,比如如果自动添加最多100字符,那用户输入上限设为2900会更稳妥。补全API调用的错误处理逻辑
当Polly检测到字符数超限,会返回ValidationException(不同SDK的异常类型可能略有不同),如果你的程序没有捕获这个异常,就可能直接生成空文件。建议你在调用Polly的代码块里添加异常捕获:当触发超限错误时,给用户返回明确提示(比如“输入内容过长,请缩减至XXX字符以内”),而不是生成无效的空音频。注意SSML标签的字符计数
如果你的应用使用了SSML格式来控制语音效果,那<speak>、<prosody>这些标签本身的字符也会被算入总字符数。比如用户输入的纯文本是2450,但加上SSML标签后总长度可能突破3000。这种情况下,要把标签的字符数也纳入统计范围,再调整你的输入上限。
快速验证方法:
找一段纯文本(不含任何特殊字符、SSML标签),刚好凑够3000字符,调用Polly生成音频。如果能正常生成,说明问题出在你的输入内容或自动添加部分;如果还是空音频,那可能需要检查你的API调用参数是否正确(比如是否误传了空参数,或者区域配置有问题)。
内容的提问来源于stack exchange,提问作者jumpingmaniac

