音频转写为字幕
首次运行会下载语音模型 —— 快速档约 45 MB,准确档约 81 MB,由本站提供,之后浏览器会缓存。不会上传任何内容;转录稿是机器生成的,发布前请校对措辞和时间。
选项
同一个模型的两档。快速档约 45 MB,转写速度大约快一倍;准确档约 81 MB,大小写和标点更接近正确。两者都在本机运行,每个浏览器只下载一次。处理长录音时,先用快速档确认语言选对了。
录音里说的语言。没有自动选项:这个版本的模型不做语言检测,不选就按英文处理。用英文模型读中文录音不会报错 —— 它会产出一段看着通顺的废话,这比报错难发现得多。请选择你实际听到的语言。
.srt 在任何地方都能播放,包括较老的编辑器和电视机;.vtt 是 Web 格式,结构稍微多一些。两者承载完全相同的字幕条和完全相同的时间,所以选你后续工具链期待的那一种。
这一页听一段录音,把听到的内容写下来,产物是字幕文件:一句一条 cue,开始与结束落在话真正说出来的位置。拖入一段采访、一节课、一条语音备忘,或者一部根本没有字幕轨的电影音轨,你会得到一份能在任何播放器里播放的 .srt 或 .vtt。事先不需要存在任何字幕轨——当没有东西可提取时,就来这一页。
听的过程在标签页里完成。语音模型通过 onnxruntime 跑在 WebAssembly 上,模型文件由本站提供,唯一的网络流量就是这次下载:快速档约 45 MB,准确档约 81 MB,之后由浏览器缓存。录音不会发往任何地方。转写过程中查看 Network 面板,你会看到模型数据下行,而没有任何一个字节上行。口语语言必须手动指定,选项覆盖英语、中文、西班牙语、阿拉伯语、印地语、葡萄牙语、法语、日语、俄语和韩语十种。
出来的是机器的尽力猜测,不是有据可查的转录。听错的词仍然是错的,时间轴精确到短语长度,而不是帧。发布前请校对,把结果当作一个语速很快、但不了解主题的人打出的初稿。这与 OCR 页面遵循的是同一条诚实规则,也是这一页把提醒放在开头而不是脚注里的原因。
录音被切成 30 秒的窗口,窗口之间重叠 5 秒,每个窗口单独转写。这让长文件不必一口气把一小时音频塞进模型,也是取消要到下一个窗口才生效的原因。跨边界的句子靠一条去重规则处理:下一个窗口报告的、起点早于上一个窗口结束的内容会被丢掉——先听到的那一份获胜,因为它听到了完整的短语。
过长的句子先在句子边界切开,再受两条上限约束:一条字幕不超过 7 秒、不超过 84 个字符,每行最多折成 42 个字符。这与多数广播机构规定的上限相同,所以产物通常不用编辑就能过第一道合规检查。
常见问题
录音说的不是英语时,音频转写为字幕要怎么设置?
必须手动告诉页面说的是哪种语言,因为这个版本的模型不做语言识别。没有自动选项,这是有意的:没有选择语言时,模型会假定英语。一段中文录音被当作英语,不会报错,而是返回一串听起来有点像原文、实际上自信满满的英文词,比一条错误提示难发现得多。选你真正听到的语言;拿不准时,先用快速档转写三十秒核对。
转写出来的时间轴与手工字幕相比准到什么程度?
够播放,不够未经编辑就播出。每条字幕的起止来自模型自己的分段边界,落在短语边缘,而不是某个词开始的那一帧。两条字幕将要重叠时,后一条会被往后推,调整量计入有损列表,所以不会重叠,也不会出现时间倒退。如果客户要的是帧级同步——例如给广播机构交付的字幕公司——诚实的说法是:这份产物是待手工对时的草稿,不是成品。
既然有准确档,为什么音频转写为字幕还提供快速档?
因为在长文件上,两者的差别是等下去与放弃的差别。用一分钟清晰语音实测,快速档约 3.7 秒,准确档约 7.5 秒——每听一分钟音频,等待时间大约翻倍。快速档还更爱自作主张地加标点、改大小写;准确档更接近人写出来的样子。常见做法是先用快速档跑完一小时采访,确认语言和音质没问题,再用准确档重跑。
明明听得见说话,为什么音频转写为字幕提示没有识别出语音?
因为模型没有听到任何它能写下来的内容,通常有三种原因:语言设置与实际说话不符、说话声被音乐或噪声压住、音轨音量很低。文件本身是完好的——页面把这种情况与音频根本无法解码分开报,因为两者的修法不同。换一个口语语言,或者确认你拖进来的音轨就是你想要的那一条(电影评论音轨与对白音轨是两条不同的流)。
音频转写为字幕太久时能中途停止吗?
能,而且页面会明确它在哪里停。模型下载可以随时取消。识别阶段,模型在一个窗口内部无法被打断,所以取消会在下一个 30 秒窗口开始时生效,快速档上通常只差几秒。没有写完的产物不会作为下载提供;模型仍然留在缓存里,重试不需要重新下载。
转写出的 .srt 会保留说话人标记或标点吗?
模型产出的标点会保留,通常合理但不可靠;说话人标记不会被发明出来——这个模型不区分声音,两个人对话会合并成一条文字流。要加说话人标记只能手工做。需要的话,先转写再编辑:文件能在任何字幕编辑器里打开,而且 cue 已经在句子边界切开,这一遍会比从空白时间轴开始快得多。