AI个人学习
和实操指南

BetterWhisperX:自动语音识别与说话人分离,提供高精度单词级时间戳

综合介绍

BetterWhisperX 是一个基于 WhisperX 项目的优化版本,专注于提供高效、准确的自动语音识别(ASR)服务。作为 WhisperX 的改进分支,该项目由 Federico Torrielli 维护,致力于保持项目的持续更新和性能提升。BetterWhisperX 集成了多项先进技术,包括音素级别的强制对齐、基于语音活动的批处理,以及说话人分离功能。该工具不仅支持高速转录(使用 large-v2 模型时可达到 70 倍实时速度),还能提供精确的词级时间戳和多说话人识别功能。系统采用 faster-whisper 作为后端,即使处理大型模型也只需较少的 GPU 内存,具有极高的性能效率比。

BetterWhisperX:自动语音识别与说话人分离,提供高精度单词级时间戳-1


 

功能列表

  • 快速语音转文字:使用大型模型 large-v2,支持 70 倍实时转录。
  • 单词级时间戳:通过 wav2vec2 对齐技术,提供精确的单词级时间戳。
  • 多说话人识别:利用 pyannote-audio 进行说话人分离和标签。
  • 语音活动检测:减少误识别和批处理,无显著错误率增加。
  • 批处理推理:支持批量处理,提高处理效率。
  • 兼容性:支持 PyTorch 2.0 和 Python 3.10,适用于多种环境。

 

使用帮助

详细操作流程

  1. 准备音频文件:确保音频文件格式为 WAV 或 MP3,且音质清晰。
  2. 加载模型:根据需求选择合适的模型(如 large-v2),并加载到内存中。
  3. 执行转录:调用 transcribe 函数进行语音转文字处理,获取初步转录结果。
  4. 对齐时间戳:使用 align 函数对转录结果进行单词级时间戳对齐,确保时间戳精确。
  5. 说话人分离:调用 diarize 函数进行多说话人识别,获取每个说话人的标签和对应的语音片段。
  6. 结果输出:将最终结果保存为文本文件或 JSON 格式,便于后续处理和分析。

1. 环境准备

  1. 系统要求:
    • Python 3.10 环境(建议使用 mamba 或 conda 创建虚拟环境)
    • CUDA 和 cuDNN 支持(GPU 加速必需)
    • FFmpeg 工具包
  2. 安装步骤:
# 创建 Python 环境
mamba create -n whisperx python=3.10
mamba activate whisperx
# 安装 CUDA 和 cuDNN
mamba install cuda cudnn
# 安装 BetterWhisperX
pip install git+https://github.com/federicotorrielli/BetterWhisperX.git

2. 基本使用方法

  1. 命令行使用:
# 基础转录(英语)
whisperx audio.wav
# 使用大模型和更高精度
whisperx audio.wav --model large-v2 --align_model WAV2VEC2_ASR_LARGE_LV60K_960H --batch_size 4
# 启用说话人分离
whisperx audio.wav --model large-v2 --diarize --highlight_words True
# CPU 模式(适用于 Mac OS X)
whisperx audio.wav --compute_type int8
  1. Python 代码调用:
import whisperx
import gc
device = "cuda"
audio_file = "audio.mp3"
batch_size = 16  # GPU 内存不足时可降低
compute_type = "float16"  # 内存不足可改用 "int8"
# 1. 加载模型并转录
model = whisperx.load_model("large-v2", device, compute_type=compute_type)
audio = whisperx.load_audio(audio_file)
result = model.transcribe(audio, batch_size=batch_size)
# 2. 音素对齐
model_a, metadata = whisperx.load_align_model(language_code=result["language"], device=device)
result = whisperx.align(result["segments"], model_a, metadata, audio, device)
# 3. 说话人分离(需要 Hugging Face token)
diarize_model = whisperx.DiarizationPipeline(use_auth_token=YOUR_HF_TOKEN, device=device)
diarize_segments = diarize_model(audio)
result = whisperx.assign_word_speakers(diarize_segments, result)

3. 性能优化建议

  1. GPU 内存优化:
    • 降低批处理大小(batch_size)
    • 使用较小的模型(如 base 替代 large)
    • 选择轻量级计算类型(int8)
  2. 多语言支持:
    • 默认支持语言:英语、法语、德语、西班牙语、意大利语、日语、中文、荷兰语、乌克兰语、葡萄牙语
    • 使用时指定语言:--language de(示例为德语)

4. 注意事项

  • 对于特殊字符(如数字、货币符号)的时间戳可能不够准确
  • 多人同时说话的场景识别效果可能不佳
  • 说话人分离功能仍在优化中
  • 使用说话人分离功能需要 Hugging Face 访问令牌
  • 确保 GPU 驱动和 CUDA 版本兼容
未经允许不得转载:首席AI分享圈 » BetterWhisperX:自动语音识别与说话人分离,提供高精度单词级时间戳

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文