这是一个全自动化的视频本地化处理工具。它能够处理各种来源的视频内容,利用 Whisper 进行语音转录,通过 DeepSeek-V3 进行语义感知的双语翻译,并使用 DeepSeek-R1 (推理模型) 生成深度内容总结,最后自动压制成带有双语字幕的视频文件。
核心特性:
🧠 语义感知翻译:采用 JSON 结构化 Prompt,解决传统逐行翻译导致的语序错位问题。 📝 推理级总结:调用推理模型(Reasoner)生成高质量的内容摘要。 ⚡ M-Series 优化:针对 Apple Silicon (M1/M2/M3) 进行了推理加速优化。 🛡️ 高鲁棒性:内置重试机制、断点容错与临时文件自动清理。
多源输入:支持单个 URL、多个 URL 空格分隔、本地文件路径、或 .txt 列表文件批量导入。
智能下载:基于 yt-dlp,支持自动合并最佳画质与音质(默认 1080p,可选 4K)。
本地文件处理:支持本地视频/音频文件(MP4, MP3, WAV, M4A等)的直接处理。
语音转录:本地运行 faster-whisper (Medium 模型),隐私安全且免费。
双语字幕:生成 SRT 字幕,采用**"中文金字在下/英文白字在上"**的样式进行视频压制。
内容总结:自动生成 Markdown 格式的视频内容摘要。
资源管理:自动分离工作区(Workspace)与输出区(Output),并在任务结束后清理中间文件。
在运行此脚本之前,请确保您的系统已安装以下基础工具:
- Python 3.10+
- FFmpeg (核心依赖,必须安装并添加到系统 PATH)
- macOS:
brew install ffmpeg - Windows: 下载编译包并配置环境变量
- Ubuntu:
sudo apt install ffmpeg
- macOS:
- 操作系统: macOS 10.15+, Ubuntu 18.04+, Windows 10+
- 内存: 至少 8GB RAM(推荐 16GB+)
- 存储空间: 至少 10GB 可用空间(用于模型缓存和临时文件)
- 网络: 稳定的互联网连接(用于下载视频和模型)
git clone https://github.com/Davidai-1999/Video2Chinese.git
cd VideoForge建议使用虚拟环境(Conda 或 venv)以避免依赖冲突:
使用 venv (推荐):
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# macOS/Linux:
source venv/bin/activate
# Windows:
# venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt使用 Conda:
# 创建 Conda 环境
conda create -n ai-video-forge python=3.10
conda activate ai-video-forge
# 安装依赖
pip install -r requirements.txtmacOS:
# 安装 Homebrew (如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装 FFmpeg
brew install ffmpegUbuntu/Debian:
sudo apt update
sudo apt install ffmpeg python3-pipWindows:
- 下载 FFmpeg 构建包:https://ffmpeg.org/download.html
- 解压并将
bin目录添加到系统 PATH 环境变量
在项目根目录创建一个 .env 文件,并填入您的 API Key:
# 创建 .env 文件
cp .env.example .env # 如果有示例文件
# 或者手动创建编辑 .env 文件,添加以下内容:
# .env 文件示例
# 你的 DeepSeek 或 OpenAI 格式的 API Key(必填)
API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# API 接入点 (默认 DeepSeek)
BASE_URL=https://api.deepseek.com
# (可选) 指定模型名称
MODEL_NAME=deepseek-chat
SUMMARY_MODEL_NAME=deepseek-reasoner运行以下命令验证所有依赖是否正确安装:
# 检查 Python 版本
python --version
# 检查 FFmpeg
ffmpeg -version
# 测试脚本
python main.py --helpQ: 安装 faster-whisper 失败? A: 确保已安装正确的 PyTorch 版本。对于 Apple Silicon Mac,使用:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpuQ: Playwright 浏览器安装失败? A: 手动安装浏览器:
python -m playwright install chromiumQ: 内存不足错误?
A: 尝试使用 smaller whisper 模型,编辑 core/config.py 中的 WHISPER_MODEL_SIZE 为 "small" 或 "base"。
处理在线视频(默认下载 1080p 视频以节省空间):
python main.py https://www.youtube.com/watch?v=dQw4w9WgXcQ处理本地视频文件:
python main.py ./path/to/your/video.mp4处理本地音频文件:
python main.py ./path/to/your/audio.mp3 --audio-only创建一个 list.txt 文件,每行一个 URL,然后运行:
python main.py list.txt添加 --clear 参数:
python main.py https://youtu.be/xxx --clear只处理音频,生成转录和翻译文本,不处理视频:
python main.py https://youtu.be/xxx --audio-only将生成的双语字幕烧录到视频中:
python main.py https://youtu.be/xxx --burn指定视频的源语言(默认为英语):
python main.py https://youtu.be/xxx --lang fr| 参数 | 简写 | 说明 | 示例 |
|---|---|---|---|
--clear |
-c |
下载最高画质(4K/8K) | python main.py URL --clear |
--audio-only |
-a |
仅处理音频,不处理视频 | python main.py URL --audio-only |
--burn |
-b |
将字幕烧录到视频中 | python main.py URL --burn |
--lang |
-l |
指定源语言(默认:en) | python main.py URL --lang fr |
--output-dir |
-o |
指定输出目录 | python main.py URL -o ./my_output |
--keep-temp |
-k |
保留临时文件(用于调试) | python main.py URL --keep-temp |
--help |
-h |
显示帮助信息 | python main.py --help |
示例1:处理YouTube视频并生成双语字幕
python main.py "https://www.youtube.com/watch?v=example" --burn示例2:批量处理多个视频
# 创建视频列表文件
echo "https://youtu.be/video1" > list.txt
echo "https://youtu.be/video2" >> list.txt
echo "https://youtu.be/video3" >> list.txt
# 批量处理
python main.py list.txt --clear --burn示例3:处理法语视频并指定输出目录
python main.py "https://youtu.be/french_video" --lang fr --output-dir ./french_videos --burn示例4:仅处理音频内容
python main.py "https://youtu.be/podcast" --audio-only --output-dir ./transcripts示例5:处理本地视频文件并添加字幕
python main.py "./videos/my_lecture.mp4" --burn --output-dir ./lecture_with_subs示例6:批量处理本地音频文件
# 创建本地文件列表
echo "./audio/lecture1.mp3" > local_list.txt
echo "./audio/lecture2.mp3" >> local_list.txt
echo "./audio/lecture3.mp3" >> local_list.txt
# 批量处理
python main.py local_list.txt --audio-only --output-dir ./transcriptsgraph TD
A[输入 URL] --> B{下载视频};
B -->|Temp Dir| C[Whisper 本地转录];
C -->|English Text| D[DeepSeek-V3 翻译];
D -->|JSON 对齐| E[生成双语字幕 SRT];
D -->|Full Text| F[DeepSeek-R1 总结];
E --> G[FFmpeg 视频压制];
F --> H[输出 Summary.md];
G --> I[输出 MP4];
I --> J[清理临时文件];
工作流程详解:
- Ingest: yt-dlp 下载最佳视频流和音频流至
workspace/temp_xxx - Transcribe: faster-whisper 读取音频,生成带时间轴的英文原文
- Translate: 将字幕切分为 Chunk,发送给 LLM 进行语义重组与精准回填
- Export:
- 生成 SRT 字幕文件(包含颜色样式)
- 调用推理模型生成
.md总结 - 调用 ffmpeg 将字幕硬烧录进视频
- Cleanup: 删除中间音频文件,保留最终视频于
output/文件夹
Project/
├── main.py # 主程序
├── .env # 配置文件
├── template_summary.txt # 总结提示词模板 (自动生成)
├── workspace/ # [临时] 下载缓存目录 (脚本会自动清理)
└── output/ # [产出] 最终结果目录
└── Video_Title_Name/ # 每个视频独立文件夹
├── video_subs.mp4 # 最终带字幕视频
├── subs.srt # 外挂字幕文件
├── bilingual.txt # 双语对照文本
└── summary.md # AI 总结文档
Q: 第一次运行慢? A: 首次运行时,faster-whisper 需要下载模型(约 1.5GB)到本地缓存,请保持网络通畅。
Q: FFmpeg 报错?
A: 请确保在终端输入 ffmpeg -version 能看到版本号。
Q: GPU 加速支持吗?
- Mac: 代码已针对 M1/M2/M3 芯片优化(使用 CPU int8 量化,速度优于 MPS)
- NVIDIA: 确保安装了对应 CUDA 版本的 torch,脚本会自动调用 CUDA
本项目仅供学习与技术研究使用。
- 请遵守 YouTube 服务条款
- 请勿下载或分发受版权保护的内容
- 用户需自行承担因使用本工具而产生的法律责任
项目需要以下环境变量,请在项目根目录创建 .env 文件并配置:
# API 密钥 (必填)
API_KEY=sk-your-api-key-here
# API 基础 URL (可选,默认为 DeepSeek)
BASE_URL=https://api.deepseek.com
# 翻译模型名称 (可选,默认为 deepseek-chat)
MODEL_NAME=deepseek-chat
# 总结模型名称 (可选,默认为 deepseek-reasoner)
SUMMARY_MODEL_NAME=deepseek-reasoner处理完成后,将在 output/ 目录下生成以视频标题命名的文件夹,包含以下文件:
*_subs.mp4- 带双语字幕的视频文件(如果启用了字幕烧录)*_raw.mp4- 原始视频文件(如果没有启用字幕烧录)bilingual.txt- 双语对照文本summary.md- AI 生成的内容摘要*.mp3- 音频文件(如果使用了 --audio-only 模式)
- 解析命令行参数
- 协调各核心模块工作流程
- 管理任务队列和临时文件清理
- 全局配置和系统检查
- 字幕样式配置
- 环境变量加载
- 处理 URL 或本地文件输入
- 使用 yt-dlp 下载视频内容
- 提取音频和元数据
- 使用 faster-whisper 进行语音转录
- 调用 LLM 进行语义翻译
- 生成内容摘要
- 生成双语文本文件
- 创建 SRT 字幕文件
- 使用 FFmpeg 压制带字幕的视频
- 时间戳格式化
- 文件名安全处理
- 其他辅助功能
- 批量将 summary.md 转换为 PDF 格式
- 使用 Chromium 渲染确保高质量排版
- 支持自定义 CSS 样式
经过剪枝去重优化后,项目结构更加简洁:
Project/
├── main.py # 主程序入口
├── md2pdf.py # Markdown 转 PDF 工具
├── README.md # 项目文档
├── requirements.txt # Python 依赖
├── template_summary.txt # 总结提示词模板
├── .env # 环境变量配置
├── .gitignore # Git 忽略文件
├── core/ # 核心模块
│ ├── __init__.py
│ ├── config.py # 配置管理
│ ├── handler.py # 输入处理器
│ ├── ai.py # AI 处理模块
│ ├── renderer.py # 渲染导出模块
│ └── utils.py # 工具函数
├── workspace/ # 临时工作目录(自动清理)
└── output/ # 最终输出目录
已清理的冗余文件:
main_back.py- 旧版主程序备份main copy.py- 主程序副本core_backv2/- 旧版核心模块备份
项目现在仅保留一套核心代码,减少了维护负担和磁盘占用。
我们欢迎并感谢所有形式的贡献!以下是参与项目的方式:
-
报告问题
- 使用 GitHub Issues 报告 bug 或提出功能请求
- 提供详细的重现步骤和系统环境信息
-
提交代码
- Fork 项目仓库
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
-
改进文档
- 修复拼写错误或语法问题
- 添加更多使用示例
- 翻译文档到其他语言
# 克隆仓库
git clone https://github.com/Davidai-1999/Video2Chinese.git
cd Video2Chinese
# 安装开发依赖
pip install -r requirements-dev.txt # 如果有的话
pip install black flake8 mypy pytest # 代码质量和测试工具
# 运行测试
pytest tests/- 遵循 PEP 8 代码风格
- 使用类型注解 (Type Hints)
- 添加适当的文档字符串 (docstrings)
- 为新功能编写单元测试
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
MIT License
版权所有 (c) 2024 VideoForge 项目贡献者
特此免费授予任何获得本软件副本和相关文档文件(以下简称"软件")的人士,
无限制地处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件的副本,
并允许向其提供本软件的人这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。
本软件按"原样"提供,不提供任何形式的明示或暗示保证,包括但不限于对适销性、
特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对
因本软件或本软件的使用或其他交易而引起的任何索赔、损害或其他责任负责,
无论是在合同诉讼、侵权诉讼还是其他诉讼中。
本项目使用了以下优秀的开源项目:
- yt-dlp - 强大的视频下载工具
- faster-whisper - 高效的 Whisper 实现
- FFmpeg - 多媒体处理框架
- DeepSeek - AI 模型提供商
感谢所有贡献者和用户的支持!
- GitHub Issues: 项目 Issues 页面
- 电子邮件: your-email@example.com
- Discord: 加入社区
⭐ 如果这个项目对你有帮助,请给我们一个 Star! ⭐