whisper-diarization — Whisper 기반 화자 분리 ASR

GitHub: MahmoudAshraf97/whisper-diarization
Stars: 5,530 | License: BSD-2-Clause
Language: Python / Jupyter Notebook

개요

OpenAI Whisper + NVIDIA NeMo를 결합해 누가 언제 말했는지까지 구분하는 ASR 파이프라인. 단순 전사(Speech-to-Text)를 넘어 화자 분리(Speaker Diarization)까지 처리한다.

파이프라인

  1. 음성 추출 — Demucs로 배경음악/노이즈 제거 후 보컬만 분리
  2. Whisper ASR — Faster Whisper로 전사
  3. 타임스탬프 정렬 — ctc-forced-aligner로 Whisper의 부정확한 타임스탬프 보정
  4. VAD & 분할 — MarbleNet으로 묵음 제거, 발화 구간 분할
  5. 화자 임베딩 — TitaNet으로 각 세그먼트의 화자 식별
  6. 매칭 & 재정렬 — 보정된 타임스탬프와 화자 정보 매칭, 구두점 모델로 재정렬

설치 및 사용

# FFMPEG + Cython 필요
pip install cython
pip install -c constraints.txt -r requirements.txt
 
# 실행
python diarize.py -a audio_file.wav
# VRAM >=10GB면 병렬 모드 사용 가능
python diarize_parallel.py -a audio_file.wav

핵심 기술 스택

구성요소역할출처
Faster WhisperASR (음성→텍스트)OpenAI / guillaumekln
MarbleNetVAD (화자 활동 감지)NVIDIA NeMo
TitaNet화자 임베딩NVIDIA NeMo
Demucs음원 분리Facebook Research
ctc-forced-aligner타임스탬프 보정

관련 페이지