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

请求排查OpenAI Transcription API返回400 Bad Request错误

调用OpenAI Transcription API返回400 Bad Request的排查方案

以下是几个常见的排查方向和解决方法:

  • 音频文件格式不兼容
    Whisper-1对MP3的编码有明确要求,必须是标准MPEG-1 Layer 3编码,建议采用16kHz采样率、单声道配置。如果你的MP3是异常编码(比如VBR参数错误、非标准采样率),会触发400错误。
    解决:用ffmpeg转码为标准格式,执行命令:

    ffmpeg -i input.mp3 -acodec libmp3lame -ar 16000 -ac 1 output.mp3
    
  • 请求参数传递错误
    OpenAI Node.js SDK的createTranscription参数顺序可能随版本变化,直接按位置传参容易出错。参数顺序不匹配会导致API无法识别字段,返回400错误。
    解决:改用命名参数明确指定每个字段,避免顺序问题:

    async function transcribeAudio() {
      const configuration = new Configuration({
        apiKey: process.env.OPENAI_API_KEY,
      });
    
      const openai = new OpenAIApi(configuration);
    
      const response = await openai.createTranscription(
        fs.createReadStream('./audio.mp3'),
        "whisper-1",
        {
          prompt: undefined,
          response_format: 'json',
          temperature: 1,
          language: 'en'
        }
      );
    }
    

    另外,temperature参数有效值为0-1,虽然1在范围内,但部分场景下可尝试改为0测试是否能正常请求。

  • 文件流读取异常
    即使文件存在,相对路径可能因脚本执行目录不同导致读取失败,或者文件权限不足导致API接收到空流/损坏数据,引发400错误。
    解决:

    • 使用绝对路径确保文件可被读取:fs.createReadStream(path.resolve(__dirname, './audio.mp3'))(需先引入path模块)
    • 检查文件权限,确保执行脚本的用户有读取该文件的权限
    • 先验证文件完整性:执行fs.readFileSync('./audio.mp3').length,确认文件大小不为0
  • 环境变量加载失败
    若process.env.OPENAI_API_KEY未正确加载,会导致请求头的Authorization字段为空,部分场景下API会返回400而非401。
    解决:

    • 打印console.log(process.env.OPENAI_API_KEY)确认值已正确加载
    • 本地测试时可临时直接传入密钥,排除环境变量问题(上线前务必移除硬编码)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 13:17:31