Сохранить аудио, записанное в браузере, в Python API - PullRequest
0 голосов
/ 20 марта 2019

Привет! Я работаю над проектом, который требует, чтобы я записал аудио из браузера (из внешнего интерфейса Angular 7), отправил его через HTTP в API Python и сохранил его там как файл .wav.

В настоящее время я использую следующее для захвата аудио пользователя:

record() {
    navigator.mediaDevices.getUserMedia({ audio: true })
  .then((stream) => {
    const context = new AudioContext();
    const source = context.createMediaStreamSource(stream);
    const processor = context.createScriptProcessor(1024, 1, 1);

    source.connect(processor);
    processor.connect(context.destination);

    processor.onaudioprocess = (e) => {
      this.buffer.push(e.inputBuffer);
    };
  });
}

stop() {
const wav = this.buffer.map((single) => {
  return AudioBuffer(single, {});
});
  this.send(wav);
}

send(data) {
  const fd = new FormData();
  fd.append('file', data, 'file.wav');

  $.ajax({
  type: 'POST',
  url: 'http://localhost:5000/test',
  data,
  cache: false,
  processData: false,
  contentType: false,
  enctype: 'multipart/form-data'
}).done((res) => {
  console.log(res);
});
}

адаптировано из https://developers.google.com/web/fundamentals/media/recording-audio/

Я использую следующий пакет для преобразования аудио буфера в wav: https://www.npmjs.com/package/audiobuffer-to-wav

и пытаюсь использовать PyDub https://github.com/jiaaro/pydub и Wave https://docs.python.org/3/library/wave.html для сохранения аудиофайла на диск. Однако я получаю статический / странный звуковой сигнал в результирующем файле.

Любые предложения будут высоко оценены!

...