字幕文件生成了,然后呢?
给一段访谈配字幕,难点不是把文字写进 SRT,而是让观众在正确的时间读到正确的话。先从一段普通话短录音开始:生成 SRT,转换成网页播放器使用的 VTT,再回听核对。文件能打开,只是第一步。
先做一份可以回看的 SRT
先按安装与环境验证指南准备 CPU 环境,确认 PyTorch 与 torchaudio 版本配套且可以导入,再安装 funasr==1.4.15 并运行 python -m pip check。FFmpeg 是需要单独安装的系统程序,先用 ffmpeg -version 确认它可用。第一次运行会下载模型;本地推理不等于首次安装完全离线。
把有权使用的短录音放到 audio.wav。若只有视频,可以先抽取音轨;多音轨视频要先确认选中的是目标语言的音轨。-n 避免覆盖已有音频:
ffmpeg -n -i video.mp4 -vn -ar 16000 -ac 1 audio.wav
下面显式选择普通话 Paraformer 路径,而不是 CLI 默认的 SenseVoice。它组合 Paraformer、FSMN-VAD 与标点模型;不是把每个模型的语言和时间戳能力合在一起。请使用新的输出目录,CLI 会覆盖其中已有的同名字幕文件。
funasr audio.wav --model paraformer --device cpu --output-format srt --output-dir ./subs
./subs/audio.srt 是输出文件,--output-dir 后面是目录。SRT 模式会请求时间戳,不需要额外添加 --timestamps。默认 readable 模式会重组字幕;需要保留模型句边界时使用 --subtitle-segment-mode sentence,但两种模式都需要回听。
同一份字幕,换成 VTT
当前 FunASR CLI 的格式选项是 text/json/srt/tsv,没有 vtt。让 FFmpeg 转换已有 SRT,无需再跑一次识别:
ffmpeg -n -i ./subs/audio.srt ./subs/audio.vtt
下面是本次用官方约 5.55 秒中文短音频运行得到的文件内容。环境为 Linux CPU、FunASR 1.4.15、PyTorch/torchaudio 2.10.0;这是短样本功能验证,不是字幕准确率、速度或长视频质量测试。

SRT
1 00:00:00,880 --> 00:00:05,195 欢迎大家来体验达摩院推出的语音识别模型。
转换后的 VTT
WEBVTT 00:00.880 --> 00:05.195 欢迎大家来体验达摩院推出的语音识别模型。
逗号变为小数点、文件多出 WEBVTT 头,是格式转换,不是新的识别。文字、时间偏差、说话人错误或漏掉的尾句都不会因此自动修好。
导出后,检查这三件事
- 回听开头、停顿和最后一句。 字幕是否提前出现、拖到下一句,尾部有没有漏字?不要只看程序退出码。
- 核对名字、数字和每条字幕的阅读负担。 自动分组不保证所有字幕都满足固定字符数或时长;缺少可对齐时间戳时,原段可能被保留。
- 在目标播放器或编辑器里回看。 确認导入了正确字幕和对应版本的视频,必要时人工校时,再导出交付文件。
有 SRT,不等于有精确对齐。 当结果没有句级信息时,CLI 可能用整段时间戳范围,甚至音频总时长生成单条字幕。标点对齐失败也可能退回 VAD 片段边界。这些都不是逐字、音素或人工核验的边界;可从本次核对的 CLI 实现查看导出与回退逻辑。
这条最小路径没有启用说话人分离。--spk 也不会让 CLI 的 SRT 自动出现人物姓名或 Speaker 前缀;需要按说话人剪辑时,走独立的FunClip / MOSS 工作流,匿名标签不等于真实身份。
只需要文字,可以从Fun-ASR-Nano 原生 Transformers 入口开始。但它的文本输出不自带本教程需要的字幕时间戳或说话人分离,不能直接替换成“同样生成精准字幕”。
下一步,用FunClip 的字幕与选段流程回看你自己的短素材,从第一段经过人工核对的片段开始。