WhisperX는 OpenAI의 Whisper 모델 기반으로, 긴 오디오를 효율적이고 정확하게 받아쓰기하며 단어 단위의 정밀한 시간 정보를 제공하는 시스템이다. 이 리뷰에서는 논문에서 제안하는 기술 중 수식과 코드 블록을 중심으로 정리함
1. Voice Activity Detection (VAD)
WhisperX는 오디오 전체를 처리하기 전에, 음성이 존재하는 구간만을 식별하는 VAD를 선행적으로 수행한다. 이를 통해 불필요한 연산을 줄이고, 후속 처리를 위한 정제된 오디오 구간을 생성할 수 있다.
오디오는 시간 단위로 나뉜 특징 벡터 시퀀스로 표현된다:
$A = \{a_1, a_2, ..., a_T\}$
이에 대한 VAD 모델의 출력은 각 시점의 음성 여부를 나타내는 이진 시퀀스이다:
$y = \{y_1, y_2, ..., y_T\}, \quad y_t \in \{0, 1\}$
VAD는 신경망을 통해 각 시간 프레임에 대해 음성일 확률을 예측하며, 후처리를 통해 연속된 음성 구간들을 추출한다. 결과는 다음과 같은 구간 리스트로 표현된다:
$s = \{(t_0^i, t_1^i)\}_{i=1}^{N}$
2. Cut & Merge
Whisper는 최대 30초 길이의 오디오만 처리 가능하므로, VAD를 통해 추출된 음성 구간은 추가적으로 잘라내거나 합치는 작업이 필요하다.
Cut
긴 구간은 말의 활동이 가장 적은 지점을 찾아 잘라낸다. 논문에서는 이를 "min-cut"이라 부르며, 말이 거의 없는 구간을 기준으로 분할하여 인식 오류를 최소화한다.
Merge
반대로, 너무 짧은 구간은 인식 정확도 저하와 연산량 증가의 원인이 되므로, 최대 길이 제한 내에서 인접한 구간을 합친다.
논문에 제시된 파이썬 코드의 핵심은 다음과 같다:
def binarize_cut(scores, max_dur, onset_th, offset_th, TIMESTEP):
segs = []
start = 0
is_active = scores[0] > offset_th
max_len = int(max_dur / TIMESTEP)
for i in range(1, len(scores)):
sc = scores[i]
if is_active:
if i - start >= max_len:
pdx = i + max_len // 2
qdx = i + max_len
min_sp = argmin(scores[pdx:qdx])
segs.append((start, pdx + min_sp))
start = pdx + min_sp
elif sc < offset_th:
segs.append((start, i))
is_active = False
else:
if sc > onset_th:
start = i
is_active = True
return segs
3. Phoneme 기반 Forced Alignment
Whisper는 기본적으로 단어 단위 타임스탬프를 제공하지 않으므로, WhisperX에서는 별도의 음소(phoneme) 인식 모델을 통해 단어의 시작/끝 시간을 추정한다.
이 과정은 다음과 같이 정리된다:
- 텍스트를 음소 시퀀스로 변환하여 모델의 음소 집합 CC 중 해당하는 집합 CTiC_{T_i}를 추출한다.
- 입력 오디오에 대해 음소 인식 모델을 실행하여 로그 확률 행렬 Li∈R∣CTi∣×TL_i \in \mathbb{R}^{|C_{T_i}| \times T}을 생성한다.
- DTW(Dynamic Time Warping)를 이용해 음소 시퀀스와 시간 축을 정렬한다.
- 각 단어의 시간은 해당 단어의 첫 음소와 마지막 음소의 시작·종료 시간으로 결정한다.
이 방법은 Whisper 모델이 내장한 cross-attention 기반의 시간 예측보다 훨씬 정확한 결과를 제공한다.
4. 성능 지표 및 평가
WhisperX는 다음과 같은 평가 지표를 통해 성능을 검증하였다:
- WER (Word Error Rate): 전체 단어 인식 오류율
- IER (Insertion Error Rate): 불필요하게 삽입된 단어의 비율
- Precision/Recall: 단어 단위 정렬 정확도. 200ms 이내로 정답과 일치하는 경우를 정답으로 간주함
- 5-gram 반복률: 동일한 5단어가 반복된 횟수
WhisperX는 기존 Whisper 모델 대비 속도와 정확도 모두에서 개선된 결과를 보이며, 특히 batched transcription 환경에서 최대 12배 빠른 속도를 기록하였다.
결론
WhisperX는 긴 오디오에 대해 병렬 처리와 정확한 단어 단위 타임스탬프를 가능하게 하는 ASR 시스템이다. VAD 기반 전처리, 구간 길이 최적화, 그리고 외부 phoneme alignment 모델을 조합하여 효율성과 정확도를 모두 향상시켰다. 해당 방식은 자막 생성, 음성 분석, 다국어 인식 등 다양한 응용에 활용될 수 있다.