使用Ajax调用Whisper API返回400错误,如何修正?
Whisper API调用错误修正方案
你的Ajax调用存在多处错误,导致返回400状态码,以下是具体修改点:
1. 修正API端点
你使用的URL并非Whisper API的正确转录端点,正确地址应为:
https://api.openai.com/v1/audio/transcriptions
2. 移除错误的请求头设置
你手动指定了Content-Type: application/json,但实际发送的是FormData类型数据。需删除该头信息,contentType: false会让jQuery自动生成正确的multipart/form-data头。
3. 添加必填的模型参数
Whisper API要求必须指定模型,需在FormData中添加模型字段:
formData.append("model", "whisper-1");
4. 填写有效API密钥
你的apiKey变量为空字符串,需替换为自己的OpenAI有效API密钥。
修正后的完整代码
let blob = new Blob(chunks, { type: "audio/webm; codecs=opus" }); let formData = new FormData(); formData.append("audio", blob, "recording.webm"); formData.append("model", "whisper-1"); // 新增模型参数 let apiKey = "你的OpenAI API密钥"; // 填入实际密钥 let url = "https://api.openai.com/v1/audio/transcriptions"; // 修正端点 let header = { 'Authorization': `Bearer ${apiKey}` // 移除错误的Content-Type头 }; $.ajax({ url: url, type: 'POST', headers: header, data: formData, processData: false, contentType: false, crossDomain: true, success: function(response) { console.log("Transcription:", response.text); }, error: function(jqXHR, textStatus, errorThrown) { console.error("Error:", textStatus, errorThrown); // 打印响应体查看OpenAI返回的具体错误信息 console.log("详细错误:", jqXHR.responseText); } });
额外提示
- 你的webm音频格式符合Whisper API的支持范围
- 若仍有问题,可在error回调中打印
jqXHR.responseText,获取OpenAI返回的具体错误描述,进一步排查问题
内容的提问来源于stack exchange,提问作者user21763626
相关产品推荐
相关产品推荐

