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

如何在Flask后端直接转录音频无需本地存储?

无需本地存储直接用OpenAI Whisper转录Flask接收的音频

你可以直接在内存中处理前端上传的音频数据,无需写入本地文件。OpenAI Whisper的transcribe()方法支持接收类文件对象(只要实现了read()方法),因此我们可以用BytesIO将上传的音频数据包装成内存中的文件对象,直接传给Whisper处理。

修改步骤

  1. 导入BytesIO模块:在Flask后端代码中添加from io import BytesIO,用于在内存中存储音频数据
  2. 移除本地文件保存逻辑:删掉生成UUID文件名、拼接存储路径、保存文件的代码
  3. 直接处理内存中的音频数据:将上传的音频文件读取为字节流,用BytesIO包装后传入model.transcribe()

修改后的完整Flask后端代码

from flask import render_template, request, jsonify, Blueprint
from app import app
from io import BytesIO  # 新增导入
import whisper

# 若不再使用本地存储相关配置,可删除以下行
# UPLOADED_FOLDER = '/mnt/d/whisper-backend/recordings'
# MODEL_PATH_LARGE = '/mnt/d/whisper-backend/models/large-v2.pt'
# MODEL_PATH_TINY = '/mnt/d/whisper-backend/models/tiny.pt'

model = whisper.load_model('./models/tiny.pt')

translate_route_blueprint = Blueprint("translate", __name__)

@translate_route_blueprint.route('/translate', methods=['POST'])
def translate():
    audio_file = request.files['audio']
    # 将音频数据读入内存中的BytesIO对象
    audio_stream = BytesIO(audio_file.read())
    
    transcription = ""
    translation_1 = ""
    # 直接传入内存流进行转录,无需本地文件
    result = model.transcribe(audio_stream)
    transcription = result["text"]
    
    return jsonify({'translation1': transcription, 'translation2': translation_1})

说明

  • 前端代码无需任何修改,已经通过FormData正确发送了音频Blob数据
  • BytesIO会在内存中临时存储音频数据,请求处理完成后自动释放,不会产生本地文件
  • Whisper会自动识别音频格式(前端传的WAV格式完全兼容)

内容的提问来源于stack exchange,提问作者Jayanta Basumatary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:43:38