将浏览器中录制的音频保存到Python API

时间:2019-03-19 23:11:48

标签: python html5-audio wav audio-recording audiobuffer

嗨,我正在研究一个项目,该项目需要我记录来自浏览器的音频(来自Angular 7前端),通过HTTP将其发送到Python API,然后将其另存为.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将音频文件保存到磁盘。但是我只是在结果文件中得到了静态的声音/奇怪的提示音。

任何建议都将不胜感激!

0 个答案:

没有答案