OpenAI transcription API bad request

题意:"OpenAI 转录 API 错误请求"

问题背景:

javascript 复制代码
const FormData = require('form-data');

    const data = new FormData();

    console.log('buffer: ', buffer);
    console.log('typeof buffer: ', typeof buffer);

    const filename = new Date().getTime().toString() + '.webm';
    data.append('model', 'whisper-1');
    data.append('file', bufferToStream(buffer));
    
    console.log('data: ', data);

    let config = {
        method: "post",
        maxBodyLength: Infinity,
        url: "https://api.openai.com/v1/audio/transcriptions",
        headers: {
        Authorization:
            `Bearer ${process.env.OPENAI_API_KEY}`,
            "Content-Type": "multipart/form-data",
            ...data.getHeaders(),
        },
        data: data,
    };

    await axios.request(config)

I am trying to post a file to openAI to get transcription. But I constantly get 400 bad request error.

"我正在尝试向 OpenAI 发送一个文件以获取转录。但是我不断收到 400 错误请求。"

I am using JavaScript (not TypeScript) so I can't use the FormData package, at least I have tried it and it didn't help me.

"我正在使用 JavaScript(而不是 TypeScript),所以我不能使用 FormData 包。至少我尝试过了,它没有帮助我。"

Error: Data after transformation must be a string, an Array Buffer, a Buffer, or a Stream

I tried Postman and it works, which provides me with the following code snippet:

"我尝试了 Postman,它有效,这里是它给我的代码片段:"

javascript 复制代码
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
let data = new FormData();
data.append('model', 'whisper-1');
data.append('file', fs.createReadStream('/Users/UserName/Downloads/session-1708252969167.webm'));

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'https://api.openai.com/v1/audio/transcriptions',
  headers: { 
    'Authorization': {{OPENAI_API_KEY}}, 
    'Cookie': '__cf_bm=5L5OJyh1Yd28yUT9Uv0TT9F5POhL1fzeraSZF1C.9OA-1708337727-1.0-AV+XT0hftIn7mtJxICJduMQBpFcB9UQvbil6GmgI2BX7rw0BZRvuseeN0QgeuIt7KyNTxGJs/xcWIKMpkQdvzC4=; _cfuvid=3uLOzYX3DlLxSjGMLDqD0qcGIj.4zkEXt2czm9OiEfU-1708251423683-0.0-604800000', 
    ...data.getHeaders()
  },
  data : data
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

I tried this code snippet as well, but it throw me a 400 error.

"我也尝试了这个代码片段,但它仍然返回了 400 错误。"

What did I do wrong?

"我哪里做错了?"

问题解决:

This code will work

"这段代码会有效。"

Save as trans.js

javascript 复制代码
const axios = require('axios');
const fs = require('fs');
const FormData = require('form-data');

// Function to make the API call
async function callOpenAI() {
  try {
    const fileStream = fs.createReadStream('audio.webm');

    const formData = new FormData();
    formData.append('file', fileStream);
    formData.append('model', 'whisper-1');

    const response = await axios.post('https://api.openai.com/v1/audio/transcriptions', formData, {
      headers: {
        'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
        ...formData.getHeaders() // Get headers manually
      }
    });

    console.log(response.data);
  } catch (error) {
    console.error('Error:', error.response.data);
  }
}

// Call the function
callOpenAI();

Check API by Postman

Set environment variable for API KEY

On Git Bash

bash 复制代码
OPENAI_API_KEY=[your API KEY]
Install dependencies 安装依赖
bash 复制代码
npm install axios fs form-data
Run it 运行
bash 复制代码
node trans.js
Result 结果
相关推荐
七夜zippoe1 小时前
Token 账单翻了 10 倍:Agent 成本失控的排查过程与优化实录
ai·agent·token·成本失控
yuyuxun11 小时前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计
民乐团扒谱机2 小时前
Agent-Skills 新手入门与实战部署指南
人工智能·ai·agent·skill
深圳雨林凯AI4 小时前
商品详情长图的自动生成:版块模板、要素抽取与版式约束的实现思路
人工智能·ai
总要学点什么4 小时前
第105篇:三维特效-流动图片墙体效果——让箭头沿墙长滚,它俩竟是同一份代码
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
Agent世界6 小时前
用 CDP 做发布自动化:四道机器闸门与产物验收
前端·javascript
总要学点什么6 小时前
第104篇:三维特效-流动墙体效果——让贴图沿墙流动,它却只肯走一条对角线
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
某哈压力大6 小时前
SSH 突然 Connection reset?不是密钥坏了,是 OpenSSL 把 sshd 干趴了
前端·node.js·命令行
程序员大阳6 小时前
副队长ES6+教程(3)--解构赋值
前端·javascript·es6·赋值·解构
神膘护体小月半6 小时前
css - 元素背景图由 hover 触发,初次加载时闪动的解决办法
前端·javascript·css