FunASR Paraformer 时间戳识别:每个字都带秒数,字幕生成不靠猜
2026/9/7 1:28:31 网站建设 项目流程

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 识别的同时输出字级时间戳,让每句话都能对上时间轴。

它是什么:一个模型干三份活

Paraformer 的 large-vad-punc 版本把三件事打包了:语音识别(ASR,把声音变成文字)、VAD(语音活动检测,简单说就是判断人话从哪秒开始、哪秒结束)、标点恢复(给识别结果补上逗号和句号)。普通 ASR 模型只回你一串字,它还能顺带告诉你每个字的时间位置。做字幕、逐字高亮、会议内容定位,这种"文字+时间"的组合正是 Paraformer 带时间戳语音识别 最省心的用法。

最快上手路径:装、配、跑三步

打开终端装包:pip install funasr。然后初始化模型,注意三行配置,最后跑识别时带上关键开关output_timestamp=True——不开它,结果里就没有时间戳。

# 打开终端先装包:pip install funasr from funasr import AutoModel model = AutoModel( model="paraformer-zh", # Paraformer large-vad-punc 三合一版本 vad_model="fsmn-vad", # VAD:判断人声起止 punc_model="ct-punc", # 标点恢复:补逗号句号 ) # 关键开关:输出字级时间戳 result = model.generate(input="audio.wav", output_timestamp=True)

paraformer-zh是 Paraformer large-vad-punc 的短名,等价于那个很长的 modelscope 完整模型名,用短名就行。

读懂输出:timestamp 结构长什么样

result[0]是个字典,你主要看三个字段:

字段含义例子
text最终识别文本(已带标点)今天天气不错。
timestamp每个字对应的[开始, 结束],单位毫秒[[0, 120], [120, 240], ...]
text_postprocessed后处理后的文本,即text的最终形态今天天气不错。

时间戳和文字按顺序一一对应,毫秒值除以 1000 就是秒。想要句级时间戳(而不是字级),再给generate()sentence_timestamp=True即可。逐字打印的小循环:

# 逐字打印每个字出现在第几秒 text = result[0]["text"] for i, t in enumerate(result[0]["timestamp"]): print(f"{text[i]} {t[0] / 1000:.2f}s ~ {t[1] / 1000:.2f}s")

避坑指南:真实使用你会遇到什么

时间戳完全没出现?先查参数位置

大概率是output_timestamp=True忘了传,或者传错了地方。FunASR timestamp 参数配置 有个小坑:它不是写在AutoModel()里的,而是传给generate()的运行时参数。另外注意,如果你同时挂了说话人分离模型(spk_model),时间戳会被自动打开,不用手动加。

⚠️ 采样率不对?时间戳会飘

Paraformer 要求 16kHz 单声道输入。你喂了 44.1kHz 的 MP3,模型不会报错,但整条时间轴会整体缩放,戳全错。试试先重采样再喂进去:

import torchaudio wav, sr = torchaudio.load("origin.wav") resampled = torchaudio.functional.resample(wav, sr, 16000) torchaudio.save("audio_16k.wav", resampled, 16000)

长音频上戳错位?交给 VAD 切分

超过一两分钟的音频,务必保留vad_model配置。VAD 先把长音频切成小段逐段识别,段内时间戳精度更高,段落间的偏移量 FunASR 会自动补回,你拿到的是相对整段音频的绝对时间。别自己手工切段,容易丢偏移。

⚡ 识别变慢了?开销是真实的

时间戳预测会多跑一遍 predictor,⚡ 吞吐有可感知的下降。批量跑几百条时,试试:只在真正需要时间戳的任务上开output_timestamp;有 CUDA 就上 CUDA;把batch_size从默认的 1 调大。

延伸与参考资料

  • 完整参数说明与更多示例:FunASR 中文教程
  • 时间戳预测的实现源码:funasr/models/paraformer/,核心工具在 funasr/utils/timestamp_tools.py
  • 装包、模型下载等环境问题:常见问题 FQA

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询