You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Flask应用中将Blob音频转换为可用WAV文件?

解决Flask接收MediaRecorder音频无法转存为可用WAV文件的问题

问题背景

开发Flask应用时,使用JavaScript的MediaRecorder录制用户音频,成功获取Blob并发送至Flask端点,但保存后的音频文件无法正常打开。打印的音频数据开头包含webm标识,说明实际接收的是WebM格式数据,而非指定的WAV格式。

前端代码

const blob = new Blob(chunks, { type: "audio/wav" });
chunks = [];
const audioURL = window.URL.createObjectURL(blob);
audio.src = audioURL;
console.log("recorder stopped");

const formData = new FormData();
formData.append("audioData", blob);
console.log(blob);

fetch("/upload-audio", {
  method: "POST",
  body: formData,
})
.then((response) => {
  // Handle the response from the server
})
.catch((error) => {
  // Handle any errors that occurred
});

后端原代码

@app.route('/upload-audio', methods=['POST'])
def upload_audio():
    audio_data = request.files['audioData'].read()
    print("audio data", audio_data)
    audio_data_save_attempt = request.files['audioData']
    audio_data_save_attempt.save("filenametest.wav")

    return "Trying to get audio data saved to disk"

问题分析

尽管在前端创建Blob时指定了type: "audio/wav",但多数浏览器(如Chrome)的MediaRecorder默认输出格式为WebM,并不会自动转换为WAV。因此后端接收的实际是WebM格式的二进制数据,强行保存为.wav文件会因格式不匹配无法打开,Python标准库的wave模块也无法处理WebM数据。

解决方案

方案1:后端转码(推荐)

使用pydub库结合FFmpeg将WebM转码为WAV:

  1. 安装依赖:
pip install pydub

同时需确保系统已安装FFmpeg(Ubuntu:sudo apt install ffmpeg;Windows需下载FFmpeg并添加至系统PATH)。

  1. 修改Flask后端代码:
from pydub import AudioSegment
from flask import Flask, request

app = Flask(__name__)

@app.route('/upload-audio', methods=['POST'])
def upload_audio():
    audio_file = request.files['audioData']
    # 读取WebM格式音频
    webm_audio = AudioSegment.from_file(audio_file, format="webm")
    # 导出为WAV格式
    webm_audio.export("filenametest.wav", format="wav")
    return "音频已成功转存为可用WAV文件"

方案2:前端直接录制WAV

使用第三方库(如Recorder.js)直接录制生成WAV格式音频,避免后端转码步骤。但需注意兼容性,部分移动端浏览器可能对这类库支持有限。

关于之前尝试的wave模块代码问题

你之前尝试用io.BytesIO和wave模块处理数据,失败原因是wave模块仅支持标准WAV格式,无法解析WebM的文件头和编码格式,因此无法读取和转换数据。

内容的提问来源于stack exchange,提问作者Joseph Na

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 04:35:32