You need to enable JavaScript to run this app. Java调用微软认知服务TTS接口提交SSML返回8004507A解析错误问题
优惠活动
大模型
产品
解决方案
定价
更多

Java调用微软认知服务TTS接口提交SSML返回8004507A解析错误问题

问题根因

你遇到的8004507A错误代表SSML解析失败,核心问题出在StringEntity的默认编码配置:
Apache HttpClient的StringEntity无指定编码的构造方法默认使用ISO-8859-1编码,你提交的SSML中phoneme标签的IPA音标təˈmeɪtoʊ包含大量非ASCII字符,用该编码传输会出现乱码,导致微软TTS服务端无法正常解析SSML。Postman提交raw格式请求时默认使用UTF-8编码,因此不会出现该问题。

修复方案

仅需修改StringEntity的构造参数,显式指定UTF-8编码即可,修改后的代码如下:

HttpPost httpPost = new HttpPost("https://eastus.tts.speech.microsoft.com/cognitiveservices/v1");
// 显式指定字符串编码为UTF-8,避免特殊字符乱码
httpPost.setEntity(new StringEntity(xml, java.nio.charset.StandardCharsets.UTF_8));
// 也可在Content-Type头中补充编码声明,进一步兼容服务端解析
httpPost.addHeader("Content-Type", "application/ssml+xml; charset=utf-8");
httpPost.addHeader("Ocp-Apim-Subscription-Key", key);
httpPost.addHeader("X-Microsoft-OutputFormat", "audio-48khz-192kbitrate-mono-mp3");
org.apache.http.HttpResponse resp = httpclient.execute(httpPost);

如果你的Java版本低于7,不支持StandardCharsets.UTF_8,可以替换为字符串形式的编码声明:new StringEntity(xml, "UTF-8")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 05:45:04