«

使用WhisperX+pyannote-audio 完成语音转录、说话人分离、语音转录转译

时间:2025-11-8 14:03     作者:wanzi     分类: AI


最近一直在利用空闲时间调研说话人分离技术,经过一段时间的技术调研和测试,今天终于完成了一个基本有效的试验版本-WhisperXSpeechSeparation。这个版本来自一个西班牙大佬的版本改过来的,感谢大佬了。下面我先说明下使用该notebook需要注意点,然后我用ai给我总结了一些内容。

使用注意点


🎯 工具介绍:WhisperX 与 pyannote.audio

🧠 WhisperX:加速且精准的 Whisper 增强版

WhisperX 是在 OpenAI Whisper 基础上优化的第三方实现,由 Max Bain (Oxford) 团队开发。
它的核心目标是解决原版 Whisper 的两个痛点:

  1. 推理速度慢
    WhisperX 采用 CTranslate2 推理引擎,支持混合精度 (fp16, int8) 与 GPU 并行推理,
    相比原版 Whisper,通常 提速 2~4 倍

  2. 时间戳不精确
    Whisper 原始输出的时间戳仅按句子粗略定位,容易偏移。
    WhisperX 使用 字级强制对齐 (forced alignment) 模块(基于 Montreal Forced Aligner 思路)
    对每个单词重新计算时间戳,实现毫秒级精准同步。

除此之外,它还原生支持:

📘 简单理解:
WhisperX = Whisper + CTranslate2 + 高精度对齐 + Diarization接口
一站式语音转录增强方案。


🗣️ pyannote.audio:领先的说话人分离模型

pyannote.audio 是法国 INRIA 实验室的开源项目,
是当前最成熟的 Speaker Diarization(说话人分离) 框架之一。

其典型处理流程包括:

  1. Voice Activity Detection (VAD):检测音频中何时有人声出现
  2. Speaker Embedding (说话人特征提取):提取每段语音的说话人特征向量
  3. Clustering (聚类):基于向量相似度将不同人声聚为不同说话人

在 WhisperX 的集成版本中,pyannote.audio 用于:

💡 优点:

  • Hugging Face 提供官方预训练模型
  • 支持 GPU / CPU 推理
  • 能在嘈杂环境中保持高准确率
  • 结果与 Whisper 时间戳自然对齐

🧩 二者协作流程图

Audio File
   │
   ▼
[WhisperX]
   ├── Speech Recognition → 文字转录
   ├── Word Alignment → 精确时间戳
   ▼
[pyannote.audio]
   ├── Speaker Embedding → 提取说话人特征
   ├── Clustering → 区分发言人
   ▼
[WhisperX Integration]
   └── Merge → 输出带 Speaker 标签的结构化 JSON

最终得到:

[SPEAKER_00] Hello, welcome to the show.
[SPEAKER_01] Thanks! Glad to join.

📦 对比总结

功能 Whisper WhisperX pyannote.audio
语音识别 ✅(更快)
对齐精度 一般 ✅ 字级对齐
说话人识别 ✅(通过 pyannote)
推理性能 ✅ 高效 (CTranslate2)
适用场景 单人录音 多人会议、播客 多人语音分离

非常好 👍 这是博客里最实用的一节 —— 让读者一眼看懂 WhisperX 的三种常用命令模式
我帮你整理成简洁、清晰、可复制的格式(含注释),适合直接放进教程文中👇


🧩 WhisperX 三大常用命令总结

WhisperX 的 CLI(命令行接口)设计非常统一,
只要记住「输入文件 + 模型选择 + 功能参数」三要素,就能快速完成各种任务。


🎙️ ① 语音识别(ASR)

这是最基础的语音转录模式,将音频转成文字。
支持多语言自动检测、GPU 加速、精确时间戳。

!whisperx audio.mp3 \
  --model large-v3 \
  --output_dir ./outputs \
  --fp16 True \
  --compute_type int8 \
  --beam_size 10 \
  --print_progress True

参数说明:


🗣️ ② 语音识别 + 说话人分离(ASR + Speaker Diarization)

在转录的基础上自动区分不同说话人(如会议、播客场景)。
WhisperX 内部会调用 pyannote.audio 完成说话人聚类。

!whisperx audio.mp3 \
  --model large-v3 \
  --output_dir ./outputs_diarized \
  --fp16 True \
  --compute_type int8 \
  --beam_size 10 \
  --print_progress True \
  --diarize \
  --hf_token hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

新增参数:

输出示例:

[SPEAKER_00] Hello, welcome back to the show.
[SPEAKER_01] Thanks! Great to be here.

🌍 ③ 语音识别 + 翻译(ASR + Translation)

将音频自动翻译为 英文(Whisper 内置翻译能力)。
适合中英混合语音、采访、外语内容。

!whisperx audio.mp3 \
  --model large-v3 \
  --output_dir ./outputs_translated \
  --task translate \
  --fp16 True \
  --compute_type int8 \
  --beam_size 10 \
  --print_progress True

关键参数:

输出示例:

原文(中文)→ 英文翻译:
我今天去东京出差。 → I went to Tokyo for a business trip today.

✅ 小结表格

模式 命令关键参数 输出结果
语音识别 --model, --compute_type 普通转录(含时间戳)
语音识别 + 说话人分离 --diarize, --hf_token 标注 SPEAKER 的文本
语音识别 + 翻译 --task translate 英文翻译文本