NodeJS 将音频缓冲区转换为可读流以在Whisper中使用

kpbwa7wx  于 2023-03-17  发布在  Node.js
关注(0)|答案(1)|浏览(275)

我想删除在本地保存音频文件,然后在保存后阅读音频文件的步骤。
这就是我目前正在做的,效果很好

fs.writeFileSync("audio/audioFile.webm", audioBuffer);

var audioStream = fs.createReadStream("audio/audioFile.webm");

// then posting the audio stream in the Whisper Api at https://api.openai.com/v1/audio/transcriptions which is working perfectly

我不禁想到,我肯定可以删除保存文件的步骤,并将缓冲区作为音频可读流发送到API
这可能吗?
我尝试了这个,它不工作,流是一个“可读”,而不是“读流”,这似乎是什么耳语API的需要。

const { Readable } = require('stream');
var audioStream = Readable.from(audioBuffer);
exdqitrt

exdqitrt1#

令人惊讶的是,解决方案是添加文件名。

const {Readable} = require('stream')
...
const audioReadStream = Readable.from(audioBuffer);
audioReadStream.path = `filename.webm`;

由于API执行mimeType检测的方式,您遇到了一个bug:简单地看一下扩展名。2从一个文件中读取流的原因是文件名包含在内,这样API就可以知道格式。
参见here

相关问题