Привет! Я работаю над проектом, который требует, чтобы я записал аудио из браузера (из внешнего интерфейса 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 для сохранения аудиофайла на диск. Однако я получаю статический / странный звуковой сигнал в результирующем файле.
Любые предложения будут высоко оценены!