You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure STT调用返回HTTP/1.1 400 Bad Request错误,求排查解决

Azure语音转文本400 Bad Request错误排查与解决

可能的原因及对应解决方法

1. 请求头Content-Type与实体类型不匹配

代码中设置了CONTENT_TYPE为AUDIO_WAV_TYPE,但请求实体使用的是ContentType.APPLICATION_OCTET_STREAM,这会导致Azure服务无法正确识别音频格式。

  • 解决:将FileEntity的ContentType改为与请求头一致的WAV类型,示例代码:
    request.setEntity(new FileEntity(convert(audio), ContentType.create(AUDIO_WAV_TYPE)));
    

2. API端点地址不正确

Azure语音转文本的REST API需要指定正确的区域和路径,标准格式应为https://<你的区域>.api.cognitive.microsoft.com/speech/recognition/conversation/cognitiveservices/v1。

  • 解决:检查env.getProperty("voice.text.api")返回的地址是否符合官方规范,确认区域(如eastus、southeastasia等)和路径是否完整正确。

3. 音频格式不符合要求

Azure STT要求WAV音频必须满足PCM编码、16kHz采样率、16位深度、单声道,若音频参数不匹配会触发400错误。

  • 解决:
    • 验证audioReq解码后的原始音频是否为标准WAV格式;
    • 检查convert(audio)方法是否完成了正确的格式转换,确保输出文件符合上述参数要求。

4. 订阅密钥与区域不匹配

如果Voice.SubKey1对应的Azure语音资源区域,与API端点的区域不一致,服务会直接拒绝请求。

  • 解决:确认订阅密钥所属资源的区域,与API端点区域保持一致,同时检查密钥是否有效(未过期、未被删除)。

5. 缺少必要的请求参数或头信息

  • 解决:取消注释Accept头设置,确保服务返回格式可被正确处理:
    request.setHeader("Accept","application/json");
    
    同时确认sourceLang参数为BCP-47标准语言代码(如zh-CN、en-US)。

额外排查步骤

当前代码未读取响应体内容,Azure通常会在400错误的响应体中给出具体错误提示,添加以下代码获取详情:

String responseBody = EntityUtils.toString(response.getEntity());
System.out.println("错误详情:" + responseBody);

根据具体提示进一步定位问题。

内容的提问来源于stack exchange,提问作者Vijay Marappan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:43:35