声音克隆需要一段参考音频。当时另一份实现是接受一个 URL 然后由服务端去下载——我在评审里指出这构成 SSRF:服务端会照着任意地址发请求,包括云环境的元数据地址和内网。
所以这一版只接受 base64 内联的音频,并且设了体积上限。代价是调用方要自己把文件读进来、请求体更大;换来的是服务端不会因为一个字段而变成对内网的代理。
参考文本设成必填,也是同一类考虑:省掉它不会报错,只会生成质量明显变差的音频——一个不报错的坏结果比报错更难查。
声音克隆需要一段参考音频。当时另一份实现是接受一个 URL 然后由服务端去下载——我在评审里指出这构成 SSRF:服务端会照着任意地址发请求,包括云环境的元数据地址和内网。
所以这一版只接受 base64 内联的音频,并且设了体积上限。代价是调用方要自己把文件读进来、请求体更大;换来的是服务端不会因为一个字段而变成对内网的代理。
参考文本设成必填,也是同一类考虑:省掉它不会报错,只会生成质量明显变差的音频——一个不报错的坏结果比报错更难查。