# python 用whisper做一个 video 处理字幕工具 ffmpeg **Repository Path**: bobobobbb/py_whisper_ffmpeg ## Basic Information - **Project Name**: python 用whisper做一个 video 处理字幕工具 ffmpeg - **Description**: python 用whisper做一个 video 处理字幕工具 ffmpeg - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-27 - **Last Updated**: 2026-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 下面是一个直接可用的 `README.md`,你按实际仓库名、截图等改下就行。 ```markdown # Video Subtitle Batch Transcriber 一个基于 Python + OpenAI Whisper 的本地批量字幕生成工具: - 批量处理目录下所有视频文件 - 使用 ffmpeg 抽取音频 - 调用 Whisper 进行语音识别 - 自动生成字幕文件(`.srt`)和纯文本笔记(`.txt`) - 支持 GPU 加速(已针对 RTX 3080 做了默认配置) 适合场景: - 看网课 / 视频教程,想要完整文字稿 - 给视频生成字幕再用于学习、搜索、整理笔记 - 私有视频,本地离线处理,不依赖云服务 --- ## 功能特点 - 批量扫描指定目录,递归处理所有视频文件 - 支持多种视频格式:`mp4 / mkv / avi / mov / flv / wmv / m4v` - 每个视频自动生成: - `xxx.srt`:标准字幕文件(带时间轴) - `xxx.txt`:纯文本笔记(只保留字幕内容) - 已存在的 `.txt` 自动跳过,避免重复计算 - 如已存在 `.srt` 而无 `.txt`,可直接从 `.srt` 生成 `.txt` - 支持 GPU / CPU 自动切换 - Whisper 参数预设为适合 3080 + 32G 的配置(`medium` 模型 + fp16) --- ## 环境要求 - Windows 10 / 11 - Python 3.8+ - 已安装 ffmpeg(命令行可执行 `ffmpeg -version`) - 建议:NVIDIA 显卡(例如 RTX 3080)+ CUDA,以获得更快的识别速度 --- ## 安装步骤 ### 1. 克隆项目 ```bash git clone https://github.com/yourname/video-subtitle-batch.git cd video-subtitle-batch ``` > 将上面的仓库地址替换为你实际的 GitHub 仓库地址。 ### 2. 创建并激活虚拟环境(推荐) ```bash python -m venv venv .\venv\Scripts\activate ``` 退出虚拟环境: ```bash deactivate ``` ### 3. 安装依赖 ```bash pip install --upgrade pip pip install -r requirements.txt ``` 如果你没有提供 `requirements.txt`,可以直接: ```bash pip install openai-whisper torch ``` > 如果需要 GPU 版本的 `torch`,请根据 https://pytorch.org/ 提供的命令安装与本机 CUDA 对应的版本。 ### 4. 安装 ffmpeg 如果你系统里还没有 ffmpeg: 1. 浏览器打开:https://www.gyan.dev/ffmpeg/builds/ 2. 在 “Release builds” 区下载 `ffmpeg-*-full_build.7z` 3. 解压到一个固定目录,例如: ```text D:\apps\ffmpeg\ffmpeg-6.x-full_build\ ``` 4. 将其中的 `bin` 目录加入系统环境变量 `PATH`,例如: ```text D:\apps\ffmpeg\ffmpeg-6.x-full_build\bin ``` 5. 新开一个命令行窗口,执行: ```bash ffmpeg -version ``` 能看到版本信息就表示安装成功。 --- ## 使用说明 项目核心脚本为:`batch_video_to_txt.py`(名称按你的仓库实际为准)。 ### 1. 配置待处理目录 打开 `batch_video_to_txt.py`,找到配置区域: ```python # 要批量处理的视频目录 VIDEO_DIR = r"D:\work\videos" # whisper 模型大小:tiny / base / small / medium / large WHISPER_MODEL_SIZE = "medium" # 语言:中文 "zh",英文 "en",None 自动检测 LANGUAGE = None # 如果大部分是中文,也可以设置为 "zh" ``` 按你的实际情况修改: - `VIDEO_DIR`:放你要批量处理的视频的目录路径 - `WHISPER_MODEL_SIZE`: - 显卡好(如 3080):推荐 `medium` 或 `large` - 显卡一般 / 纯 CPU:建议 `small` 或 `base` - `LANGUAGE`: - 主要是中文视频:`"zh"` - 主要是英文视频:`"en"` - 混合或不确定:`None`(自动检测) ### 2. 运行脚本 确保虚拟环境已激活: ```bash .\venv\Scripts\activate ``` 随后执行: ```bash python batch_video_to_txt.py ``` 脚本会: 1. 递归扫描 `VIDEO_DIR` 下所有视频文件 2. 对每个视频: - 如果已存在 `xxx.txt`:跳过(认为已处理) - 如果存在 `xxx.srt` 但没有 `xxx.txt`:只做 `.srt -> .txt` 转换 - 否则: - 调用 Whisper 识别,生成 `xxx.srt` - 从 `xxx.srt` 抽取文本,生成 `xxx.txt` 命令行中会输出当前使用设备(`cuda` / `cpu`)及进度。 --- ## 目录结构示例 假设你的视频目录为: ```text D:\work\videos\ ├─ course1.mp4 ├─ course2.mkv └─ subfolder\ └─ tutorial1.mp4 ``` 脚本运行后目录将类似: ```text D:\work\videos\ ├─ course1.mp4 ├─ course1.srt ├─ course1.txt ├─ course2.mkv ├─ course2.srt ├─ course2.txt └─ subfolder\ ├─ tutorial1.mp4 ├─ tutorial1.srt └─ tutorial1.txt ``` --- ## 性能与参数建议 针对你的硬件环境(例如 RTX 3080 + i7 + 32G 内存),脚本中默认配置: - 使用 GPU(如果检测到 CUDA) - `WHISPER_MODEL_SIZE = "medium"` - `fp16 = True`(在 GPU 上启用半精度) - `beam_size = 5`,`best_of = 5`,在效果和速度之间做平衡 如果你想进一步调参,可以修改: ```python common_kwargs = { "fp16": device == "cuda", "beam_size": 5, "best_of": 5, # "temperature": 0.0, # 需要可以自己加 } ``` 以及模型大小 `WHISPER_MODEL_SIZE`。 --- ## 已知限制 - Whisper 对长视频处理时间较长,特别是使用大模型时,请预留足够时间 - 识别质量与音频清晰度、背景噪音、口音等强相关 - 当前脚本为单进程串行处理,如果需要并行处理可以在此基础上自行扩展(多进程 / 多进程 + 队列) --- ## 许可证 根据你的实际选择填写,例如: ```text MIT License ``` --- ## 致谢 - [OpenAI Whisper](https://github.com/openai/whisper) - ffmpeg 项目及 Windows 构建贡献者 ```