whisper-timestamped字幕生成:自动创建SRT、VTT等格式的完整教程

【免费下载链接】whisper-timestamped Multilingual Automatic Speech Recognition with word-level timestamps and confidence 【免费下载链接】whisper-timestamped 项目地址: https://gitcode.com/gh_mirrors/wh/whisper-timestamped

想要为视频自动生成精准的时间轴字幕吗?🤔 whisper-timestamped 是一个强大的开源工具,能够为 OpenAI Whisper 语音识别结果添加词级时间戳,并自动创建 SRT、VTT、CSV 等多种字幕格式。本教程将带你从零开始,快速掌握这个高效的 Whisper 时间戳扩展 工具,轻松实现 音频转字幕 的自动化流程。

📋 什么是 whisper-timestamped?

whisper-timestamped 是基于 OpenAI Whisper 的多语言自动语音识别扩展库,专门解决原始 Whisper 模型只能预测近似时间戳(通常只有 1 秒精度)的局限性。它通过动态时间规整(DTW)算法分析交叉注意力权重,为每个单词提供精确到毫秒级的时间戳,并计算置信度分数。

单词对齐可视化示例

上图展示了 whisper-timestamped 的单词对齐可视化效果,红色虚线标记了每个单词的精确时间边界

🚀 快速安装指南

基础安装

使用 pip 一键安装 whisper-timestamped:

pip3 install whisper-timestamped

或者从源码安装:

git clone https://gitcode.com/gh_mirrors/wh/whisper-timestamped
cd whisper-timestamped/
python3 setup.py install

可选依赖安装

如需可视化单词对齐效果,安装 matplotlib:

pip3 install matplotlib

如需使用语音活动检测(VAD)功能,安装额外依赖:

pip3 install onnxruntime torchaudio

CPU 专用轻量安装

如果没有 GPU,先安装轻量版 PyTorch:

pip3 install \
     torch==1.13.1+cpu \
     torchaudio==0.13.1+cpu \
     -f https://download.pytorch.org/whl/torch_stable.html

🎯 核心功能与优势

1. 词级时间戳精度

whisper-timestamped 最大的优势在于提供 精确的词级时间戳,而不仅仅是段级时间戳。这对于创建专业字幕至关重要,因为每个单词的精确出现时间都能被准确标记。

2. 多格式字幕输出

支持生成多种字幕格式:

  • SRT (SubRip Subtitle) - 最广泛使用的字幕格式
  • VTT (WebVTT) - HTML5 视频标准字幕格式
  • CSV/TSV - 便于数据分析和处理
  • TXT - 纯文本转录
  • JSON - 包含完整元数据的结构化格式

3. 语音活动检测(VAD)

whisper-timestamped 集成了多种 VAD 方法,可以在 Whisper 处理前去除静音段,避免模型在静音部分产生"幻觉"文本。

不同VAD方法对比 Silero V4.0 VAD 效果

Auditok VAD效果 Auditok VAD 效果

Silero V3.1 VAD效果 Silero V3.1 VAD 效果

4. 置信度评分

为每个单词和每个段落提供置信度分数,帮助你评估转录结果的可靠性。

🔧 三种使用方法

方法一:Python API 调用

import whisper_timestamped as whisper

# 加载音频
audio = whisper.load_audio("AUDIO.wav")

# 加载模型(支持多种模型大小)
model = whisper.load_model("tiny", device="cpu")

# 转录并获取时间戳
result = whisper.transcribe(model, audio, language="zh")

# 保存为SRT字幕
with open("output.srt", "w", encoding="utf-8") as f:
    whisper.write_srt(result["segments"], f)

方法二:命令行工具

# 基础用法
whisper_timestamped audio.mp4 --model tiny --language zh --output_dir .

# 生成带词级时间戳的SRT
whisper_timestamped audio.mp4 --model medium --output_dir . --verbose True

# 使用VAD提高准确性
whisper_timestamped audio.mp4 --model small --vad True --output_dir .

方法三:使用 HuggingFace 微调模型

import whisper_timestamped as whisper

# 加载 HuggingFace 上的微调模型
model = whisper.load_model("NbAiLab/whisper-large-v2-nob", device="cpu")

# 后续使用方式相同
result = whisper.transcribe(model, audio, language="no")

📊 输出格式详解

JSON 格式输出示例

whisper-timestamped 的 JSON 输出包含完整的词级时间戳信息:

{
  "text": "你好!今天天气怎么样?",
  "segments": [
    {
      "id": 0,
      "start": 0.5,
      "end": 1.2,
      "text": "你好!",
      "words": [
        {
          "text": "你好!",
          "start": 0.5,
          "end": 1.2,
          "confidence": 0.95
        }
      ]
    },
    {
      "id": 1,
      "start": 1.5,
      "end": 3.0,
      "text": "今天天气怎么样?",
      "words": [
        {
          "text": "今天",
          "start": 1.5,
          "end": 1.8,
          "confidence": 0.98
        },
        {
          "text": "天气",
          "start": 1.8,
          "end": 2.1,
          "confidence": 0.97
        },
        {
          "text": "怎么样?",
          "start": 2.1,
          "end": 3.0,
          "confidence": 0.96
        }
      ]
    }
  ],
  "language": "zh"
}

SRT 字幕格式

自动生成的 SRT 文件示例:

1
00:00:00,500 --> 00:00:01,200
你好!

2
00:00:01,500 --> 00:00:03,000
今天天气怎么样?

⚙️ 高级配置技巧

1. 提高转录准确性

使用精准模式(启用束搜索和温度采样):

# Python
result = whisper.transcribe(
    model, 
    audio, 
    beam_size=5, 
    best_of=5, 
    temperature=(0.0, 0.2, 0.4, 0.6, 0.8, 1.0)
)

# 命令行
whisper_timestamped --accurate audio.mp4

2. 语音活动检测配置

# 使用不同VAD方法
result = whisper.transcribe(model, audio, vad="silero")  # 默认
result = whisper.transcribe(model, audio, vad="silero:v3.1")  # 旧版
result = whisper.transcribe(model, audio, vad="auditok")  # 替代方案

3. 检测口语不流利现象

启用不流利检测,标记填充词、犹豫等:

result = whisper.transcribe(model, audio, detect_disfluencies=True)

🎨 可视化与调试

单词对齐可视化

# 生成对齐可视化图表
result = whisper.transcribe(
    model, 
    audio, 
    plot_word_alignment=True  # 或指定保存路径
)

可视化图表显示:

  • 上半部分:交叉注意力权重的 DTW 对齐结果
  • 下半部分:音频的 MFCC 特征
  • 红色虚线:检测到的单词边界

参数调优建议

  1. 短音频处理:对于短音频(<30秒),使用 tinybase 模型即可获得良好效果
  2. 长音频处理:对于长音频,启用 VAD 可以显著减少内存使用
  3. 多语言支持:支持 99 种语言,自动检测或手动指定
  4. 置信度阈值:根据 confidence 分数过滤低质量转录

📁 项目文件结构

了解项目结构有助于深度定制:

🚫 常见问题解决

问题1:内存不足

解决方案:使用更小的模型(如 tinybase),或启用 VAD 减少处理数据量。

问题2:时间戳不准确

解决方案:尝试不同的 VAD 方法,或调整 refine_whisper_precision 参数。

问题3:转录速度慢

解决方案:使用 GPU 加速,或关闭束搜索(设置 beam_size=1)。

问题4:特殊字符处理

解决方案:确保输出文件使用 UTF-8 编码,特别是处理中文等非拉丁文字时。

🔍 性能优化建议

  1. 模型选择策略

    • 实时应用:使用 tinybase 模型
    • 高质量转录:使用 mediumlarge 模型
    • 多语言需求:使用 large-v3 模型
  2. 硬件加速

    • GPU 用户:确保安装 CUDA 版本的 PyTorch
    • CPU 用户:使用轻量安装并考虑 batch 处理
  3. 批量处理

    # 批量处理多个文件
    audio_files = ["audio1.wav", "audio2.mp3", "audio3.flac"]
    for audio_file in audio_files:
        audio = whisper.load_audio(audio_file)
        result = whisper.transcribe(model, audio)
        # 保存结果...
    

📈 应用场景示例

场景1:视频字幕制作

# 为视频文件生成SRT字幕
whisper_timestamped video.mp4 --model medium --language zh --output_dir subtitles/

场景2:会议录音转录

# 处理长时间会议录音,启用VAD去除静音
result = whisper.transcribe(
    model,
    meeting_audio,
    vad=True,
    language="en",
    compute_word_confidence=True
)

场景3:多语言内容处理

# 自动检测语言并转录
result = whisper.transcribe(model, multilingual_audio)
print(f"检测到的语言: {result['language']}")
print(f"语言概率: {result['language_probs']}")

🎉 开始使用吧!

whisper-timestamped 为 Whisper 语音识别添加了强大的时间戳功能,使得自动生成精准字幕变得简单易行。无论你是内容创作者、研究人员还是开发者,这个工具都能显著提升你的音频处理效率。

记住,精确的时间戳多格式输出 是 whisper-timestamped 的核心优势,结合 语音活动检测置信度评分,你可以获得专业级的转录结果。

现在就开始你的自动字幕生成之旅吧!🚀

【免费下载链接】whisper-timestamped Multilingual Automatic Speech Recognition with word-level timestamps and confidence 【免费下载链接】whisper-timestamped 项目地址: https://gitcode.com/gh_mirrors/wh/whisper-timestamped

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐