python视频转文本,音频转文本

devtools/2025/3/31 7:57:54/

使用cursor开发一个python视频转文本,音频转文本桌面程序

在这里插入图片描述

准备需求文档

使用deepseek生成一个需求文档
在这里插入图片描述

在这里插入图片描述

以下是一个基于 **Whisper** 开发桌面端软件的需求文档模板,适用于指导 **Cursor**(AI代码助手)理解项目目标、功能设计和实现逻辑。文档结构清晰,关键需求已标注优先级。---# **需求文档:Whisper 桌面端语音转文字工具**## **1. 项目目标**开发一款跨平台桌面应用,支持用户通过图形界面将视频/音频文件转换为文字(支持中英文),生成字幕文件,并导出为多种格式。---## **2. 功能需求**### **2.1 核心功能**| 功能                   | 描述                                                            | 优先级 |
| ---------------------- | --------------------------------------------------------------- | ------ |
| **文件上传与格式转换** | 支持上传视频(MP4, AVI, MKV)或音频(MP3, WAV),自动提取音频。 | P0     |
| **语音转文字**         | 调用Whisper模型,将音频转换为文字,支持中英文混合识别。         | P0     |
| **字幕生成**           | 生成带时间戳的SRT字幕文件,可调整分段时长(默认30秒)。         | P1     |
| **导出结果**           | 导出为TXT、SRT、JSON格式,支持自定义文件名和路径。              | P1     |### **2.2 高级功能**| 功能         | 描述                                                          | 优先级 |
| ------------ | ------------------------------------------------------------- | ------ |
| **模型选择** | 允许用户选择Whisper模型(tiny, base, small, medium, large)。 | P1     |
| **GPU加速**  | 检测本地NVIDIA GPU,自动启用CUDA加速(需用户确认安装驱动)。  | P2     |
| **批量处理** | 支持批量上传文件,队列顺序处理,显示进度条。                  | P2     |
| **文本编辑** | 提供文本编辑器,允许用户手动修正识别结果。                    | P2     |---## **3. 非功能需求**### **3.1 性能**- **响应时间**:1小时内的音频文件处理时间 ≤ 5分钟(small模型 + CPU)。
- **硬件要求**:- CPU:Intel i5 或同等性能。- RAM:≥8GB(large模型需≥16GB)。- GPU(可选):NVIDIA GTX 1060+(CUDA加速)。
- **3.2 兼容性**
- **操作系统**:Windows 10/11, macOS 12+, Ubuntu 20.04+。
- **输入格式**:MP4, AVI, MKV, MP3, WAV, FLAC。
- **输出格式**:TXT(纯文本)、SRT(字幕)、JSON(带时间戳)。### **3.3 安全与隐私**- **数据本地化**:所有文件处理和模型推理均在本地完成,不上传至服务器。
- **缓存清理**:任务完成后自动删除临时音频文件。---## **4. 用户界面(UI)设计**### **4.1 主界面**1. **文件上传区域**:拖拽或点击上传文件。
2. **任务队列面板**:显示待处理/处理中的文件列表。
3. **进度条与日志**:实时显示处理进度和Whisper日志。
4. **结果预览窗口**:分栏显示文字、字幕和时间戳。### **4.2 设置界面**- **模型选择**:下拉菜单选择Whisper模型(默认small)。
- **语言设置**:强制指定语言(中文/英文/自动检测)。
- **输出目录**:自定义结果保存路径。---## **5. 技术架构**### **5.1 技术栈**| 组件         | 技术选型         | 说明                       |
| ------------ | ---------------- | -------------------------- |
| **前端**     | PyQt5            | 跨平台GUI框架,优先PyQt5。 |
| **后端引擎** | Whisper (OpenAI) | 核心语音识别模型。         |
| **音频处理** | FFmpeg           | 视频提取音频,格式转换。   |
| **依赖管理** | PyInstaller      | 打包为EXE/DMG可执行文件。  |### **5.2 关键代码逻辑(供Cursor参考)# 示例:Whisper核心调用import whisperdef transcribe_audio(file_path, model_size="small", language="zh"):
model = whisper.load_model(model_size)
result = model.transcribe(
file_path,
language=language,
fp16=False  # 默认关闭GPU加速
)
return result["text"], result["segments"]# 示例:生成SRT字幕def generate_srt(segments):
srt_content = ""
for idx, segment in enumerate(segments):
start = segment["start"]
end = segment["end"]
text = segment["text"]
srt_content += f"{idx+1}\n{format_time(start)} --> {format_time(end)}\n{text}\n\n"
return srt_content

使用cursor开发项目

在这里插入图片描述
一步步实现对应需求就行了

打包遇到的问题

命令行启动项目可以正常运行,使用cuda进行转录解析,但是打包exe后一直使用的是cpu,更改设置也没生效,检查后发现是pytroch版本不对
在这里插入图片描述

这里调试了好久,按照cursor给的方案 一直没成功

最后没用cursor的打包方案

# 使用PyInstaller直接打包
pyinstaller --name=WhisperDesktop --add-data="models;models" --hidden-import=torch --hidden-import=torch.nn --hidden-import=torch.cuda --hidden-import=whisper main.py

打包后还是缺少pytorch相关的包,直接手动复制到打包文件
在这里插入图片描述

whisper 的静态资源没有打包过来,也需要复制过
在这里插入图片描述

由于将模型,pytroch都打包了进来,打包后的文件太大了。。。
在这里插入图片描述
先这样吧,能用就行


http://www.ppmy.cn/devtools/170932.html

相关文章

996引擎-接口测试:背包

996引擎-接口测试:背包 背包测试NPC参考资料背包测试NPC CONSTANT = require("Envir/QuestDiary/constant/CONSTANT.lua"); MsgUtil = require("Envir/QuestDiary/utils/996/MsgUtil.lua");

基于springboot的星之语明星周边产品销售网站(050)

摘要 随着信息互联网信息的飞速发展,无纸化作业变成了一种趋势,针对这个问题开发一个专门适应洗衣店业务新的交流形式的网站。本文介绍了星之语明星周边产品销售网站的开发全过程。通过分析企业对于星之语明星周边产品销售网站的需求,创建了一…

特征工程自动化(FeatureTools实战)

目录 特征工程自动化(FeatureTools实战)1. 引言2. 项目背景与意义2.1 特征工程的重要性2.2 自动化特征工程的优势2.3 工业级数据处理需求3. 数据集生成与介绍3.1 数据集构成3.2 数据生成方法4. 自动化特征工程理论基础4.1 特征工程的基本概念4.2 FeatureTools库简介4.3 关键公…

【Linux———线程精讲】

当这世界已经准备将我遗弃,像一个伤兵被留在孤独荒野里.................................................... 文章目录 前言 一、【线程介绍】 1.1、【什么是线程?】 1.2、【重新理解进程】 1.3、【详解页表映射】 1.3.1、【重谈地址空间】 1.3.2、【二…

DeDeCMS靶场

通过⽂件管理器上传WebShel 步骤⼀:访问⽬标靶场其思路为 dedecms 后台可以直接上传任意⽂件,可以通过⽂件管理器上传 php⽂件获取webshell # 后台 http: //【自己的IP】/dede username: admin password : admin 步骤⼆:登陆到后台点击 【核⼼】 --…

前端自动化是啥

好的,我现在需要回答用户的问题:“前端自动化是啥”。根据提供的搜索结果,我需要综合这些信息来生成一个准确且引用正确的答案。 首先,我需要理解前端自动化的定义。根据搜索结果中的网页[1],前端自动化是通过工具和脚…

Netty——BIO、NIO 与 Netty

文章目录 1. 介绍1.1 BIO1.1.1 概念1.1.2 工作原理1.1.3 优缺点 1.2 NIO1.2.1 概念1.2.2 工作原理1.2.3 优缺点 1.3 Netty1.3.1 概念1.3.2 工作原理1.3.3 优点 2. Netty 与 Java NIO 的区别2.1 抽象层次2.2 API 易用性2.3 性能优化2.4 功能扩展性2.5 线程模型2.6 适用场景 3. 总…

如何获取thinkphp的所有发行版本

是的,你只需要一行代码 composer show topthink/think --all 然后做了一个小实验,神奇的事情发生了。是我眼睛花了吗? 命令也能模糊查询了吗?tp6也太。。。。