视频转写
粘贴 YouTube/TikTok/B站等链接,用 AI 转写并总结视频与播客内容
AI Video Transcriber
English | 中文
一个 AI 驱动的工具,用于转录和总结视频与播客——粘贴来自 YouTube、TikTok、Bilibili、Apple Podcasts、SoundCloud 及 30 多个平台的 URL,或上传本地文件(音频、视频或纯文本)。

✨ 功能特性
- 🎥 多平台支持:支持 YouTube、TikTok、Bilibili、Apple Podcasts、SoundCloud 等 30 多个平台
- 📁 本地文件上传:拖放或选择文件——支持的格式包括
.txt(视为转录文本)、.mp3、.mp4、.m4a、.wav、.webm、.mkv、.ogg、.flac。媒体文件会通过 FFmpeg 标准化后再传给 Whisper;与 URL 一样执行相同的优化 → 翻译 → 总结管道。 - ⚡ 字幕优先架构:对于有原生字幕的平台(如 YouTube),可即时提取转录文本——无需下载音频。Whisper 仅作为回退方案,使整个流程大幅提速。
- 🗣️ 智能转录:当没有字幕时,使用 Faster-Whisper 实现高精度语音转文字
- 🤖 AI 文本优化:自动修正错别字、补全句子和智能分段
- 🌍 多语言摘要:生成多种语言的智能摘要
- 🔧 自带模型:直接在 UI 中配置任何兼容 OpenAI 的 API 端点(OpenAI、OpenRouter、本地 LLM 等)——输入 API Base URL 和 API Key,点击 Fetch 自动发现所有可用模型并选择
- ⚙️ 条件翻译:摘要语言与源语言不同时,自动翻译转录文本
- 📱 移动友好:完美支持移动设备
🚀 快速开始
前置依赖
- Python 3.8+
- FFmpeg(用于 yt-dlp 音频提取和上传媒体文件的标准化处理)
- 来自任意兼容 OpenAI 的提供商(OpenAI、OpenRouter 等)的 API Key——直接在 UI 中配置,无需服务端环境变量
安装
方法一:自动安装
# 克隆仓库
git clone https://github.com/wendy7756/AI-Video-Transcriber.git
cd AI-Video-Transcriber
# 运行安装脚本
chmod +x install.sh
./install.sh
方法二:Docker
# 克隆仓库
git clone https://github.com/wendy7756/AI-Video-Transcriber.git
cd AI-Video-Transcriber
# 使用 Docker Compose(最简单方式)
cp .env.example .env
# 如需服务端默认值,编辑 .env 文件(可选)
docker-compose up -d
# 或直接使用 Docker
docker build -t ai-video-transcriber .
docker run -p 8000:8000 --env-file .env ai-video-transcriber
该镜像使用 Python 3.12(Debian Bookworm),升级 pip/setuptools/wheel,然后从 requirements.txt 安装依赖——版本约束与在当前 Python 版本上新建本地虚拟环境一致。
方法三:手动安装
- 安装 Python 依赖
# macOS(PEP 668)强烈建议使用虚拟环境
python3 -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
- 安装 FFmpeg
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg
# CentOS/RHEL
sudo yum install ffmpeg
- 配置环境变量 (可选)
# 如果希望使用服务端默认值,可设置以下变量——否则通过 UI 配置
export OPENAI_API_KEY="your_api_key_here"
export OPENAI_BASE_URL="https://openrouter.ai/api/v1" # 任意兼容 OpenAI 的端点
启动服务
python3 start.py
服务启动后,打开浏览器访问 http://localhost:8000
生产模式(推荐用于长视频)
为避免长时间处理期间 SSE 断开,请以生产模式启动(热重载已禁用):
python3 start.py --prod
该模式下 SSE 连接在长时间任务(30-60分钟以上)中保持稳定。
显式环境变量运行示例
source venv/bin/activate
export OPENAI_API_KEY=your_api_key_here # 可选:服务端默认值
# export OPENAI_BASE_URL=https://openrouter.ai/api/v1 # 可选:服务端默认值
python3 start.py --prod
📖 使用指南
- 选择输入——URL 或文件
- 视频/播客 URL:在输入框内粘贴 YouTube、Bilibili 或任何其他支持平台的链接
- 本地文件:将文件拖放到虚线上传区(或点击浏览)。点击 Transcribe 按钮开始处理;上传文件使用与 URL 相同的 API 路由(
POST /api/process-video,multipartfile),这有助于反向代理只允许该路径时正常工作。
- 选择摘要语言:从输入区旁边的下拉菜单中选择输出语言
- (可选)配置 AI 模型:点击 AI Settings 展开面板
- 输入 API Base URL(例如
https://openrouter.ai/api/v1)和 API Key - 点击 Fetch 自动加载该提供商的所有模型
- 选择你想要的模型——留空则使用服务端默认模型
- 输入 API Base URL(例如
- 开始处理:点击 Transcribe 按钮。对于 URL 任务,进度条会显示当前模式:
- ⚡ Subtitle(绿色)——找到原生字幕,数秒内提取转录文本
- 🎙 Whisper(琥珀色)——无字幕可用,正在下载音频进行转录
对于 本地上传,媒体文件会通过 FFmpeg 标准化后使用 Whisper 转录;纯文本
**.txt`** 文件会跳过下载/Whisper,直接进入文本管道(优化→摘要,语言不同时进行翻译)。
- 查看结果:查看优化后的转录文本和 AI 摘要
- 如果转录语言 ≠ 选择的摘要语言,会自动显示 翻译 标签页
- 下载文件:保存 Markdown 格式的文件(转录文本/翻译/摘要)
🛠️ 技术架构
后端技术栈
- FastAPI:现代 Python Web 框架
- yt-dlp:视频下载与处理
- FFmpeg:音频提取与本地上传文件的标准化(单声道 16 kHz 适配 Whisper)
- Faster-Whisper:高效语音转录
- OpenAI API:智能文本摘要
前端技术栈
- HTML5 + CSS3:响应式界面设计
- JavaScript (ES6+):现代前端交互
- Marked.js:Markdown 渲染
- Font Awesome:图标库
项目结构
AI-Video-Transcriber/
├── backend/ # 后端代码
│ ├── main.py # FastAPI 主应用
│ ├── video_processor.py # 视频处理模块
│ ├── transcriber.py # 转录模块
│ ├── summarizer.py # 摘要模块
│ ├── translator.py # 翻译模块
│ └── llm_sanitize.py # 后处理 LLM 输出(去除模板化内容)
├── static/ # 前端文件
│ ├── index.html # 主页面
│ └── app.js # 前端逻辑
├── temp/ # 临时文件目录
├── Dockerfile # Docker 镜像配置
├── docker-compose.yml # Docker Compose 配置
├── .dockerignore # Docker 忽略规则
├── .env.example # 环境变量模板
├── requirements.txt # Python 依赖
├── start.py # 启动脚本
└── README.md # 项目文档
⚙️ 配置选项
环境变量
| 变量 | 描述 | 默认值 | 必填 |
|---|---|---|---|
OPENAI_API_KEY | API 密钥(服务端默认) | - | 否 — 也可在界面中设置 |
HOST | 服务器地址 | 0.0.0.0 | 否 |
PORT | 服务器端口 | 8000 | 否 |
WHISPER_MODEL_SIZE | Whisper 模型大小 | base | 否 |
UPLOAD_MAX_MB | 本地文件上传大小上限(MB) | 200 | 否 |
另有一个可选专用端点 POST /api/process-upload,其行为与向 /api/process-video 发送 file 相同。
Whisper 模型大小选项
| 模型 | 参数量 | 仅英文 | 多语言 | 速度 | 内存占用 |
|---|---|---|---|---|---|
| tiny | 39 M | ✓ | ✓ | 快 | 低 |
| base | 74 M | ✓ | ✓ | 中等 | 低 |
| small | 244 M | ✓ | ✓ | 中等 | 中等 |
| medium | 769 M | ✓ | ✓ | 慢 | 中等 |
| large | 1550 M | ✗ | ✓ | 很慢 | 高 |
🔧 常见问题
问:为什么转录速度很慢?
答:转录速度取决于视频长度、Whisper 模型大小和硬件性能。尝试使用更小的模型(如 tiny 或 base)可以提高速度。
问:支持哪些视频平台?
答:支持 yt-dlp 支持的所有平台,包括但不限于:YouTube、TikTok、Facebook、Instagram、Twitter、Bilibili、优酷、爱奇艺、腾讯视频等。
问:本地文件类型和大小限制是什么?
答:允许的扩展名包括 .txt、.mp3、.mp4、.m4a、.wav、.webm、.mkv、.ogg、.flac。默认每个文件最大 200 MB;可通过服务器上的 UPLOAD_MAX_MB 环境变量覆盖。
问:如果 AI 优化功能不可用怎么办?
答:AI 功能需要来自任何兼容 OpenAI 的提供商(OpenAI、OpenRouter 等)的 API 密钥。您可以直接在界面的 AI 设置 面板中输入密钥——无需重启服务器。或者,也可以将 OPENAI_API_KEY 设置为环境变量作为服务端默认值。
问:启动/使用服务时遇到 HTTP 500 错误,为什么?
答:大多数情况下是环境配置问题,而非代码缺陷。请检查:
- 确保已激活虚拟环境:
source venv/bin/activate - 在虚拟环境中安装依赖:
pip install -r requirements.txt - 在 AI 设置 面板中配置您的 API 密钥,或将
OPENAI_API_KEY设置为环境变量 - 安装 FFmpeg:
brew install ffmpeg(macOS)/sudo apt install ffmpeg(Debian/Ubuntu) - 如果端口 8000 被占用,请停止旧进程或更改
PORT
问:如何处理长视频?
答:系统可以处理任意长度的视频,但处理时间会相应增加。对于非常长的视频,建议使用较小的 Whisper 模型。
问:如何使用 Docker 部署?
答:Docker 提供了最简单的部署方式:
前提条件:
- 从 https://www.docker.com/products/docker-desktop/ 安装 Docker Desktop
- 确保 Docker 服务正在运行
快速开始:
# 克隆并设置
git clone https://github.com/wendy7756/AI-Video-Transcriber.git
cd AI-Video-Transcriber
cp .env.example .env
# 编辑 .env 文件设置服务端默认值(可选)
# 使用 Docker Compose 启动(推荐)
docker-compose up -d
# 或者手动构建并运行
docker build -t ai-video-transcriber .
docker run -p 8000:8000 --env-file .env ai-video-transcriber
常见 Docker 问题:
- 端口冲突:如果端口 8000 被占用,请更改端口映射
-p 8001:8000 - 权限拒绝:确保 Docker Desktop 正在运行且您拥有适当的权限
- 构建失败:检查磁盘空间(需要约 2GB 空闲)和网络连接
- 容器无法启动:使用
docker logs <container_id>查看 Docker 日志
Docker 命令:
# 查看运行中的容器
docker ps
# 检查容器日志
docker logs ai-video-transcriber-ai-video-transcriber-1
# 停止服务
docker-compose down
# 修改后重新构建
docker-compose build --no-cache
问:内存要求是多少?
答:内存使用量取决于部署方式和工作负载:
Docker 部署:
- 基础内存:空闲容器约 128MB
- 处理期间:500MB - 2GB,取决于视频长度和 Whisper 模型
- Docker 镜像大小:需要约 1.6GB 磁盘空间
- 推荐:4GB+ 内存以确保流畅运行
传统部署:
- 基础内存:FastAPI 服务器约 50-100MB
- Whisper 模型内存使用:
tiny:约 150MBbase:约 250MBsmall:约 750MBmedium:约 1.5GBlarge:约 3GB
- 峰值使用:基础 + 模型 + 视频处理(额外约 500MB)
内存优化建议:
# 使用更小的 Whisper 模型减少内存占用
WHISPER_MODEL_SIZE=tiny # 或 base
# 对于 Docker,可按需限制容器内存
docker run -m 1g -p 8000:8000 --env-file .env ai-video-transcriber
# 监控内存使用
docker stats ai-video-transcriber-ai-video-transcriber-1
问:网络连接错误或超时?
答:如果在视频下载或 API 调用时遇到网络相关错误,请尝试以下解决方案:
常见网络问题:
- 视频下载失败,出现“无法提取”或超时错误
- OpenAI API 调用返回连接超时或 DNS 解析失败
- Docker 镜像拉取失败或极其缓慢
解决方案:
- 切换 VPN/代理:尝试连接到不同的 VPN 服务器或更改代理设置
- 检查网络稳定性:确保互联网连接稳定
- 更改网络后重试:更改网络设置后等待 30-60 秒再重试
- 使用其他端点:如果使用自定义 OpenAI 端点,请确保它们可从您的网络访问
- Docker 网络问题:如果容器网络故障,请重启 Docker Desktop
快速网络测试:
# 测试视频平台访问
curl -I https://www.youtube.com/
# 测试您的 AI 提供商端点
curl -I https://openrouter.ai
# 测试 Docker Hub 访问
docker pull hello-world
🎯 支持的语言
转录
- 通过 Whisper 支持 100 多种语言
- 自动语言检测
- 主要语言的高准确度
摘要生成
- 英语
- 简体中文
- 日语
- 韩语
- 西班牙语
- 法语
- 德语
- 葡萄牙语
- 俄语
- 阿拉伯语
- 以及其他更多语言…
📈 性能提示
-
硬件要求:
- 最低:4GB 内存,双核 CPU
- 推荐:8GB 内存,四核 CPU
- 理想:16GB 内存,多核 CPU,SSD 存储
-
处理时间估算:
视频长度 字幕模式 Whisper 模式 备注 1 分钟 约 5 秒 30 秒–1 分钟 字幕模式无需下载音频 5 分钟 约 10 秒 2–5 分钟 YouTube 自动字幕触发字幕模式 15 分钟 约 15 秒 5–15 分钟 大多数 YouTube 视频支持字幕模式 30 分钟以上 约 20 秒 15–60 分钟 播客/纯音频始终使用 Whisper
🤝 贡献
我们欢迎 Issues 和 Pull Requests!
- Fork 本项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交您的更改 (
git commit -m '添加某个 AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开一个 Pull Request
Acknowledgments
- yt-dlp - 强大的视频下载工具
- Faster-Whisper - 高效的Whisper实现
- FastAPI - 现代Python Web框架
- OpenAI - 智能文本处理API
📞 Contact
如有问题或建议,请提交Issue或联系Wendy。
🚀 试用完整产品 — sipsip.ai
此工具是 sipsip.ai 的开源部分。
完整产品更进一步:
- 📧 每日邮件摘要 — 关注你喜爱的创作者,每天早上在收件箱中收到 AI 精选的摘要
- ⚡ 按需转录和总结任何视频或播客
- 🌐 所有功能均支持多语言
免费开始 — 无需信用卡。
➡️ sipsip.ai
⭐ Star History
如果你觉得这个项目有帮助,请考虑给它一颗星!
