OpenAI转录API错误请求

    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)

我试图向OpenAI发送一个文件以获取转录,但总是收到400错误请求的错误。

我在使用JavaScript(不是TypeScript),所以我不能使用FormData包,至少我试过但没有帮助我。

错误:转换后的数据必须是字符串、数组缓冲区、缓冲区或流

我尝试使用Postman,它可以正常工作,并提供了以下代码片段:

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);});

我同样尝试了这个代码片段,但它也抛出了400错误。

我做错了什么?


回答:

这个代码可以工作

保存为trans.js

const axios = require('axios');const fs = require('fs');const FormData = require('form-data');// 函数用于调用APIasync 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() // 手动获取头部信息      }    });    console.log(response.data);  } catch (error) {    console.error('错误:', error.response.data);  }}// 调用函数callOpenAI();

使用Postman检查API

enter image description here

enter image description here

设置API KEY的环境变量

在Git Bash中

OPENAI_API_KEY=[your API KEY]

enter image description here

安装依赖

npm install axios fs form-data

运行它

node trans.js

结果

enter image description here

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注