当前位置: 首页 > news >正文

从 TXT 到 CSV 再到 Flask 部署:语音转写 AI 总结全流程实战

目录

1、基础实现:纯 TXT 文本内容总结

2、优化升级:CSV 格式语音转写数据总结

3、Flask 框架简介

4、Flask 部署 CSV 总结代码,实现本地上传调用

4.1 项目结构

4.2 Flask 核心部署代码

4.3 本地调用实现 CSV 总结

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 总结逻辑,仅替换文本读取方式,适配结构化数据

核心优化点:

  1. 兼容语音转写 CSV 的列名(新增内容列匹配)
  2. 批量处理多行转写文本,自动拼接成完整内容
  3. 数据更规范,可拓展性更强(后续可筛选角色、时间段)

优化后 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 服务后,通过两种方式本地调用接口:

  1. 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"])
  1. 终端 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 总结接口化部署,可重复调用、无需手动修改代码。


整体总结

  1. 先通过 TXT 实现基础 AI 总结,验证核心逻辑;
  2. 优化为 CSV 格式,适配真实语音转写文件的结构化数据;
  3. 利用 Flask 轻量特性,将功能封装为本地 API 接口;
  4. 实现本地上传调用,完成可复用、标准化的 CSV 语音转写 AI 总结流程。
http://www.cnnetsun.cn/news/1392827.html

相关文章:

  • 2026年雨云免费游戏云服务器领取及续期保姆级教程
  • DDColor黑白照片修复实测:双解码器着色效果对比展示
  • 通义千问1.5-1.8B-Chat-GPTQ-Int4开源镜像深度解析:SwiGLU+GQA架构应用实录
  • MiniCPM-V-2_6 YOLOv8联合应用:多模态安防监控系统实战
  • 零基础掌握PowerShell脚本编译:Win-PS2EXE可视化工具全指南
  • 基于GTE的智能广告投放:用户兴趣与广告文案的语义匹配
  • gte-base-zh离线环境部署:无外网服务器下Xinference+gte-base-zh完全离线安装
  • MATLAB求导实战:从符号计算到数值微分的完整指南(附源码)
  • sprintf的5个隐藏用法:从字符串格式化到安全风险防范
  • 调参实战:在PyTorch和TensorFlow里,epoch、batch size和iterations到底怎么设?看损失曲线说话
  • Keil生成.bin文件隐藏技巧:用fromelf.exe实现多格式批量转换
  • 暴涨2000元,预言成真,普通人真买不起国产手机,只能买iPhone了!
  • Pixel Dimension Fissioner实战落地:政务公开文案亲和力提升裂变方案
  • 性能测试有哪些?
  • uECC:超轻量级嵌入式ECC密码库实战指南
  • ES6 Set和Map用法详解(附实例+避坑指南)
  • OpenClaw自动化测试:结合QwQ-32B实现智能测试用例生成
  • 密码学算法 - 连分数算法
  • Ostrakon-VL-8B实操手册:自定义ShopBench子集评估模型在本地门店数据表现
  • OpenClaw日志分析:Qwen3-32B实时监控系统日志并发送告警
  • 告别云端上传:用FilePizza实现浏览器直连的P2P文件传输
  • 告别ChatGPT!Qwen3-4B暗黑WebUI体验:免费高智商AI写作助手
  • 2026年AI提示词(Prompt)终极指南:国内聚合站实战技巧
  • HAR实战指南:从Kinetics-400数据集获取到视频帧预处理全流程解析
  • ESP32嵌入式固件骨架:基于tcMenu的工程级基础库
  • 【独家首发】MCP 2.0安全架构设计图完整标注版(含17个攻击面标记+9个CWE编号映射):从威胁建模到自动化检测脚本一键生成
  • Java+ElasticSearch+Pytorch实战:手把手教你搭建一个简易版Google以图搜图系统
  • OpenClaw跨平台控制:GLM-4.7-Flash同步管理多台设备任务
  • 电脑控制手机!免安装! 上班族狂喜!手机投屏软件推荐
  • Dev-C++怀旧与启示:从轻量IDE看Phi-3-vision模型轻量化部署趋势