Как передать InMemoryUploadedFile как файл?
Пользователь записывает аудио, аудио сохраняется в аудио блоб и отправляется на бэкенд. Я хочу получить аудио файл и отправить его в openai whisper API.
files = request.FILES.get('audio')
audio = whisper.load_audio(files)
Я пробовал разные способы отправки аудиофайла, но ни один из них не сработал, и я не понимаю, как он должен быть отправлен. Я бы предпочел не сохранять файл. Я хочу, чтобы записанный пользователем звук отправлялся в API whisper с бэкенда.
load_audio()
требует файл на диске, поэтому вам придется его обслуживать - но вы можете использовать временный файл, который автоматически удаляется за пределами блока with
. (В Windows вам может понадобиться использовать delete=False
из-за причин разрешения общего доступа.)
import os
import tempfile
file = request.FILES.get('audio')
with tempfile.NamedTemporaryFile(suffix=os.path.splitext(file.name)[1], delete=False) as f:
for chunk in file.chunks():
f.write(chunk)
f.seek(0)
try:
audio = whisper.load_audio(f.name)
finally:
os.unlink(f.name)