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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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