
如果每次运行处理一个视频适合你当前的工作流程,而且按顺序排列、带时间戳的片段数组能满足需求,可以选择 Pinto Studio。Pinto Studio 文档
主要选择在于任务的处理单位:你的工作流程会向每个任务提交多少个视频。批量输入可以减少需要启动的任务数量。但这并不能证明它在速度、成本或转录准确率方面更有优势。
本对比使用了于 2026 年 10 月 20 日核查的公开文档。它比较的是文档记载的输入和输出,并非直接对比测试的结果。下文方法适用于已有视频列表的阶段。你可以用它整理列表、检查少量样本,并在使用文本前核对每项输入的结果。
选择适合工作流程的任务规模
Apify Actor 是执行数据采集任务的程序。一次运行是指该程序执行一次。数据集是保存下来的结果行集合。
对于较大的列表,运行次数会影响采集前后的管理工作。你的工作流程必须启动任务、保存任务标识符、检查任务状态并收集结果。批量输入让你可以通过一次运行管理多个视频。
文档记载的处理单位如下:
| 选择依据 | Chronometrica | Pinto Studio |
|---|---|---|
| 每次运行的输入 | 最多 1,000 项 | 1 个视频 |
| 数据集结果 | 每个成功获取转录文本的唯一视频占 1 行 | 1 条数据项,其中包含按顺序排列的转录片段 |
| 按列表安排任务 | 将列表拆分为多个批次 | 为每个视频启动 1 次运行 |
来源:Chronometrica 文档和 Pinto Studio 文档。
Pinto Studio 使用 `videoUrl` 和 `targetLanguage`。其片段包含 `start`、`dur` 和 `text`。它支持带字幕的公开视频,包括带自动字幕的视频。私密视频、受限视频和无字幕视频不在其文档记载的支持范围内。Pinto Studio 文档
如果你的工作流程已经为每个视频单独跟踪任务,改变这一处理单位可能会增加工作量,却带来很少的收益。如果你正围绕一份已有列表建立工作流程,Chronometrica 的批量输入可以让你直接将任务分组。
在构建调度器之前做出这个选择。调度器是工作流程中负责启动和跟踪运行的部分。根据你将使用的输入单位来设计它,然后检查如何保存结果和失败记录。
采集文本前先设定字幕规则
公开视频不一定有可用的公开字幕。Chronometrica 读取已有字幕。当公开字幕缺失时,它不会通过语音转文字来生成转录文本。如果你的项目要求每个视频都有文本,这项限制就会影响选择:仅靠提取字幕无法满足这一要求。Chronometrica 文档
语言需要单独决定。设置 `preferredLanguages` 后,Chronometrica 要求视频具备所请求的某种字幕语言。如果这些语言均不可用,它会在 `OUTPUT` 中记录不计费的 `LANGUAGE_UNAVAILABLE` 失败。它不会在不告知你的情况下返回其他语言。`OUTPUT` 是运行摘要,用于报告数量和失败情况。Chronometrica 输入结构定义
当数据集必须使用指定语言时,应采用这项严格规则。与不需要的语言文本在未被察觉的情况下进入数据集相比,缺失结果更容易核对。
采集前,写明允许的语言,以及是否同时接受人工字幕和自动字幕。分别做出这两个决定。某条字幕轨道即使符合语言规则,仍可能存在用词错误。
Chronometrica 文档记载的结果包括所选语言、可用的字幕语言,以及标明字幕为人工制作还是自动生成的标志。这些信息有助于你在采集后应用规则。但它们不能证明文本中的词语正确。Chronometrica 文档
如果字幕缺失会导致研究无法开展,应提前决定是否允许使用单独的语音转文字流程。清楚标记所有生成的转录文本,让后续使用者能够将它们与提取的字幕区分开。
安排完整列表前先做小规模检查
在付费采集之前,你可以准备好大部分工作流程。目标是确认你能核对各项输入的结果,并使用返回的文本。
- 确定允许的视频和语言。说明哪些公开视频应纳入采集范围。记录语言规则和字幕规则。将排除的视频单独记录,并注明排除原因。这样,后续出现数量差异时,就不会被误认为是采集失败。
- 拆分列表前先找出重复视频。使用视频 ID 识别同一个视频。两种形式的 URL 可能指向同一个视频。Chronometrica 接受多种形式,包括标准视频链接、Shorts 链接、短链接和原始视频 ID,并且对重复视频只处理一次。先清理列表,更容易核对计划中的数量。Chronometrica 文档
- 选择几个公开视频进行首次检查。纳入对项目重要的样本,例如不同频道或不同字幕类型的视频。使用你计划对完整列表采用的语言规则。用宽松设置进行检查,无法说明最终更严格的规则能否满足需求。
- 建立批次,每批不超过 1,000 项输入。去除重复视频 ID 后,再统计条目数。运行开始后,保持该批次列表不变。如果之后修改列表,应将改动另存为新的批次记录。公开的批量提取 YouTube 转录文本示例记载了批量输入上限。
- 保存输入和运行记录。使用台账,也就是用于跟踪每项输入的表格。保存视频 ID、批次 ID、运行 ID、处理结果、重试标志、所选语言和抓取时间。这些是工作流程中的跟踪列,不是额外的 Actor 输入字段。未知值应留空或标记为未知。
- 读取两个结果存储位置。从数据集中收集成功获取的转录文本行。读取 `OUTPUT`,查看本次运行的各项数量统计和失败输入详情。当你需要将缺失结果追溯到单项输入时,启用 `includeFailedInputDetails`。仅靠数据集导出文件,无法核对每个已提交视频的结果。Chronometrica 文档
- 导入文本前,核对每项唯一输入的结果。将成功结果行与视频 ID 匹配。将失败记录与其余输入匹配。对结果未知的输入逐一调查。将重复条目与唯一视频分开记录,避免将跳过的重复条目计为缺失转录文本。
- 选取少量片段与视频核对。收听原始音频,比较文本和时间戳。检查各类名称、数字、专业术语,以及你计划引用的片段。保存发现的问题。这项检查用于判断字幕是否适合你的工作,不会得出通用的准确率评分。
- 清楚保留尚未解决的缺失记录。在预算和来源规则允许的范围内,仅重试标记为可重试的失败。字幕缺失时,应另行决定如何处理,而不是反复重试。只有在项目允许生成转录文本时,才使用单独且标记清楚的语音转文字流程。
首次检查应回答 2 个问题:返回的文本是否可用,以及每项缺失结果是否都能解释清楚?如果任一问题的答案不明确,应先修正工作流程中的相应部分,再增加批次大小。
从已核验的输入结构开始
以下示例符合已核查的公开输入结构定义。它仅接受了输入检查,没有作为付费 Actor 任务执行。请将示例 URL 替换为你自己的视频 URL。字幕的可用情况可能变化。
{
"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 输入结构定义
使用此语言设置时,没有所请求字幕语言的视频会被记为失败,并记录在 `OUTPUT` 中。它不会变成一行空转录文本。导入结果时,应保留这一区别:缺失文本属于数据缺失,不是词数为 0 的转录文本。Chronometrica 文档
小规模运行后,先检查实际导出文件,再据此构建导入流程。检查你的流程能否读取视频标识、语言、带时间戳的片段、拼接后的文本和抓取时间。这些都是文档记载的输出信息,但你自己的导入流程必须保留项目所需的信息。Chronometrica 文档
如需更全面地了解字幕采集,请参阅 YouTube 字幕提取。本文对比重点是任务规模选择和结果处理。
虚构示例:安排并核查 1,100 个唯一视频
本示例全部为虚构内容。输入数量和字幕处理结果均为编造,用于说明决策方法。它们不是测试结果或客户结果。
一个研究团队最初有 1,200 项输入。团队发现 100 个重复的视频 ID,并移除这些重复条目。清理后的列表包含 1,100 个唯一视频。
使用 Chronometrica 时,团队建立 2 个批次:一批包含 1,000 项输入,另一批包含 100 项输入。计划的运行次数为:
`ceil(1,100 / 1,000) = 2 runs`
这里的 `ceil` 表示向上取整。该计算依据文档记载的批量上限。Chronometrica 批量示例
按 Pinto Studio 文档记载的单视频处理单位,同一列表需要安排 1,100 次运行。Pinto Studio 文档
这一差异涉及工作流程启动的 Actor 任务数量。它没有比较网络请求数、计算时间、总成本或成功率。两种工作流程仍需逐个处理视频。
现在假设 900 个视频提供所请求语言的字幕,200 个视频不提供。在这个虚构案例中,对 Chronometrica 的 2 次运行进行数量核对时,预期结果为:
`1,100 unique inputs = 900 successful transcript rows + 200 failed inputs`
团队从数据集中读取成功结果行,并从 2 份 `OUTPUT` 摘要中读取失败输入详情。随后更新台账,确保每个唯一视频都有已知的处理结果。这里使用了 Chronometrica 文档记载的结果记录和失败记录。Chronometrica 文档
这个虚构案例中,字幕可用的视频占比为:
`900 / 1,100 × 100 = 81.82%`
该百分比描述的是这次虚构采集。它不是实际观测到的产品成功率,也不是准确率评分。
团队在采集记录中保留全部 200 项缺失记录。团队不会用空文本替代它们,也不会将这些视频视为没有语音内容的视频。团队还保留了被移除的 100 项重复条目,以便说明最初的 1,200 项输入如何变为 1,100 个唯一视频,最终得到 900 行转录文本。
增加工作量前先检查数据集
大型数据集可能掩盖缺失结果。每次审核都应先核对数量,再检查内容。
Chronometrica 的 `OUTPUT` 摘要报告已接收的输入数、已处理的唯一视频数、成功结果行数、已跳过的重复条目数、不可用或不受支持的输入数,以及各错误代码的数量。可选详情有助于追踪未生成转录文本的输入。使用这些记录来解释结果数量。Chronometrica 文档
不要假定摘要中的每项计数都代表一个独立分组。使用输入台账,为每个唯一视频记录一个当前处理结果。将错误代码保留为这些结果的原因,不要将其计为更多视频。
然后检查文本质量。很长的转录文本也可能包含错误词语。有时间戳不代表时间对齐准确。在引用文本、比较术语或陈述说话者的发言内容之前,应核对原视频中的相应片段。对于未知值,应保留其不确定性。
一则公开的 DataHoarder 大量获取 YouTube 转录文本需求帖提到,发帖者需要约 500,000 份转录文本,并担心批量上限、成本和来源网站封锁。这说明了任务调度的重要性。但它不能证明任一 Actor 都能可靠地完成这一规模的采集。
只有在你能核对较小规模采集的全部结果,并了解其中的缺失情况后,才应扩大规模。为下一阶段设定支出上限。本对比不能证明价格优势或完成时间。
如果你仍需查找视频,请使用另一篇指南,了解如何从搜索结果构建 YouTube 转录文本语料库。准备好 URL 列表后,再回到本文执行批次和结果检查。
来源和延伸阅读
作者 Chronometrica · 更新日期
返回顶部 ↑