SSubToolDesk
zh
VTT → TXT

将 WebVTT 字幕转换为纯文本

把 Zoom、Microsoft Teams、Google Meet 或 YouTube 的 .vtt 导出文件清理成易读的文字记录。语音标签和字幕元数据会自动去除,无需上传任何内容。

已检测到: …
拖放文件、粘贴文本,或直接编辑
……
本地处理

你的文件绝不会接触任何服务器。 本页面的每一次转换都使用 JavaScript 的 FileReader API 在你的浏览器本地完成。不会上传、记录或存储任何内容。可安全用于机密的 Zoom/Teams 录制内容、未发布的视频、以及法律访谈记录。

VTT 转 TXT 的转换原理

WebVTT(Web Video Text Tracks)是 HTML5 视频的 W3C 标准字幕格式,也是 Zoom、Microsoft Teams、Google Meet 和 YouTube 在你下载会议文字记录或视频字幕文件时导出的格式。每个 .vtt 文件都以一行 WEBVTT 标头开头,随后是以句号分隔毫秒的时间信息(00:00:03.500,而不是 SRT 使用的逗号)。WebVTT 还支持比 SRT 更丰富的元数据:时间戳行上的字幕设置,比如 align:start position:10%;用来标注说话人身份的语音标签,比如 <v 说话人姓名>;以及携带注释或类似 CSS 样式而非对话内容的 NOTE / STYLE / REGION 区块。

这些内容都不应该出现在纯文本的文字记录中。SubToolDesk 的解析器会通过浏览器的 FileReader API 在本地读取你的文件,丢弃标头和元数据区块,去除语音标签和样式标签,并且如果你要求的话,还会把剩余的字幕内容重新排列成真正的段落。

分步说明

  • 导出或找到你的 .vtt 字幕文件(Zoom 和 Teams 在会议结束后都提供「下载文字记录」或「下载字幕」选项)。
  • 将它拖到上方的转换器中,或将原始 VTT 文本粘贴到左侧面板。
  • 确认格式徽章显示为 VTT。
  • 保持去除格式标签开启,以移除语音标签和字幕设置。
  • 如果字幕还在每行前面标注了纯文本形式的姓名(这在自动生成的 Teams 文字记录中很常见),保持去除说话人标签开启。
  • 复制或下载生成的 .txt 文字记录。

为什么要把 WebVTT 转换为纯文本

.vtt 文件是为视频播放器而设计的,不是为阅读者设计的。把它简化为纯文本几乎总是为了接下来要做的事情:

  • 粘贴到会议记录或项目文档中,这时时间戳和语音标签只是干扰。
  • 把文字记录提供给 AI 摘要工具或聊天机器人,它们阅读连续文章的效果远比阅读数百个两秒钟的片段要好。
  • 根据录制的通话、网络研讨会或播客撰写博客回顾或节目笔记。
  • 把视频变成可访问或可搜索的纯文本页面,而不需要发布一份字幕文件。
  • 在原始录制内容不再需要保留之后,将文字记录存档为一份可读的记录。
  • 把文字记录发送出去进行翻译或编辑,译者和编辑处理的是段落,而不是字幕块。

转换前后对比:一个真实示例

一段简短的 Zoom 风格导出文件,包含语音标签、字幕设置、一个 NOTE 区块等内容,在合并为段落、去除说话人标签和去除格式标签全部开启(本页面的默认状态)的情况下进行转换:

Before
WEBVTT

NOTE
由 Zoom 生成的文字记录

00:00:01.200 --> 00:00:03.900 align:start position:10%
<v Jordan>大家好,谢谢大家今天加入这次通话。

00:00:03.900 --> 00:00:06.450
<v Priya>当然!我们开始吧。

00:00:06.450 --> 00:00:09.800
<v Jordan>好的,议程上的第一项是第三季度的路线图。
After
大家好,谢谢大家今天加入这次通话。当然!我们开始吧。好的,议程上的第一项是第三季度的路线图。

WEBVTT 标头、NOTE 区块、每一行时间戳和字幕设置,以及两个 <v Jordan> 语音标签都已消失。剩下的正是实际说出的内容,重新排版成了易读的句子。

详解 WebVTT 格式

一条典型的多说话人 VTT 字幕看起来是这样的:

00:00:03.500 --> 00:00:06.120 align:start position:10%
<v Jordan>谢谢你今天加入这次通话。
VTT 字幕块结构说明
WEBVTT← 必需的标头00:00:03.500 --> 00:00:06.120← 起止时间码Thanks for joining the call today.← 对话文本

与 SRT 不同,WebVTT 中起始的字幕标识符行是可选的,并且可以是任意字符串,而不只是一个连续的数字。SubToolDesk 的解析器会直接检测时间戳行(它始终包含 -->),而不是假定一个固定的行顺序,因此无论文件中是否有标识符,都能正确解析。

为什么这对会议文字记录尤为重要

Zoom 和 Teams 的自动字幕在时间同步方面表现不错,但导出的文件是为视频播放器优化的,不是为阅读者优化的。一场一小时的会议可能产生数百条两秒钟的字幕,每条都是一个带有语音标签的句子片段。把它通过这个转换器处理,并开启段落合并,就能变成可以直接粘贴进会议记录、博客回顾,或作为 AI 摘要工具提示词的内容,而原始录音或文字记录永远不会离开你的设备。

WebVTT 文件究竟从何而来

除了视频会议之外,WebVTT 还是 YouTube 让你为任何带字幕的视频下载字幕时使用的格式,是大多数 AI 转录服务(包括 OpenAI Whisper 的导出)默认使用的格式,也是 HTML5 <track> 元素要求的、用于直接嵌入网页的任何带字幕视频的格式。如果你在过去几年里从网上几乎任何地方下载过字幕文件,很可能它是 WebVTT,而不是更早的 SRT 格式——这也是为什么一个专门识别 VTT 的清理工具,而不是一个通用的文本剔除脚本,会有意义:通用方案根本不知道要去查找语音标签,或者从一开始就跳过 NOTE 区块。

妥善处理多说话人文字记录

自动字幕工具用两种不同的方式标注说话人,有时甚至在同一个文件中同时使用:通过 WebVTT 原生的 <v 说话人姓名> 标签,或者作为一行开头的纯文本(Jordan: 谢谢加入。)。这个工具的去除格式标签开关会移除第一种;去除说话人标签会移除第二种。两者同时开启(本页面的默认状态)会生成一份不残留任何一种标签格式的文字记录,无论你的源文件用的是哪一种。

这个转换器会保留什么、去除什么

会保留:

  • 每一个对话文本的词语,保持原有顺序和标点。
  • 段落断点——无论是原始的每条字幕一行结构,还是在开启合并为段落后基于句子生成的段落。

会去除:

  • WEBVTT 标头行。
  • NOTE、STYLE 和 REGION 元数据区块。
  • 字幕标识符行和每一个时间戳范围。
  • 时间戳行上的字幕设置,比如 align:start position:10%。
  • 诸如 <v 说话人姓名> 这样的语音标签,当去除格式标签开启时。
  • 像 Jordan: 这样的纯文本说话人前缀,当去除说话人标签开启时。

常见问题及解决方法

  • 输出中仍然显示时间戳或 --> 箭头:检查转换器上方的格式徽章是否确实显示为 VTT,而不是 Unknown;被严重截断的粘贴内容会破坏字幕检测。
  • <v 说话人姓名> 标签仍然留在文本中:打开去除格式标签,只有在你自己改动过的情况下它才会处于关闭状态。
  • 像 Jordan: 这样的纯文本名称仍然作为每行的前缀:这是一个独立的开关——去除说话人标签,也打开它,因为它识别的是和上面语音标签去除不同的模式。
  • 文字记录读起来是每行一句话,而不是流畅的段落:打开合并为段落。
  • 段落太长,看不出任何说话人切换的迹象:改为关闭合并为段落,保持每条字幕一行;一旦说话人标签被去除,纯文本就没有办法表示段落中间的说话人切换了。
  • 带声调符号的字母或非英文文本显示为乱码,例如 é:说明源 .vtt 文件没有以 UTF-8 编码保存;请重新导出或以 UTF-8 重新保存后再重新上传。

在信任输出结果之前要检查什么

自动生成的字幕有时会错误转录姓名、专业术语或带口音的语音,这是生成该文件的字幕系统本身的局限,不是文本格式化工具能够修复的问题。SubToolDesk 只会按原样重新格式化源文件中已有的内容;在把文字记录用于任何正式场合(比如会议纪要或法律记录)之前,花点时间把输出面板和原始录音对照检查一下是值得的。

常见问题

我从 Zoom/Teams 导出了字幕,这个工具能用吗?

可以。Zoom、Microsoft Teams、Google Meet 和 YouTube 导出的都是 WebVTT(.vtt)字幕文件,而这里的解析器遵循这些平台生成的标准 WebVTT 规范,包括按说话人划分的语音标签和位置元数据。

我在 VTT 文件里一直看到的 <v 说话人> 标签是什么,应该去除它们吗?

这是 WebVTT 内置的标注方式,用来标记某一行是谁说的,屏幕阅读器和一些播放器会用它来标注对话。转换为纯文本时打开去除格式标签即可移除它们。一旦时间信息不存在了,它们也就没有任何价值了。

我的字幕里有 NOTE 或 STYLE 区块,它们会出现在我的文字记录里吗?

不会。NOTE、STYLE 和 REGION 区块是 WebVTT 的元数据,不是口语对话,解析器在提取字幕文本之前会完全跳过它们。

这个工具能处理 align 或 position 这类 VTT 字幕设置吗?

可以。跟在时间戳行后面的字幕设置(比如 align:start position:10%)在解析过程中会被忽略,因为它们只影响屏幕上的显示位置,不影响对话文本本身。

我能转换使用 MM:SS.mmm 而不是 HH:MM:SS.mmm 的 WebVTT 文件吗?

可以。WebVTT 允许短文件省略小时部分的时间戳,解析器会自动规范化这两种形式。

为什么我的 Zoom 文字记录每隔几秒就换一段,即使没有人换说话?

Zoom 会按短时间片段给文字记录加时间戳,无论说话人是否发生变化,有时每两三秒就换一段,这会让原始 .vtt 读起来很零碎。这正是合并为段落这个功能要解决的问题:它会利用标点符号找到自然的断点,把这些频繁出现的短片段重新拼接成完整的句子和段落。