HomeBlogTranscribePlansAPI Keys

yt-dlp 字幕对转录文本 API:哪个使用

分割视图,yt-dlp 字幕下载命令在干净 JSON 转录文本 API 响应旁边

yt-dlp 可以下载基本上任何 YouTube 视频的字幕,如果你用它做媒体下载,你可能已经发现了标志。它是一个真正伟大的工具——我在任何地方都安装它。但"可以下载字幕"和"是在服务中获取转录文本的正确方式"是不同的声明,我被混淆它们烧伤了。这是每个方法实际上是什么样的,包括没人警告你的清理步骤。

yt-dlp 方式,逐端

抓自动生成的英文字幕,没有下载视频:

yt-dlp --write-auto-sub --sub-lang en --skip-download \
  -o "%(id)s" "https://www.youtube.com/watch?v=VIDEO_ID"

(对人类上传的轨道使用 --write-sub 代替,或两个标志一起。)这掉下一个 VIDEO_ID.en.vtt 文件。打开它,你会看到为什么你还没完成:

WEBVTT
Kind: captions
Language: en

00:00:00.320 --> 00:00:02.879
so today we're going to look at
00:00:01.760 --> 00:00:04.560
so today we're going to look at
how youtube handles

自动字幕是"滚动"字幕——每个提示重复前一行,所以天真的剥离给你每句两次。每个人下这条路最后写这个清理的某个版本:

import re, pathlib

lines = []
for line in pathlib.Path("VIDEO_ID.en.vtt").read_text().splitlines():
    if "-->" in line or line.startswith(("WEBVTT", "Kind:", "Language:")) or not line.strip():
        continue
    line = re.sub(r"<[^>]+>", "", line).strip()   # strip inline timing tags
    if not lines or line != lines[-1]:            # collapse rolling duplicates
        lines.append(line)
text = " ".join(lines)

命令、子进程处理、文件 I/O、去重——在你有纯文本之前称之为 40 行胶水。

yt-dlp 是正确答案的地方

它在服务器上伤害的地方

三个单独的维护负担在 yt-dlp 移入后端时出现:

API 方式

托管端点版本的上面整个管道:

curl -s "https://youtube2text.org/api/transcribe?url=VIDEO_ID" \
  -H "x-api-key: yt_YOUR_KEY"

返回 JSON——{"result": {"videoId", "title", "pubDate", "content", ...}}——已经去重纯文本、带结构化错误(TRANSCRIPT_UNAVAILABLE 当没有字幕存在时、代替 stderr 考古)。一个共享演示密钥是一个调用离开(curl -s https://youtube2text.org/api/demo-key、每个 IP 每月 5 个视频);完整快速启动在用 curl 提取转录文本

诚实的脚注

两个方法从相同地方获取相同字幕,两个都必须处理 YouTube 不想要自动化流量。yt-dlp 制作那是你的问题——在笔记本上很好、在服务器上代理项目。托管 API 制作它是提供者的问题:youtube2text.org 路由获取通过旋转住宅代理服务器端、这恰好是你不能容易从数据中心 IP 复制的片段。你不为转录文本付费;你付费不操作那个。

我的分割:yt-dlp 用于存档和我自己机器上的一次性、API 用于任何无人值守运行。如果那匹配你的情况,密钥在 youtube2text.org/app/keys——Google 登录、免费 5/月层、从 5.99 美元付费。