语音识别带时间戳(字级 timestamps)Python 实战:每个字精确到毫秒

很多场景不只要"识别出说了什么",还要知道每个字是在什么时间说的——做卡拉OK 逐字高亮、点击文字跳转音频、字幕对齐、视频剪辑定位。Whisper 的 word timestamps 是后加的(需要 DTW、精度一般)。FunASR 的 Paraformer 原生输出字级时间戳:每个字带 [起始毫秒, 结束毫秒],一次调用就有。下面是真实实测输出。

带时间戳识别(实测输出)

pip install funasr

from funasr import AutoModel

model = AutoModel(model="paraformer-zh", vad_model="fsmn-vad", disable_update=True)
res = model.generate(input="audio.wav")

text = res[0]["text"]           # 欢 迎 大 家 来 体 验 ...
timestamp = res[0]["timestamp"] # [[880, 1120], [1120, 1360], ...]  每个字的起止毫秒

timestamp 是一个 [start_ms, end_ms] 列表,和文本里的字一一对应。

把字和时间戳配对(实测)

chars = text.split()          # Paraformer 中文输出是空格分隔的字
for ch, (start, end) in zip(chars, timestamp):
    print(f"{ch}  {start}-{end}ms")

真实输出:

起止(毫秒)
880 – 1120
1120 – 1360
1380 – 1540
1540 – 1780
1780 – 2020
2020 – 2180
2180 – 2420

整句"欢迎大家来体验达摩院推出的语音识别模型"的 19 个字,每个都有精确到毫秒的起止时间。

能用来做什么

为什么用 Paraformer 拿时间戳

FunASR ParaformerWhisper
字/词级时间戳✅ 原生,一次调用后加(--word_timestamps,靠 DTW)
精度非自回归 + CIF 对齐,稳定视实现而定
中文字级、CER 10.18%~20%
许可证开源,可商用开源

要更高精度的中文识别,默认用旗舰 Fun-ASR-Nano;完整中文实战见 中文语音识别;长音频分段见 VAD

FunASR 全家桶开源(MIT)——字级时间戳、ASR、VAD、标点、说话人、LLM-ASR(旗舰 Fun-ASR-Nano),拿来即用。觉得有用就点个 Star 👇

⭐ Star FunASR

也欢迎 Star:SenseVoice · Fun-ASR · FunClip

相关文章