如何为 FunASR 的 Paraformer 输出时间戳:带时间戳语音识别指南

发布时间:2026/9/7 7:27:54
如何为 FunASR 的 Paraformer 输出时间戳:带时间戳语音识别指南 如何为 FunASR 的 Paraformer 输出时间戳带时间戳语音识别指南【免费下载链接】FunASROpen-source speech recognition toolkit for training, inference, streaming ASR, VAD, punctuation, speaker diarization pipelines, and OpenAI-compatible/MCP serving.项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR你正在做一个会议转写工具需要精确知道每个词出现在录音的哪一秒。FunASR 的 Paraformer 时间戳功能正好解决这件事large-vad-punc 版本的 Paraformer 在识别文本的同时输出每个字的起止时间毫秒级你拿它做自动字幕、在剪辑时间线上定位语句都很顺手。 功能速览识别、VAD、标点一次出所谓 large-vad-punc 版本其实是三个模型打包在一起Paraformer large 负责识别VAD 模型FSMN VAD用来把长音频切成有语音的片段负责切段punc 模型CT-Transformer把标点补回文本负责恢复标点。推理时框架会对识别结果做字级对齐文本和时间信息因此天然一一对应。一次generate()调用返回一个字典关键长这样简化为 5 行{ key: meeting.wav, text: 今天下午三点我们开会讨论新版本发布计划。, timestamp: [[0, 120], [120, 340], ...], # 每个字的 [起始ms, 结束ms] sentence_info: [{text: 今天下午三点, start: 0, end: 1240}] }也就是说你不需要任何额外后处理文本和时间区间一次拿全。 最小可用示例10 行跑出带时间戳的结果下面这段代码初始化三件套并对一个 wav 跑识别sentence_timestampTrue表示额外要句子级时间戳from funasr import AutoModel model AutoModel( modelspeech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch, vad_modelspeech_fsmn_vad_zh-cn-16k-common-pytorch, punc_modelpunc_ct-transformer_zh-cn-common-vocab272727-pytorch, ) res model.generate(inputmeeting.wav, sentence_timestampTrue)[0] print(res[text]) print(res[sentence_info])预期看到带标点的整段文本以及每句的 start/end 毫秒数每句的时间点就是字幕轨道的时间点稍作格式化即可语音识别生成字幕SRT 文件。读懂返回结果字段对照表字段含义示例值key输入音频的标识meeting.wavtext带恢复标点的完整文本今天下午三点我们……timestamp逐字时间区间[起始ms, 结束ms]的列表[[0, 120], [120, 340]]sentence_info按标点切分的句子列表每项含 text/start/end[{text: 今天下午三点, start: 0, end: 1240}]raw_text未加标点的原始文本仅在return_raw_textTrue时返回今天下午三点 我们……两个容易踩的点时间单位统一是毫秒要秒就除以 1000timestamp列表与text中非标点字一一对应zip 起来就是逐字对齐结果。参数速查timestamp 相关开关参数设置位置作用sentence_timestampgenerate()的 kwargs输出句子级时间戳依赖标点模型return_raw_textgenerate()的 kwargs额外返回未加标点的raw_textbatch_size_sgenerate()的 kwargs每批累计时长秒控制长音频的内存占用这些开关不需要重新初始化模型每次调用时传入即可。⚠️ 避坑与调优现象timestamp为空或缺失。原因只配了 ASR 主模型、没带 vad/punc。字级时间戳是在 VAD 分段 标点模型处理这条链路上组装的。处理按示例三件套一起初始化如果日志里出现 punc_model is required 提示说明缺标点模型。现象时间戳不准、对不上。原因多在输入侧采样率不是 16 kHz、非单声道或环境噪声大。处理先把音频重采样成 16k 单声道再识别如果只是字幕、剪辑定位这种按句级精度的需求直接读sentence_info的 start/end比逐字累加更稳。现象长音频内存高、速度慢。原因逐字timestamp列表与文本等长数小时的录音会产生大对象且 VAD 后还要逐段推理。处理用batch_size_s限制单批时长只要字幕轨道就取sentence_info丢弃字级列表。字级对齐的具体实现在 funasr/utils/timestamp_tools.py想弄清某段时间戳怎么算出来的可以从这个文件入手。FunASR 的 Paraformer 时间戳最适合中文、16 kHz 场景下的字幕生成与会议转写校对如果你还需要区分谁在说话下一步是再加一个说话人模型让每句带上 spk 字段。【免费下载链接】FunASROpen-source speech recognition toolkit for training, inference, streaming ASR, VAD, punctuation, speaker diarization pipelines, and OpenAI-compatible/MCP serving.项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考