Как передать аудио Blob на сервер и сервер Django - PullRequest
0 голосов
/ 10 апреля 2019

Я создаю веб-приложение Django, которое записывает несколько динамиков, манипулирует файлами и передает результат в инструмент обработки речи IBM. Я застрял на записи в течение двух дней и был бы признателен за помощь.

Моя цель - иметь возможность хранить WAV-файлы в моей базе данных, которыми я могу манипулировать и отправлять в инструмент IBM.

В JS вот как я нашел способ записи звука.

    function handlerFunction(stream) {
        rec = new MediaRecorder(stream);
        rec.ondataavailable = e => {
          audioChunks.push(e.data);
          if (rec.state == "inactive"){
            let blob = new Blob(audioChunks,{type:'audio/wav'});
            recordedAudio.src = URL.createObjectURL(blob);
            recordedAudio.controls=true;
            recordedAudio.autoplay=true;
            sendData(blob)
          }
        }
      }

    function sendData(data) {
      $('.passAudio').val(data);
    }

Я могу воспроизвести его в звуковом теге, и я пытаюсь передать его как скрытый ввод. Пока что он говорит мне, что передает объект Blob, но я не знаю, что с этим делать.

<audio id=recordedAudio></audio>
<input type="hidden" accept="audio/*" id="0" name="audio" class="passAudio">

Я пытаюсь заставить его каким-то образом храниться в моем хранилище по умолчанию, но я понятия не имею, если это даже в правильном направлении. Я также не уверен, как проверить, правильно ли он был сохранен.

# views.py
if request.method == 'POST':
    blob = request.POST.getlist('audio')
    path = default_storage.save('audio/'+'123'+'.wav', ContentFile(blob.read()))
    default_storage.size(path)
    default_storage.open(path).read()

Я уверен, что во многом это неправильно, так как я не понимаю, как передать файл (или большой двоичный объект) из JS в python и сохранить его.

Мои вопросы

  1. Как мне преобразовать большой двоичный объект в файл, который я могу затем передать в python?

  2. Как проверить, правильно ли он хранился?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...