嗨,我正在研究一个项目,该项目需要我记录来自浏览器的音频(来自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将音频文件保存到磁盘。但是我只是在结果文件中得到了静态的声音/奇怪的提示音。
任何建议都将不胜感激!