如何使用耳语.用字节变量转录ogg音频



我试图使用OpenAI的whisper python模块的转录方法,而不从文件系统加载音频文件。在我的代码中,我从矩阵服务器存储库下载了一个ogg音频文件,现在想要转录它。耳语。转录只需要一个文件,np。数组或张量作为输入。试着把字节转换成np。array或Tensor失败,因为新的数组似乎缺少重要信息。我想知道我是否可以在whisper api中使用其他代码来实现我想要的东西,而不需要先将我的字节写入文件,然后再从文件中读取它。

import whisper
# this gets an ogg file from a matrix server via mxc:// url as byte
audio = await self.client.download_media(evt.content.url)
model = load_model("base")
with open("my_file.ogg", "wb") as f:
f.write(audio)
result = model.transcribe("my_file.ogg")

这段代码工作,但看起来不像最好的编程思想,更像是一个快速破解;有用,但很丑。所以我想知道是否有更好的选择。

这似乎不是一个难题,既然你自己也提到了答案

稍微检查一下就会发现load_audio()叫ffmpeg.input(file)做功在子进程中。所以你需要一个音频文件

temp = '/tmp/audio.ogg'
with open(temp, 'wb') as f:
f.write("some Magic Number header preamble?")
f.write(audio)
result = model.transcribe(temp)

我不知道你在audio中有什么,所以我不确定是否需要一些文件元数据在那里作为序言出现如果您手边有一些支持ogg的库,使用它来帮助文件涂鸦。


如果你有另一种转弯方式内存中的音频数据结构压缩成16 KBPS的波形,当然,去吧。而是坚持whisper中公开的API似乎是阻力最小的途径。

请做一些基准计时分开临时文件I/O延迟来自模型推断延迟;然后贴在这里。我很难相信I/O将主导。

如果显著,并且您将持久化到ext4fs目录,考虑改用TMPFS后端,对于内存中的性能。

最新更新