目录
[1、基础实现:纯 TXT 文本内容总结](#1、基础实现:纯 TXT 文本内容总结)
[2、优化升级:CSV 格式语音转写数据总结](#2、优化升级:CSV 格式语音转写数据总结)
[3、Flask 框架简介](#3、Flask 框架简介)
[4、Flask 部署 CSV 总结代码,实现本地上传调用](#4、Flask 部署 CSV 总结代码,实现本地上传调用)
[4.1 项目结构](#4.1 项目结构)
[4.2 Flask 核心部署代码](#4.2 Flask 核心部署代码)
[4.3 本地调用实现 CSV 总结](#4.3 本地调用实现 CSV 总结)
[4.4 实现效果](#4.4 实现效果)
1、基础实现:纯 TXT 文本内容总结
最开始的核心需求是对语音转写的文本做 AI 总结,先从最简单的TXT 文本读取 + AI 总结入手,实现基础逻辑:
- 直接读取本地 TXT 格式的语音转写文本,加载全部文本内容
- 调用通义千问 AI 接口,传入 prompt 要求提炼核心知识点、去除口语化内容
- 控制台直接输出总结结果,完成最基础的文本总结功能
核心逻辑代码(极简版):
import openai
# AI配置
client = openai.OpenAI(api_key="你的密钥", base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
# 读取TXT文本
with open("transcript.txt", "r", encoding="utf-8") as f:
content = f.read()
# AI总结
prompt = f"总结以下语音转写内容,分点提炼核心:\n{content}"
res = client.chat.completions.create(model="deepseek-v3", messages=[{"role":"user","content":prompt}])
print(res.choices[0].message.content)
这一步完成了文本总结的核心功能验证,但 TXT 格式无法存储语音转写的时间、角色等附加信息,实用性有限。
2、优化升级:CSV 格式语音转写数据总结
实际语音转写导出的文件为CSV 格式 ,包含时间、角色、内容三列,TXT 方案无法适配,因此优化为 CSV 专属总结方案:
- 使用
pandas读取 CSV 文件,适配中文列名内容,精准提取语音转写文本 - 过滤空值、拼接有效文本,避免无效内容干扰 AI 总结
- 保留原有的 AI 总结逻辑,仅替换文本读取方式,适配结构化数据
核心优化点:
- 兼容语音转写 CSV 的列名(新增
内容列匹配) - 批量处理多行转写文本,自动拼接成完整内容
- 数据更规范,可拓展性更强(后续可筛选角色、时间段)
优化后 CSV 读取核心代码:
import pandas as pd
# 读取CSV,提取内容列
df = pd.read_csv("test_processed_sentences.csv", encoding="utf-8")
# 匹配语音转写的文本列
text_col = "内容"
transcript = "\n".join(df[text_col].dropna().astype(str))
这一步解决了真实场景下语音转写文件的读取问题,从纯文本升级为结构化数据处理。
3、Flask 框架简介
Flask 是轻量级 Python Web 开发框架,无繁重依赖、上手简单,非常适合快速搭建本地 API 接口:
- 轻量化:无需复杂配置,几行代码即可启动 Web 服务
- 支持文件上传:完美适配 CSV 文件本地上传需求
- 纯 API 接口开发:无需编写前端页面,可通过脚本 / 终端直接调用
- 本地部署便捷:启动后局域网 / 本机均可访问,适合个人开发、本地调试
本次使用 Flask 的核心目的:将 CSV+AI 总结的功能封装为接口,实现本地上传文件→调用接口→获取总结的标准化流程。
4、Flask 部署 CSV 总结代码,实现本地上传调用
将优化后的 CSV 总结逻辑,通过 Flask 封装为文件上传 API 接口,实现本地无前端调用,完成完整的语音转写总结流程。
4.1 项目结构
智慧课堂/
├── result/ # 存放待上传的CSV文件
│ └── test_processed_sentences.csv
├── uploads/ # 临时存储上传文件(自动创建)
├── app_api.py # Flask接口主程序
└── get_summary.py # 本地调用脚本
4.2 Flask 核心部署代码
整合 CSV 读取、AI 总结、文件上传功能,封装为/api/upload-csv接口:
import os
import openai
import pandas as pd
from flask import Flask, request, jsonify
from werkzeug.utils import secure_filename
app = Flask(__name__)
UPLOAD_FOLDER = 'uploads'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
API_KEY = "你的通义千问密钥"
# AI总结类
class Summary:
def __init__(self, key):
self.client = openai.OpenAI(api_key=key, base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
def read_csv(self, path):
df = pd.read_csv(path, encoding="utf-8")
return "\n".join(df["内容"].dropna().astype(str))
def get_summary(self, text):
prompt = f"总结以下课堂语音转写,分点提炼核心:\n{text}"
res = self.client.chat.completions.create(model="deepseek-v3", messages=[{"role":"user","content":prompt}])
return res.choices[0].message.content
# 上传接口
@app.route("/api/upload-csv", methods=["POST"])
def upload():
file = request.files.get("file")
path = os.path.join(app.config["UPLOAD_FOLDER"], secure_filename(file.filename))
file.save(path)
s = Summary(API_KEY)
text = s.read_csv(path)
summary = s.get_summary(text)
os.remove(path)
return jsonify({"status":"success","data":{"summary":summary}})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)
4.3 本地调用实现 CSV 总结
启动 Flask 服务后,通过两种方式本地调用接口:
-
Python 脚本调用(推荐,无编码 / 终端坑)
import requests
files = {"file": open("result/test_processed_sentences.csv", "rb")}
res = requests.post("http://localhost:5000/api/upload-csv", files=files)
print(res.json()["data"]["summary"]) -
终端 curl.exe 调用
curl.exe -X POST "http://localhost:5000/api/upload-csv" -F "file=@result/test_processed_sentences.csv" | jq -r ".data.summary"
4.4 实现效果
本地上传 CSV 语音转写文件→Flask 接口解析文本→AI 生成总结→返回中文结果,完整实现了结构化数据的 AI 总结接口化部署,可重复调用、无需手动修改代码。
整体总结
- 先通过 TXT 实现基础 AI 总结,验证核心逻辑;
- 优化为 CSV 格式,适配真实语音转写文件的结构化数据;
- 利用 Flask 轻量特性,将功能封装为本地 API 接口;
- 实现本地上传调用,完成可复用、标准化的 CSV 语音转写 AI 总结流程。