小马的 AI 工具集

视频转写

粘贴 YouTube/TikTok/B站等链接,用 AI 转写并总结视频与播客内容

视频转写
类型 应用 2,753 星标 更新 2026-04-30 许可 Apache-2.0 原仓库 主页

AI Video Transcriber

English | 中文

一个 AI 驱动的工具,用于转录和总结视频与播客——粘贴来自 YouTube、TikTok、Bilibili、Apple Podcasts、SoundCloud 及 30 多个平台的 URL,或上传本地文件(音频、视频或纯文本)。

Interface

✨ 功能特性

  • 🎥 多平台支持:支持 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 自动发现所有可用模型并选择
  • ⚙️ 条件翻译:摘要语言与源语言不同时,自动翻译转录文本
  • 📱 移动友好:完美支持移动设备

Star History Chart

🚀 快速开始

前置依赖

  • 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 版本上新建本地虚拟环境一致。

方法三:手动安装

  1. 安装 Python 依赖
# macOS(PEP 668)强烈建议使用虚拟环境
python3 -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
  1. 安装 FFmpeg
# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg

# CentOS/RHEL
sudo yum install ffmpeg
  1. 配置环境变量 (可选)
# 如果希望使用服务端默认值,可设置以下变量——否则通过 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

📖 使用指南

  1. 选择输入——URL 或文件
    • 视频/播客 URL:在输入框内粘贴 YouTube、Bilibili 或任何其他支持平台的链接
    • 本地文件:将文件拖放到虚线上传区(或点击浏览)。点击 Transcribe 按钮开始处理;上传文件使用与 URL 相同的 API 路由(POST /api/process-video,multipart file),这有助于反向代理只允许该路径时正常工作。
  2. 选择摘要语言:从输入区旁边的下拉菜单中选择输出语言
  3. (可选)配置 AI 模型:点击 AI Settings 展开面板
    • 输入 API Base URL(例如 https://openrouter.ai/api/v1)和 API Key
    • 点击 Fetch 自动加载该提供商的所有模型
    • 选择你想要的模型——留空则使用服务端默认模型
  4. 开始处理:点击 Transcribe 按钮。对于 URL 任务,进度条会显示当前模式:
    • ⚡ Subtitle(绿色)——找到原生字幕,数秒内提取转录文本
    • 🎙 Whisper(琥珀色)——无字幕可用,正在下载音频进行转录 对于 本地上传,媒体文件会通过 FFmpeg 标准化后使用 Whisper 转录;纯文本 **.txt`** 文件会跳过下载/Whisper,直接进入文本管道(优化→摘要,语言不同时进行翻译)。
  5. 查看结果:查看优化后的转录文本和 AI 摘要
    • 如果转录语言 ≠ 选择的摘要语言,会自动显示 翻译 标签页
  6. 下载文件:保存 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_KEYAPI 密钥(服务端默认)-否 — 也可在界面中设置
HOST服务器地址0.0.0.0
PORT服务器端口8000
WHISPER_MODEL_SIZEWhisper 模型大小base
UPLOAD_MAX_MB本地文件上传大小上限(MB)200

另有一个可选专用端点 POST /api/process-upload,其行为与向 /api/process-video 发送 file 相同。

Whisper 模型大小选项

模型参数量仅英文多语言速度内存占用
tiny39 M
base74 M中等
small244 M中等中等
medium769 M中等
large1550 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 提供了最简单的部署方式:

前提条件:

快速开始:

# 克隆并设置
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:约 150MB
    • base:约 250MB
    • small:约 750MB
    • medium:约 1.5GB
    • large:约 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 镜像拉取失败或极其缓慢

解决方案:

  1. 切换 VPN/代理:尝试连接到不同的 VPN 服务器或更改代理设置
  2. 检查网络稳定性:确保互联网连接稳定
  3. 更改网络后重试:更改网络设置后等待 30-60 秒再重试
  4. 使用其他端点:如果使用自定义 OpenAI 端点,请确保它们可从您的网络访问
  5. 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!

  1. Fork 本项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的更改 (git commit -m '添加某个 AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开一个 Pull Request

Acknowledgments

📞 Contact

如有问题或建议,请提交Issue或联系Wendy。


🚀 试用完整产品 — sipsip.ai

此工具是 sipsip.ai 的开源部分。

完整产品更进一步:

  • 📧 每日邮件摘要 — 关注你喜爱的创作者,每天早上在收件箱中收到 AI 精选的摘要
  • ⚡ 按需转录和总结任何视频或播客
  • 🌐 所有功能均支持多语言

免费开始 — 无需信用卡。

➡️ sipsip.ai


⭐ Star History

如果你觉得这个项目有帮助,请考虑给它一颗星!

在 GitHub 查看完整项目