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

3

我想删除将音频文件保存到本地,然后在保存后读取音频文件的步骤。

这是我目前正在完美运行的操作

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

我不禁想到,我肯定可以省略保存文件的步骤,并将缓冲区作为可读音频流发送到Whisper Api。

这真的可能吗?

我尝试过了,但它不起作用,该流是“可读取”的而不是“ReadStream”,这似乎是Whisper Api所需的。

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

1个回答

3
解决方案是添加文件名,令人惊讶。
const {Readable} = require('stream')
...
const audioReadStream = Readable.from(audioBuffer);
audioReadStream.path = `filename.webm`;

你遇到了一个错误,这是由于API检测mimeType的方式导致的:它只是查看扩展名。从文件中读取流的原因是包含了文件名,因此API可以知道格式。
请参见这里

没错,那行了,我猜他们会随着发展改变事情,谢谢!! - Jason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接