

# Chronometrica 与 Pinto Studio：批量获取 YouTube 转录文本对比

如果你已有一份公开 YouTube 视频列表，并希望批量获取转录文本，可以选择 Chronometrica。它每次运行最多接受 1,000 项视频输入。默认数据集中，每个成功获取转录文本的唯一视频占一行。因此，当你需要按列表安排任务并核对缺失结果时，它很适合。[Chronometrica 文档](https://apify.com/chronometrica/youtube-transcript-scraper)

如果每次运行处理一个视频适合你当前的工作流程，而且按顺序排列、带时间戳的片段数组能满足需求，可以选择 Pinto Studio。[Pinto Studio 文档](https://apify.com/pintostudio/youtube-transcript-scraper)

主要选择在于任务的处理单位：你的工作流程会向每个任务提交多少个视频。批量输入可以减少需要启动的任务数量。但这并不能证明它在速度、成本或转录准确率方面更有优势。

本对比使用了于 2026 年 10 月 20 日核查的公开文档。它比较的是文档记载的输入和输出，并非直接对比测试的结果。下文方法适用于已有视频列表的阶段。你可以用它整理列表、检查少量样本，并在使用文本前核对每项输入的结果。

## 选择适合工作流程的任务规模

Apify Actor 是执行数据采集任务的程序。一次运行是指该程序执行一次。数据集是保存下来的结果行集合。

对于较大的列表，运行次数会影响采集前后的管理工作。你的工作流程必须启动任务、保存任务标识符、检查任务状态并收集结果。批量输入让你可以通过一次运行管理多个视频。

文档记载的处理单位如下：

| 选择依据 | Chronometrica | Pinto Studio |
| --- | --- | --- |
| 每次运行的输入 | 最多 1,000 项 | 1 个视频 |
| 数据集结果 | 每个成功获取转录文本的唯一视频占 1 行 | 1 条数据项，其中包含按顺序排列的转录片段 |
| 按列表安排任务 | 将列表拆分为多个批次 | 为每个视频启动 1 次运行 |

来源：[Chronometrica 文档](https://apify.com/chronometrica/youtube-transcript-scraper)和 [Pinto Studio 文档](https://apify.com/pintostudio/youtube-transcript-scraper)。

Pinto Studio 使用 `videoUrl` 和 `targetLanguage`。其片段包含 `start`、`dur` 和 `text`。它支持带字幕的公开视频，包括带自动字幕的视频。私密视频、受限视频和无字幕视频不在其文档记载的支持范围内。[Pinto Studio 文档](https://apify.com/pintostudio/youtube-transcript-scraper)

如果你的工作流程已经为每个视频单独跟踪任务，改变这一处理单位可能会增加工作量，却带来很少的收益。如果你正围绕一份已有列表建立工作流程，Chronometrica 的批量输入可以让你直接将任务分组。

在构建调度器之前做出这个选择。调度器是工作流程中负责启动和跟踪运行的部分。根据你将使用的输入单位来设计它，然后检查如何保存结果和失败记录。

## 采集文本前先设定字幕规则

公开视频不一定有可用的公开字幕。Chronometrica 读取已有字幕。当公开字幕缺失时，它不会通过语音转文字来生成转录文本。如果你的项目要求每个视频都有文本，这项限制就会影响选择：仅靠提取字幕无法满足这一要求。[Chronometrica 文档](https://apify.com/chronometrica/youtube-transcript-scraper)

语言需要单独决定。设置 `preferredLanguages` 后，Chronometrica 要求视频具备所请求的某种字幕语言。如果这些语言均不可用，它会在 `OUTPUT` 中记录不计费的 `LANGUAGE_UNAVAILABLE` 失败。它不会在不告知你的情况下返回其他语言。`OUTPUT` 是运行摘要，用于报告数量和失败情况。[Chronometrica 输入结构定义](https://apify.com/chronometrica/youtube-transcript-scraper/input-schema)

当数据集必须使用指定语言时，应采用这项严格规则。与不需要的语言文本在未被察觉的情况下进入数据集相比，缺失结果更容易核对。

采集前，写明允许的语言，以及是否同时接受人工字幕和自动字幕。分别做出这两个决定。某条字幕轨道即使符合语言规则，仍可能存在用词错误。

Chronometrica 文档记载的结果包括所选语言、可用的字幕语言，以及标明字幕为人工制作还是自动生成的标志。这些信息有助于你在采集后应用规则。但它们不能证明文本中的词语正确。[Chronometrica 文档](https://apify.com/chronometrica/youtube-transcript-scraper)

如果字幕缺失会导致研究无法开展，应提前决定是否允许使用单独的语音转文字流程。清楚标记所有生成的转录文本，让后续使用者能够将它们与提取的字幕区分开。

## 安排完整列表前先做小规模检查

在付费采集之前，你可以准备好大部分工作流程。目标是确认你能核对各项输入的结果，并使用返回的文本。

1. 确定允许的视频和语言。说明哪些公开视频应纳入采集范围。记录语言规则和字幕规则。将排除的视频单独记录，并注明排除原因。这样，后续出现数量差异时，就不会被误认为是采集失败。
2. 拆分列表前先找出重复视频。使用视频 ID 识别同一个视频。两种形式的 URL 可能指向同一个视频。Chronometrica 接受多种形式，包括标准视频链接、Shorts 链接、短链接和原始视频 ID，并且对重复视频只处理一次。先清理列表，更容易核对计划中的数量。[Chronometrica 文档](https://apify.com/chronometrica/youtube-transcript-scraper)
3. 选择几个公开视频进行首次检查。纳入对项目重要的样本，例如不同频道或不同字幕类型的视频。使用你计划对完整列表采用的语言规则。用宽松设置进行检查，无法说明最终更严格的规则能否满足需求。
4. 建立批次，每批不超过 1,000 项输入。去除重复视频 ID 后，再统计条目数。运行开始后，保持该批次列表不变。如果之后修改列表，应将改动另存为新的批次记录。公开的[批量提取 YouTube 转录文本示例](https://apify.com/chronometrica/youtube-transcript-scraper/examples/batch-youtube-transcript-extraction)记载了批量输入上限。
5. 保存输入和运行记录。使用台账，也就是用于跟踪每项输入的表格。保存视频 ID、批次 ID、运行 ID、处理结果、重试标志、所选语言和抓取时间。这些是工作流程中的跟踪列，不是额外的 Actor 输入字段。未知值应留空或标记为未知。
6. 读取两个结果存储位置。从数据集中收集成功获取的转录文本行。读取 `OUTPUT`，查看本次运行的各项数量统计和失败输入详情。当你需要将缺失结果追溯到单项输入时，启用 `includeFailedInputDetails`。仅靠数据集导出文件，无法核对每个已提交视频的结果。[Chronometrica 文档](https://apify.com/chronometrica/youtube-transcript-scraper)
7. 导入文本前，核对每项唯一输入的结果。将成功结果行与视频 ID 匹配。将失败记录与其余输入匹配。对结果未知的输入逐一调查。将重复条目与唯一视频分开记录，避免将跳过的重复条目计为缺失转录文本。
8. 选取少量片段与视频核对。收听原始音频，比较文本和时间戳。检查各类名称、数字、专业术语，以及你计划引用的片段。保存发现的问题。这项检查用于判断字幕是否适合你的工作，不会得出通用的准确率评分。
9. 清楚保留尚未解决的缺失记录。在预算和来源规则允许的范围内，仅重试标记为可重试的失败。字幕缺失时，应另行决定如何处理，而不是反复重试。只有在项目允许生成转录文本时，才使用单独且标记清楚的语音转文字流程。

首次检查应回答 2 个问题：返回的文本是否可用，以及每项缺失结果是否都能解释清楚？如果任一问题的答案不明确，应先修正工作流程中的相应部分，再增加批次大小。

## 从已核验的输入结构开始

以下示例符合已核查的公开输入结构定义。它仅接受了输入检查，没有作为付费 Actor 任务执行。请将示例 URL 替换为你自己的视频 URL。字幕的可用情况可能变化。

```json
{
  "startUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "https://www.youtube.com/watch?v=M7lc1UVf-VE",
    "https://www.youtube.com/watch?v=jNQXAC9IVRw"
  ],
  "preferredLanguages": ["en"],
  "outputFormats": ["json", "text"],
  "includeFailedInputDetails": true
}
```

从已核验的输入结构开始

`startUrls` 包含 3 个字符串，低于 1,000 项的上限。`preferredLanguages` 请求英语。`outputFormats` 请求受支持的 JSON 和文本格式。`includeFailedInputDetails` 启用未返回转录文本的输入详情。[Chronometrica 输入结构定义](https://apify.com/chronometrica/youtube-transcript-scraper/input-schema)

使用此语言设置时，没有所请求字幕语言的视频会被记为失败，并记录在 `OUTPUT` 中。它不会变成一行空转录文本。导入结果时，应保留这一区别：缺失文本属于数据缺失，不是词数为 0 的转录文本。[Chronometrica 文档](https://apify.com/chronometrica/youtube-transcript-scraper)

小规模运行后，先检查实际导出文件，再据此构建导入流程。检查你的流程能否读取视频标识、语言、带时间戳的片段、拼接后的文本和抓取时间。这些都是文档记载的输出信息，但你自己的导入流程必须保留项目所需的信息。[Chronometrica 文档](https://apify.com/chronometrica/youtube-transcript-scraper)

如需更全面地了解字幕采集，请参阅 [YouTube 字幕提取](/zh-Hans/articles/youtube-%E6%96%87%E5%AD%97%E7%A8%BF%E6%8F%90%E5%8F%96%E4%B8%8E%E7%BC%BA%E5%A4%B1%E5%AD%97%E5%B9%95%E6%A3%80%E6%9F%A5/)。本文对比重点是任务规模选择和结果处理。

## 虚构示例：安排并核查 1,100 个唯一视频

本示例全部为虚构内容。输入数量和字幕处理结果均为编造，用于说明决策方法。它们不是测试结果或客户结果。

一个研究团队最初有 1,200 项输入。团队发现 100 个重复的视频 ID，并移除这些重复条目。清理后的列表包含 1,100 个唯一视频。

使用 Chronometrica 时，团队建立 2 个批次：一批包含 1,000 项输入，另一批包含 100 项输入。计划的运行次数为：

`ceil(1,100 / 1,000) = 2 runs`

这里的 `ceil` 表示向上取整。该计算依据文档记载的批量上限。[Chronometrica 批量示例](https://apify.com/chronometrica/youtube-transcript-scraper/examples/batch-youtube-transcript-extraction)

按 Pinto Studio 文档记载的单视频处理单位，同一列表需要安排 1,100 次运行。[Pinto Studio 文档](https://apify.com/pintostudio/youtube-transcript-scraper)

这一差异涉及工作流程启动的 Actor 任务数量。它没有比较网络请求数、计算时间、总成本或成功率。两种工作流程仍需逐个处理视频。

现在假设 900 个视频提供所请求语言的字幕，200 个视频不提供。在这个虚构案例中，对 Chronometrica 的 2 次运行进行数量核对时，预期结果为：

`1,100 unique inputs = 900 successful transcript rows + 200 failed inputs`

团队从数据集中读取成功结果行，并从 2 份 `OUTPUT` 摘要中读取失败输入详情。随后更新台账，确保每个唯一视频都有已知的处理结果。这里使用了 Chronometrica 文档记载的结果记录和失败记录。[Chronometrica 文档](https://apify.com/chronometrica/youtube-transcript-scraper)

这个虚构案例中，字幕可用的视频占比为：

`900 / 1,100 × 100 = 81.82%`

该百分比描述的是这次虚构采集。它不是实际观测到的产品成功率，也不是准确率评分。

团队在采集记录中保留全部 200 项缺失记录。团队不会用空文本替代它们，也不会将这些视频视为没有语音内容的视频。团队还保留了被移除的 100 项重复条目，以便说明最初的 1,200 项输入如何变为 1,100 个唯一视频，最终得到 900 行转录文本。

## 增加工作量前先检查数据集

大型数据集可能掩盖缺失结果。每次审核都应先核对数量，再检查内容。

Chronometrica 的 `OUTPUT` 摘要报告已接收的输入数、已处理的唯一视频数、成功结果行数、已跳过的重复条目数、不可用或不受支持的输入数，以及各错误代码的数量。可选详情有助于追踪未生成转录文本的输入。使用这些记录来解释结果数量。[Chronometrica 文档](https://apify.com/chronometrica/youtube-transcript-scraper)

不要假定摘要中的每项计数都代表一个独立分组。使用输入台账，为每个唯一视频记录一个当前处理结果。将错误代码保留为这些结果的原因，不要将其计为更多视频。

然后检查文本质量。很长的转录文本也可能包含错误词语。有时间戳不代表时间对齐准确。在引用文本、比较术语或陈述说话者的发言内容之前，应核对原视频中的相应片段。对于未知值，应保留其不确定性。

一则公开的 [DataHoarder 大量获取 YouTube 转录文本需求帖](https://www.reddit.com/r/DataHoarder/comments/1pyxgiu/wherehow_to_get_large_amounts_of_youtube_video/)提到，发帖者需要约 500,000 份转录文本，并担心批量上限、成本和来源网站封锁。这说明了任务调度的重要性。但它不能证明任一 Actor 都能可靠地完成这一规模的采集。

只有在你能核对较小规模采集的全部结果，并了解其中的缺失情况后，才应扩大规模。为下一阶段设定支出上限。本对比不能证明价格优势或完成时间。

如果你仍需查找视频，请使用另一篇指南，了解如何[从搜索结果构建 YouTube 转录文本语料库](/zh-Hans/articles/%E4%BB%8E%E6%90%9C%E7%B4%A2%E7%BB%93%E6%9E%9C%E6%9E%84%E5%BB%BA%E5%AD%97%E5%B9%95%E8%AF%AD%E6%96%99%E5%BA%93/)。准备好 URL 列表后，再回到本文执行批次和结果检查。

## 开始一个小规模 Chronometrica 批次

如果你已有列表，且批量调度有助于处理任务，可以从 [Chronometrica YouTube Transcript Scraper](https://apify.com/chronometrica/youtube-transcript-scraper) 开始。替换示例 URL，设置字幕语言规则，并启用失败输入详情。启动运行前，保存输入列表。

运行结束后，将数据集与 `OUTPUT` 及台账进行核对。选取几个片段，与原视频核对。当每项输入都有已知结果，且文本满足需求时，将同样的流程应用于每批不超过 1,000 项输入的批次。

## 来源和延伸阅读

- [Chronometrica YouTube Transcript Scraper 文档](https://apify.com/chronometrica/youtube-transcript-scraper)
- [Chronometrica 输入结构定义](https://apify.com/chronometrica/youtube-transcript-scraper/input-schema)
- [批量提取 YouTube 转录文本公开示例](https://apify.com/chronometrica/youtube-transcript-scraper/examples/batch-youtube-transcript-extraction)
- [Pinto Studio YouTube Transcript Scraper 文档](https://apify.com/pintostudio/youtube-transcript-scraper)
- [大量获取 YouTube 转录文本的公开需求帖](https://www.reddit.com/r/DataHoarder/comments/1pyxgiu/wherehow_to_get_large_amounts_of_youtube_video/)