如何将 Javascript 音频 blob 写入 Python wave?

问题描述

我正在尝试创建一个每 n 秒接受一个音频 blob 并将其写入波形文件的 Flask 端点:

烧瓶:

@app.route('/api/v01/post/audio-blob/',methods=['POST'])
def api_post_audio_blob():
    blob = request.data
    with open('file.wav','ab') as f:
        f.write(blob)
    return Response(status=200)

Javascript:

const startButton = document.getElementById("start");
startButton.addEventListener("click",function() {

    /* Get client-side audio stream */
    var constraints = { audio: true }
    var chunks = []
    navigator.mediaDevices.getUserMedia(constraints)
    .then(function(stream) {
        const recorder = new MediaRecorder(stream);
        recorder.ondataavailable = event => {
            chunks.push(event.data);
            var blob = new Blob(chunks,{
                type: "audio/wav"
            });
            var xmlhttp = new XMLHttpRequest();
            var url = "http://127.0.0.1:5000/api/v01/post/audio-blob/";
            xmlhttp.open("POST",url,true);
            xmlhttp.setRequestHeader("Content-type","audio/wav");
            xmlhttp.send(blob);
        };
        recorder.start(10000);
    })
    .catch(function(err) {
        /* handle the error */
    });

似乎二进制文件被写入 file.wav,但它没有播放任何声音。有谁知道如何解决这个问题?将不胜感激!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)