Как передать InMemoryUploadedFile как файл?

Пользователь записывает аудио, аудио сохраняется в аудио блоб и отправляется на бэкенд. Я хочу получить аудио файл и отправить его в openai whisper API.

  files = request.FILES.get('audio')
  audio = whisper.load_audio(files)

Error

Я пробовал разные способы отправки аудиофайла, но ни один из них не сработал, и я не понимаю, как он должен быть отправлен. Я бы предпочел не сохранять файл. Я хочу, чтобы записанный пользователем звук отправлялся в 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)

Вернуться на верх