繁体   English   中英

如何将编码为字节字符串的音频文件解码为 numpy 数组?

[英]How do you decode a audio file encoded as a byte string into a numpy array?

目前,我的项目是一个 React.js 前端与 Flask 后端配对。 我正在使用前端从麦克风收集短音轨并将该数据提供给我的后端进行处理。 现在,前端在 POST 请求中将麦克风数据作为 base64 字符串发送,而我的后端需要在将数据作为 python ndarray 与 librosa 加载回之前,将数据解码并保存到“temp.wav”磁盘中。 出于隐私和效率的原因,我不想在将文件加载回 memory 之前将其保存在本地,但我似乎无法弄清楚如何将数据从 byte64 表示形式加载到 numpy.ndarray librosa 输出。

这是前端代码的片段:

let blob = new Blob(audio.audioChunks, {type: 'audio/wav'});
const reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = () => {
  let base64data = reader.result.split(',')[1];
  fetch('/api/task', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ message: base64data })
  }).then(res => res.json()).then(data =>{
    console.log(data)
  });
};

和我的 Flask 后端代码:

@app.route('/api/task', methods=['POST'])
def hello_world(): #just a filler name
    content = request.get_json()
    ans = base64.b64decode(bytes(content["message"], 'utf-8'))

    with open("temp.wav", "wb") as fh:
        fh.write(ans)

    audio_input, _ = librosa.load("temp.wav", sr=16000)
    #do something with audio_input

我真的需要后端是 Flask 因为我需要访问其他语言中不可用的不同 Python 工具。

您将使用librosa.stream而不是librosa.load

https://librosa.org/doc/main/generated/librosa.stream.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM