编程 视频转录别急着跑 Whisper:AI-Video-Transcriber 的字幕优先思路与部署

2026-08-27 17:11:20 views 5

做视频转录,多数工具的默认路径是:下载视频 → 抽音频 → Whisper 整段转写。YouTube 这种自带字幕的平台,也照样花十几分钟跑一遍语音识别,慢且费钱。

wendy7756/AI-Video-Transcriber(Python,Apache-2.0,3.2k+ stars)把顺序反过来了:有原生字幕的平台直接提取字幕文本,Whisper 只做兜底。于是「转录 YouTube 视频」这类最常见的任务,从分钟级降到秒级。

说明:本文基于仓库 README 整理,命令与配置未在本机实测,以仓库为准。

两个关键架构决策

字幕优先,Whisper 兜底

有原生字幕的平台(YouTube、Bilibili 等)直接抓字幕,不走语音识别。结果卡片上的徽章标明本次走的路径:⚡ Subtitle(绿色)= 秒级提取;🎙 Whisper(青色)= 无字幕,下载音频后用 Faster-Whisper 转写。

这直接改变成本结构:字幕路径只耗一次 LLM 调用(优化 + 摘要),Whisper 路径还要多付一段语音识别算力。选型前先想清楚你的源:以 YouTube/Bilibili 为主,字幕优先收益明显;纯音频播客基本都会落到 Whisper 路径,就把它当成一个普通 Whisper 工具来比价。

视频下载与转录并行,且只下载一次

「保留原视频」默认开(≤720p)。下载与转录并行跑;走 Whisper 路径时,音频直接从这份视频里抽,同一 URL 只请求一次。只要文本,就把这个开关关掉,省带宽和磁盘。

部署

环境要求:Python 3.8+、FFmpeg(硬依赖,音频提取/合流/本地上传转码都要用)、一个 OpenAI 兼容 API Key(OpenAI、OpenRouter、本地 LLM 都行)。

# 自动安装
git clone https://github.com/wendy7756/AI-Video-Transcriber.git
cd AI-Video-Transcriber
chmod +x install.sh && ./install.sh

# Docker Compose
cp .env.example .env
docker-compose up -d

手动装就是 venv + requirements.txt + ffmpeg,macOS 建议虚拟环境避开 PEP 668。Docker 有个容易忽略的点:转录文件和原视频在容器内 /app/temp,要持久化得取消 docker-compose.ymlvolumes 的注释,否则容器一删全没。

启动:

python3 start.py           # http://localhost:8000
python3 start.py --prod    # 生产模式

--prod 不是性能开关,是稳定性开关:禁掉热重载,避免 30–60 分钟的长任务里 SSE 进度连接被重载打断。自己部署跑长视频时,漏掉这个参数会踩到「任务中途进度断掉」的坑。

使用要点

  • 本地上传与链接任务共用 POST /api/process-video(multipart 带 file),反向代理只放行单个路径时上传不受影响。
  • 本地上传的音视频先经 FFmpeg 归一化再交给 Whisper;.txt 直接进文本管线,不下载也不跑语音识别。
  • AI 模型在页面 AI Settings 面板配置:填 API Base URL + Key,点 Fetch 自动拉模型列表。凭据存浏览器 localStorage。多用户共享部署时注意:Key 存在浏览器里等于谁拿到页面就能读到,敏感场景建议用服务端环境变量。
  • 转录语言与摘要语言不一致时,自动出现翻译标签页;每个标签页有独立下载按钮。

给脚本和 agent 用

无头入口 transcribe.py,不启服务不开浏览器:

venv/bin/python transcribe.py "https://www.youtube.com/watch?v=VIDEO_ID" --json
venv/bin/python transcribe.py talk.mp4 -l zh --no-video
venv/bin/python transcribe.py notes.txt --no-llm   # 不需要 API Key

退出码:0 成功,2 输入不合法,1 下载/转码失败;--json 结果走 stdout,进度走 stderr,好接脚本。

一个值得记住的细节:no_speech 标记。视频没有语音时,管线直接跳过 LLM 返回空文本,README 明确要求 agent 如实上报「无语音」,而不是把空文稿丢给 LLM——空输入会得到一段自信的虚构内容。做自动化转录的团队可以把这条写进自己的错误处理。

另外仓库自带 Claude Code skill(.claude/skills/video-transcribe/SKILL.md)和可选 stdio MCP server(暴露 transcribe_video 工具),注册方法都在 README。CLI 也能传 --api-key,但推荐用环境变量,避免 Key 进 shell history。

什么情况下别用它

  • 源主要是无字幕的纯音频/小众平台:字幕优先的红利吃不到,退化成普通 Whisper 工具,先对比下直接跑 Faster-Whisper 的成本。
  • 机器上没有 FFmpeg 也不想装:它是硬依赖。
  • 数据不能出网的场景:虽然支持本地 LLM(任意 OpenAI 兼容端点),但要自己把 vLLM/Ollama 之类端点配好,默认示例都指向 OpenAI/OpenRouter。
  • 大批量跑长视频:先想清楚 --prod 和 temp 持久化,别把转录结果跑丢在容器里。

协议 Apache-2.0,可自行修改。项目地址:https://github.com/wendy7756/AI-Video-Transcriber

复制全文 生成海报 开源工具 视频转录 Whisper 字幕 Docker CLI

推荐文章

程序员茄子在线接单