WhisperX는 Max Bain과 커뮤니티가 유지하는 장문 음성용 오픈소스 파이프라인입니다. 음성 활동 감지, faster-whisper/CTranslate2 배치 전사, 언어별 강제 정렬과 선택적 pyannote 화자 분리를 결합합니다. 가치가 단순히 ‘더 빠른 Whisper’에 있는 것은 아닙니다. 인식한 단어에 더 세밀한 시간을 붙이고 익명 화자 ID를 단어·구간에 배정합니다. 각 단계는 별도 모델이며 서로 다른 오류가 있습니다.
WhisperX가 Whisper를 새로운 범용 ASR로 대체하는 것은 아닙니다. VAD로 나누고 faster-whisper로 인식한 다음 음소 모델로 텍스트를 오디오에 다시 맞추고, 필요하면 정렬된 단어를 화자 구간과 합칩니다. 틀린 전사는 정확한 시간표처럼 보여도 참이 되지 않습니다. 숫자·기호·혼합 문자가 정렬 사전에 없으면 시간이 없거나 보간일 수 있고, 발화가 겹치면 SPEAKER_00도 잘못 배정될 수 있습니다.
Whisper 위에 추가되는 단계
| 단계 | 구현 | 가치 | 오류 경계 |
|---|---|---|---|
| 음성 구간 | pyannote/Silero VAD와 Cut & Merge | 배치 가능한 발화 조각 | 작은 소리 누락, 다른 턴 병합 |
| 전사 | faster-whisper/CTranslate2 | 배치와 양자화 | 업스트림 Whisper와 디코딩 차이 |
| 강제 정렬 | 언어별 wav2vec2/음소 ASR | 단어를 세밀한 시간에 매핑 | 문자, 숫자, 기호, 언어 모델 실패 |
| 화자 분리 | pyannote Community-1 | 익명 화자 ID | 겹침·짧은 턴·비슷한 목소리, 실명 아님 |
| 출력 | SRT/VTT/TSV/TXT/JSON | 자막과 후처리 | 줄바꿈·읽기·사실은 사람 검수 |
원 논문은 장문 Whisper의 시간 드리프트·반복·환각, 순차 디코딩의 배치 제약, 거친 발화 타임스탬프를 다룹니다. VAD Cut & Merge로 배치 추론을 가능하게 하고 음소 강제 정렬로 인식 뒤 단어 시간을 만듭니다. 논문의 속도와 점수는 특정 모델·데이터·하드웨어 결과이므로 현재 모든 환경의 배수나 WER로 옮기지 않습니다.
현재 유지보수와 의존성
프로젝트는 유지되고 있습니다. 검토 시 최신 안정 릴리스는 v3.8.6, main 메타데이터는 3.8.7rc1이었습니다. 최근 릴리스는 정렬 불가 문자의 단어 시간, 진행 콜백, Torch/TorchCodec 호환을 수정했습니다. 이는 활동 증거이면서 운영에서 main 대신 검증한 릴리스와 모델을 고정해야 한다는 증거입니다.
| 의존 경계 | 현재 요구 | 운영 영향 |
|---|---|---|
| Python | 3.10 이상 3.14 미만 | 격리 환경 필요 |
| ASR | faster-whisper≥1.2, CTranslate2≥4.5 | CUDA·모델·디코딩 회귀 |
| PyTorch | Torch/Torchaudio 약2.8 | wheel·드라이버·CUDA 일치 |
| 화자 분리 | pyannote.audio≥4 | TorchCodec, 게이트 모델, 별도 수명주기 |
| 라이선스 | WhisperX BSD-2, 모델은 별도 | 고지와 조건 별도 보관 |
설치와 통제된 첫 실행
python -m venv .venv
source .venv/bin/activate
pip install whisperx
whisperx meeting.wav --model large-v2 --batch_size 4 --output_format json
whisperx meeting.wav --diarize --hf_token "$HF_TOKEN"README는 PyPI 안정판을 권장하고 개발판의 실험적 변화와 버그를 경고합니다. GPU 문서는 현재 CUDA 12.8을 안내합니다. CPU int8도 가능하지만 속도와 품질을 측정해야 합니다. 메모리가 부족하면 batch부터 줄이고, 그 뒤 작은 ASR이나 int8을 비교하십시오. 후자는 인식을 바꿀 수 있습니다. Hugging Face token은 게이트된 화자 모델 다운로드에만 쓰며 코드, 셸 기록, 결과에 남기지 않습니다.
장문 음성 운영 절차
- 녹음·전사 동의를 받습니다.목적, 출처, 보존과 접근자를 기록합니다.
- 원본을 보존합니다.일관된 작업 사본을 만들고 모노 변환 전 채널을 남깁니다.
- 비공개 테스트를 만듭니다.침묵, 소음, 음악, 겹침, 끼어들기, 이름, 숫자, 언어 전환, 최대 길이를 넣습니다.
- 전체 스택을 고정합니다.WhisperX, faster-whisper, ASR, align, VAD, pyannote, Torch/CUDA, compute type을 기록합니다.
- VAD와 batch를 조정합니다.누락 음성, 거짓 음성, GPU 메모리와 실시간 계수를 함께 측정합니다.
- 정렬 전 전사를 남깁니다.정렬 실패가 원래 ASR 가설을 지우지 않게 합니다.
- 정렬 예외를 표시합니다.정렬, 보간, 미정렬을 구분하고 장문 전 구간의 드리프트를 봅니다.
- 필요할 때만 diarization합니다.token을 비밀로 쓰고 인원 범위를 설정하며 겹침·짧은 턴을 봅니다.
- 출시 검수를 합니다.이름, 숫자, 부정, 환각, 시간, 화자 전환과 자막 읽기를 확인합니다.
- manifest와 내보냅니다.JSON/SRT/VTT, 모델 설정, 검수 상태와 삭제일을 저장합니다.
정렬 언어와 실패 처리
강제 정렬은 언어별 모델에 의존합니다. README는 영어·프랑스어·독일어·스페인어·이탈리아어 torchaudio 기본 모델과 DEFAULT_ALIGN_MODELS_HF의 추가 매핑을 설명합니다. 감지 언어가 없으면 음소 ASR을 --align_model로 제공하고 실제 음성으로 검증해야 합니다. Whisper가 전사하는 언어라고 모든 단어 정렬이 가능한 것은 아닙니다.
숫자, 통화, 기호, 혼합 문자, 코드 스위칭과 특이 철자는 사전 밖일 수 있습니다. 최근 릴리스가 시간 처리를 고쳤지만 nearest/linear 보간은 편리한 추정일 뿐 음향 정렬 증거가 아닙니다. ignore는 빈칸을 드러냅니다. downstream에 aligned/interpolated 상태를 보존하십시오.
| 상황 | 위험 | 검사 |
|---|---|---|
| 숫자/통화 | 표기형이 사전에 없음 | 연도·가격·날짜·단위 별도 확인 |
| 언어 전환 | 한 모델이 두 문자 미포함 | 언어 구간 분리 또는 검증 aligner |
| 고유명사 | ASR 철자와 음소 사전 불일치 | 사람 정답으로 글자·시간 채점 |
| 음악/침묵 | VAD와 ASR 발화 판단 불일치 | 거짓 발화·환각 라벨 |
| 겹침 | 세 단계 동시 저하 | 겹침 테스트와 불확실 화자 허용 |
| 짧은 턴 | 단어·화자 구간 중첩 부족 | 끼어들기 경계 검토 |
pyannote 접근, 라이선스와 의미
현재 CLI 기본은 pyannote/speaker-diarization-community-1입니다. 게이트 조건에 동의하고 Hugging Face access token을 만들어야 합니다. 모델 카드는 Community-1을 CC-BY-4.0으로 표시하고 다운로드 뒤 로컬·오프라인 사용을 설명합니다. 이는 WhisperX BSD-2와 별도 조건입니다.
Diarization은 어떤 익명 군집이 언제 말했는지 추정할 뿐 실명을 식별하지 않습니다. SPEAKER_00은 파일마다 바뀌고 한 사람을 나누거나 비슷한 목소리를 합칠 수 있습니다. min/max는 제약이지 정답 보장이 아닙니다. 겹침은 공식 한계입니다. 법률·연구·상담·임상에서는 원음을 보존하고 화자 배정을 검토 가능한 메타데이터로 둡니다.
인접 도구 비교
| 선택지 | 적합할 때 | 주요 대가 |
|---|---|---|
| WhisperX | 장문 batch, 단어 정렬, 로컬 익명 화자 | 다중 모델·복합 오류 |
| OpenAI Whisper | 업스트림 Python과 단순 동작 | 거친 시간, 표준 화자/장문 batch 없음 |
| faster-whisper | CTranslate2 전사 처리량만 필요 | 정렬/화자와 검수 추가 |
| whisper.cpp | C/C++, CPU, Apple Silicon, edge/offline | 별도 배포 생태계 |
| 호스팅 API | 운영·확장·현재 모델 위임 | 데이터 외부, 과금, 기능 차이 |
독립 판단:WhisperX는 ASR 이후 파이프라인이지 자동 정확도 스위치가 아닙니다. 단어 시간과 익명 화자가 편집 시간을 줄일 때 적합합니다. 단순 텍스트면 충분하거나 언어 aligner가 없고, 겹침이 많고, 팀이 Python/Torch/CUDA/모델을 유지할 수 없다면 faster-whisper, Whisper, whisper.cpp나 API가 더 안정적일 수 있습니다.
자주 묻는 질문
Whisper와 다른 새 모델인가요?
아닙니다. faster-whisper의 Whisper 계열에 VAD, 강제 정렬과 선택적 pyannote를 더합니다.
단어 시간이 항상 정확한가요?
아닙니다. 사전 밖 문자·숫자·기호·혼합 문자·언어 불일치가 실패하며 보간은 추정입니다.
실명을 식별하나요?
아닙니다. SPEAKER_00 같은 익명 군집이고 실명 연결에는 별도 증거가 필요합니다.
HF token이 필수인가요?
기본 전사에는 필요 없습니다. pyannote 기본 모델 다운로드에는 동의와 token이 필요합니다.
오프라인 가능한가요?
모든 모델을 받은 뒤 가능하지만 앱 통신, 로그, 캐시와 출력 저장도 확인해야 합니다.
왜 GPU 메모리가 부족한가요?
batch, ASR, compute type, align, diarization이 자원을 씁니다. batch부터 낮추고 품질을 보며 변경합니다.
겹친 화자에 믿을 수 있나요?
진실로 취급할 수 없습니다. 프로젝트도 겹침과 불완전한 diarization을 한계로 둡니다.
어떤 언어를 정렬하나요?
torchaudio 기본과 alignment.py HF 목록이 있습니다. 없으면 검증한 음소 모델을 쓰거나 투명하게 생략합니다.
검토 출처
- WhisperX 공식 저장소
- 공식 README와 한계
- WhisperX 논문
- 공식 릴리스
- 의존 메타데이터
- 정렬 코드와 언어 표
- 현재 CLI 기본
- 화자 배정 코드
- pyannote Community-1 카드
- faster-whisper
- OpenAI 호스팅 전사 문서
- WhisperX BSD-2 라이선스
독립 기술 검토: 2026-08-20. 버전, 의존성, 모델 접근과 언어 표는 변합니다. 고정한 1차 출처와 자체 평가를 확인하십시오.



