如何将Flask中上传的文件传输至Deepgram AI进行处理?
如何将Flask中上传的文件直接传递给Deepgram AI
你可以直接利用Flask请求中获取的文件流作为Deepgram的数据源,无需将文件保存到本地目录再读取。下面是修改后的完整代码,核心是直接使用上传文件的stream属性传递给Deepgram接口:
from deepgram import Deepgram import json from flask import Flask, render_template_string, request # 初始化Deepgram客户端 dg_key = '6a5db8f6e43c35769ddce7a3523c792179b69f5c' dg = Deepgram(dg_key) # 允许的音频文件扩展名和对应MIME类型 ALLOWED_EXTENSIONS = {'mp3', 'wav'} MIME_TYPES = { 'mp3': 'audio/mp3', 'wav': 'audio/wav' } # 转录配置选项 transcription_options = { "punctuate": True, "diarize": True, "model": 'general', "tier": 'nova' } # 初始化Flask应用 app = Flask(__name__) # 内嵌上传表单模板 UPLOAD_FORM = """ <!doctype html> <title>上传音频文件</title> <h1>上传音频文件(MP3/WAV)</h1> <form method=post enctype=multipart/form-data> <input type=file name=file accept=".mp3,.wav"> <input type=submit value=上传> </form> """ def allowed_file(filename): """检查文件扩展名是否合法""" return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS @app.route('/', methods=['GET', 'POST']) def upload_and_transcribe(): if request.method == 'POST': # 获取上传的文件对象 file = request.files.get('file') if not file or file.filename == '': return "请选择一个文件上传" if allowed_file(file.filename): # 根据扩展名获取正确的MIME类型 file_ext = file.filename.rsplit('.', 1)[1].lower() mimetype = MIME_TYPES[file_ext] # 直接用文件流作为Deepgram的数据源,无需落地存储 source = { "buffer": file.stream, "mimetype": mimetype } # 调用Deepgram同步转录接口 try: transcription_result = dg.transcription.sync_prerecorded(source, transcription_options) # 将转录结果保存为JSON文件(可选,也可以直接返回给前端) result_filename = f"{file.filename.rsplit('.', 1)[0]}.json" with open(result_filename, "w") as f: json.dump(transcription_result, f, indent=4) return f"转录完成!结果已保存为 {result_filename}" except Exception as e: return f"转录出错:{str(e)}" else: return "只允许上传MP3或WAV格式的音频文件" # GET请求返回上传表单 return render_template_string(UPLOAD_FORM) if __name__ == '__main__': app.run(debug=True)
关键改动说明:
- 移除了原代码中遍历本地目录的逻辑,改为直接处理Flask上传的文件对象
- 用
request.files.get('file')获取上传文件,通过file.stream直接传递文件流给Deepgram,无需保存到本地 - 修复了原代码中MIME类型拼接错误的问题,根据文件扩展名匹配正确的音频MIME类型
- 添加了文件格式校验,确保只处理MP3/WAV文件
- 内嵌了简单的上传表单,无需额外模板文件
内容的提问来源于stack exchange,提问作者daphney thokoana
相关产品推荐
相关产品推荐

