Я записываю вход микрофона на веб-сайте и отправляю это аудио бэкэнду:
navigator.mediaDevices.getUserMedia({ audio: true })
.then(stream => {
const mediaRecorder = new MediaRecorder(stream);
mediaRecorder.start();
const audioChunks = [];
mediaRecorder.addEventListener("dataavailable", event => {
audioChunks.push(event.data);
});
mediaRecorder.addEventListener("stop", () => {
const audioBlob = new Blob(audioChunks);
const data = new FormData();
data.append('speech', audioBlob, 'command');
axios.post('/command', data)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
});
});
На моем бэкэнде (запущенном на Flask) у меня проблема с открытием (или доступом) к нему.Когда я использую модуль wave
:
audio = request.files['speech']
audio.save(audio.filename)
with wave.open(audio.filename, 'r') as speech:
# Do something ...
return jsonify({
'status': "OK",
})
, я получу сообщение об ошибке wave.Error: file does not start with RIFF id
.Как это решить?Должен ли я преобразовать его во что-то еще (звук, кажется, в формате WebM)?Как правильно обрабатывать звук с микрофона на веб-сайте Python?