AI 驱动的智能翻译 + 风趣口播 + 自动剪辑,3 分钟生成爆款短视频
| 功能 | 说明 |
|---|---|
| 🔗 视频下载 | 基于 yt-dlp,自动下载 YouTube 视频和字幕(≥720P) |
| 📝 智能转写 | 优先使用 YouTube 原生字幕,降级使用 OpenAI Whisper 离线转写 |
| 🤖 AI 翻译 | DeepSeek 大模型驱动,将外文字幕翻译为风趣幽默的中文口播稿 |
| 🗣️ 语音合成 | Microsoft Edge-TTS 生成自然流畅的中文配音(5 种音色可选) |
| ✂️ 智能剪辑 | 按口播时间戳精准截取原视频画面,口型与语音对齐 |
| 🎨 字幕烧录 | 自动生成 SRT 字幕并烧录到视频中,风格可定制 |
| 🎵 BGM 混音 | 自动匹配背景音乐,支持循环/截取,音量可调 |
| 📱 竖屏/横屏 | 支持 9:16 竖屏(抖音/小红书)和 16:9 横屏(B站/YouTube) |
| ⚡ 实时进度 | WebSocket 实时推送处理进度,前端动画展示 |
粘贴YouTube链接 → 下载视频+字幕 → 提取文字稿 → AI生成口播稿
↓
TTS语音合成 → 视频剪辑拼接 → 字幕烧录 → BGM混音 → 成品下载
- Python 3.10+
- FFmpeg(需在系统 PATH 中可用)
- DeepSeek API Key(注册获取)
# 1. 克隆仓库
git clone https://github.com/felix007/TubeSnap.git
cd TubeSnap
# 2. 安装依赖
pip install -r requirements.txt
# 3. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入你的 DeepSeek API Key
# 4. 准备 BGM(可选)
# 将 .mp3 背景音乐放入 static/assets/bgm/ 目录
# 5. 启动服务
python main.py
# 或
uvicorn main:app --host 0.0.0.0 --port 8000 --reload浏览器打开 http://localhost:8000 即可使用。
编辑 .env 文件进行个性化配置:
# DeepSeek API(必填)
DEEPSEEK_API_KEY=sk-your-api-key-here
DEEPSEEK_MODEL=deepseek-chat
# 视频下载
VIDEO_MIN_HEIGHT=720 # 最低分辨率
VIDEO_MAX_FILESIZE_MB=500 # 最大文件大小
# 短视频参数
SHORT_VIDEO_MIN_DURATION=180 # 最小时长(秒)
SHORT_VIDEO_MAX_DURATION=300 # 最大时长(秒)
# TTS 配音
TTS_DEFAULT_VOICE=zh-CN-XiaoxiaoNeural
TTS_SPEED_RATE=+10%
# 音频混音
BGM_VOLUME=0.25 # BGM 音量(0-1)
SPEECH_VOLUME=1.0 # 人声音量| 音色 | 标识符 | 适合风格 |
|---|---|---|
| 😄 活泼女声(晓晓) | zh-CN-XiaoxiaoNeural |
风趣幽默 |
| 👦 开朗男声(云希) | zh-CN-YunxiNeural |
科技资讯 |
| 👩 知性女声(云健) | zh-CN-YunjianNeural |
正经解说 |
| 👧 温柔女声(晓伊) | zh-CN-XiaoyiNeural |
温情故事 |
| 👨 沉稳男声(云扬) | zh-CN-YunyangNeural |
严肃分析 |
TubeSnap/
├── main.py # FastAPI 主应用入口
├── config.py # 全局配置管理
├── requirements.txt # Python 依赖
├── .env.example # 环境变量模板
│
├── modules/ # 核心模块
│ ├── pipeline.py # 管道编排(串联所有步骤)
│ ├── downloader.py # YouTube 视频下载(yt-dlp)
│ ├── transcriber.py # 字幕提取 + Whisper 转写
│ ├── translator.py # AI 翻译 + 口播稿生成(DeepSeek)
│ ├── tts_generator.py # TTS 语音合成(Edge-TTS)
│ ├── video_editor.py # 视频剪辑拼接
│ ├── subtitle.py # 字幕生成(SRT/ASS)+ 烧录
│ ├── audio_mixer.py # BGM 选取 + 音频混音
│ └── bgm_generator.py # 演示 BGM 生成
│
├── utils/ # 工具函数
│ └── ffmpeg_utils.py # FFmpeg 命令封装
│
├── templates/ # 前端模板
│ ├── index.html # 主页面(输入 + 进度 + 结果)
│ └── result.html # 结果展示页
│
├── static/ # 静态资源
│ ├── css/style.css # 现代化 UI 样式
│ ├── js/app.js # 前端交互逻辑
│ └── assets/bgm/ # 背景音乐库
│
└── output/ # 输出目录(自动创建)
├── downloads/ # YouTube 下载缓存
├── audio/ # TTS 语音片段
├── subtitles/ # SRT 字幕文件
└── final/ # 最终成品视频
| 层级 | 技术 | 用途 |
|---|---|---|
| Web 框架 | FastAPI + Uvicorn | HTTP API + WebSocket |
| 模板引擎 | Jinja2 | 服务端渲染页面 |
| 下载器 | yt-dlp | YouTube 视频/字幕下载 |
| 语音转写 | OpenAI Whisper | 离线语音识别(降级方案) |
| AI 翻译 | DeepSeek API(兼容 OpenAI SDK) | 字幕翻译 + 口播稿生成 |
| TTS | Edge-TTS | 中文语音合成 |
| 视频处理 | FFmpeg | 剪辑/字幕烧录/音频混音 |
| 前端 | 原生 HTML/CSS/JS | 现代化 UI,无需框架 |
通过 System Prompt 控制 AI 生成的口播风格:
- 😄 风趣幽默(默认):接地气、有网感、像朋友聊天
- 🎙️ 正经解说:专业客观的知识分享
- 🤖 科技资讯:简洁高效的技术快报
- 💝 温情故事:温暖细腻的叙事风格
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | / |
主页面 |
| GET | /result/{task_id} |
结果页 |
| POST | /api/process |
提交处理任务 |
| GET | /api/status/{task_id} |
查询任务状态 |
| GET | /api/download/{task_id} |
下载成品视频 |
| GET | /api/download/srt/{task_id} |
下载字幕文件 |
| GET | /api/preview/{task_id} |
在线预览视频 |
| GET | /api/tasks |
列出所有任务 |
| WS | /ws/progress/{task_id} |
WebSocket 进度推送 |
- API Key 安全:请勿将
.env文件提交到公开仓库。.gitignore已配置排除 - 网络要求:YouTube 下载需要稳定的网络环境,部分地区可能需要代理
- 版权声明:本项目仅供学习交流使用,生成视频请尊重原视频版权
- FFmpeg 依赖:确保 FFmpeg 已安装并在系统 PATH 中,或放置于
ffmpeg_extracted/目录 - 存储空间:视频处理会产生大量临时文件,建议保留至少 5GB 可用空间
欢迎提交 Issue 和 Pull Request!
MIT License — 详见 LICENSE 文件