1. Introduction
웹 기반 대규모 데이터셋을 활용한 약한 지도 및 비지도 학습은 음성 인식, 화자 인식, 음성 분리, 키워드 탐지 등 다양한 음성 처리 작업에서 뛰어난 성능을 보여주고 있습니다. Whisper는 이보다 더 발전시켜, 68만 시간의 잡음이 포함된 음성 데이터와 12.5만 시간의 영어 번역 데이터를 통해 학습된 단순한 Encoder-Decoder Transformer 구조로 zero-shot 다국어 음성 전사를 수행했습니다.
하지만 대부분 벤치마크는 짧은 발화를 기준으로 구성되어 있고, 실제 응용에서는 수 시간에 달하는 긴 오디오 전사가 필요합니다. Whisper같은 ASR 모델은 짧은 오디오 단위를 기준으로 학습되고, Transformer 구조는 메모리 제한으로 인해 임의 길이의 오디오 전사에 적합하지 않습니다.
최근 연구에서 슬라이딩 윈도우 기반의 휴리스틱 접근을 사용하지만, 오디오 일부가 겹치거나 잘리는 문제로 인해 오류가 발생합니다. whisper는 이를 해결하기 위해 버퍼링 기반 전사 방식을 제안했고, 이는 정확한 시간 스탬프 예측에 기반해 다음 입력 윈도우를 얼마나 이동할 지 결정합니다. 그러나 이 방식은 시간 스탬프의 부정확성으로 인해 누적 오차(drift)가 생기기 쉽습니다. 또한 버퍼링된 전사는 이전 결과를 조건으로 삼는 순차적인 특성 때문에 한번에 여러 입력을 동시에 빠르게 처리하는 방식인 배치 추론이 어렵습니다.
* 버퍼는 조각으로 분할해서 처리하는 구조를 의미하며, Whisper는 최대 30초만 처리할 수 있기 때문에 긴 오디오를 겹치게 잘라 버퍼링으로 처리하여 타임스탬프가 조금씩 밀리거나 중복되는 문제가 생깁니다. (예: 0~20초, 10~30초, 20초~40초)
기존에는 음성과 전사를 단어나 음소 수준에서 정렬하는 강제정렬 기법이 사용되었습니다. 이는 보통 HMM 기반 음소 모델과 외부 경계 보정 모델을 조합하여 구현되며, 최근에는 딥러닝 기반의 양방향 attention matrix 또는 CTC 기반 분할 기법도 사용됩니다. 최신 ASR 모델과 경량화된 음소 인식 모델을 결합하면 더 나은 결과를 기대할 수 있습니다.
본 논문에서 제안한 WhisperX는 단어 수준의 정확한 시간 스탬프를 갖춘 효율적인 긴 오디오 전사 시스템으로, Whisper의 전사 기능에서 다음 세 가지 단계를 추가합니다.
1. VAD로 오디오 사전 분할
2. Cut & Merge로 말소리가 적은 경계 기준으로 약 30초 길이로 조각 병합
3. 강제 음소 정렬을 통한 단어 수준 정렬
VAD 기반과 cut & Merge 전략으로 전사 품질을 향상시키고 속도가 10배 이상 빨라졌습니다. 음소 수준 정렬을 기준으로 단어 수준 시간도 계산하여 자막 생성, 대화 분석 등에 활용될 수 있습니다.
* 말소리가 적은 경계는 VAD 점수가 가장 낮은 지점(argmin)으로 찾아냅니다. 말소리가 최소화된 지점으로, 문장이 끝나거나 끊길 가능성이 높은 자연스러운 분할 지점입니다.
2. Architecture

WhisperX의 구성 요소에 대해 설명하겠습니다. WhisperX는 음성 활동 감지(VAD)와 강제 음소 정렬(forced phoneme alignment)을 활용하여 단어 수준의 시간 스탬프를 제공하는 시간 정확 음성 인식 시스템입니다. 긴 오디오 전사 및 단어 분할 벤치마크에서 SOTA이며, 제안한 VAD 기반 Cut & Merge 전략이 전사 품질을 향상시키고 배치 추론을 통해 최대 12배의 전사 속도 향상을 가능하게 한다는 것을 보였습니다. 본 시스템은 오픈소스로 제공됩니다.
VAD
VAD는 오디오 스트림 내에서 음성이 포함된 영역을 식별하는 과정을 말합니다. WhisperX에서는 입력 오디오를 먼저 VAD로 사전 분할하는데, 이방법의 장점은:
- 비활성 음성 구간에서 whisper같은 고비용 모델의 추론을 피할 수 있어 ASR보다 적은 비용
- 오디오를 활성 음성이 없는 경계에서 분할함으로써 경계 효과로 인한 오류를 줄이고, 각 청크가 독립된 단위로 만들어져 서로 참고할 필요 없이 병렬 전사 가능
- VAD가 제공하는 음성 경계 정보를 이용해 강제 정렬 범위를 지역화할 수 있어 whisper의 시간 스탬프에 대한 의존성 제거 가능
VAD는 시퀀스 라벨링 문제로 정의됩니다. 입력은 시간 단위로 추출된 음향 특성 벡터의 시퀀스 A = {a1, a2, ...}로 표현됩니다. 출력은 이진 라벨 시퀀스 Y = {y1, y2, 0, 1,...}로 1이면 해당 시점에 음성이 있음을 나타냅니다. VAD 모델: A -> y가 신경망으로 구성되며, 출력 값은 바이너리화 단계에서 후처리됩니다. 후처리는 스무딩과 결정 단계로 이루어집니다. 이진 예측 결과는 활성 음성 구간 시퀀스 s = {s1, s2, ...}으로 표현됩니다. 각 si = (t0, t1)는 시작 및 종료 인덱스를 포함합니다.
- 스무딩 : 말소리가 약한 구간에서 on/off가 자주 바뀌는 걸 방지하기 위해 음성 시작 임계값과 끝 임계값을 설정합니다. 예를 들어, 0.6 이상이면 말을 시작한 것이고 0.3 이하면 말이 끝난 것이라고 판단합니다.
- 결정 단계 : 잡음 같은 말소리를 무시하고 말 구간이 되기 위한 최소 지속 시간 기준을 적용합니다. 최소한 0.2초 이상 말해야 말이라고 인정하여 짧은 잡음이나 침묵 사이 간섭, 기침 소리 등을 무시할 수 있습니다.
* ASR은 Automatic Speech Recognition으로 자동 음성 인식 기술입니다. 음성을 텍스트로 바꾸는 딥러닝 모델로는 Whisper가 포함됩니다.
* 지역화는 전체 오디오에서 짧은 구간 세그먼트에 대해 정렬을 수행한다는 의미입니다. 지역화하면 연산량이 줄고, 정렬이 더 정확해집니다. 또한 한 구간에서 정렬 오류가 나도 전체에 영향을 주지 않아 오류 전파가 방지됩니다.
Cut & Merge
활성 음성 구간 s의 길이는 whisper 모델의 최대 입력 길이보다 짧거나 길 수 있고, 긴 구간은 한 번의 추론으로 처리할 수 없습니다. 이를 해결하기 위해 스무딩 단계에서 min-Cut 연산을 적용해 구간 길이의 상한선(최대 길이)을 설정합니다. 최대 입력 길이를 초과하는 음성 구간을 음성 활동 점수가 가장 낮은 지점에서 분할합니다. 분할 위치는 너무 짧은 구간을 방지하고 적절한 문맥을 유지하기 위해 whisper의 최대 입력길이인 30의 절반과 전체 사이로(15~30) 제한합니다. 이렇게 입력 세그먼트의 최대 길이를 보장할 수 있습니다.
이제 너무 짧은 세그먼트에 대해 고려해야 하는데, 짧은 음성 구간은 문맥이 부족하여 모델 성능을 낮추고 추론이 여러번 필요하므로 비효율적입니다. 해결하기 위해 Merge 연산을 통해 짧은 구간을 병합합니다. 인접 구간의 총 길이가 최대 병합 시간 이하일 경우만 병합 가능합니다. 경험적으로는 총 길이가 30일 때 가장 이상적이며, Whisper 학습 시의 분포와 유사합니다.
긴 구간은 Cut, 짧은 구간은 Merge 작업으로 적당한 길이의 입력 청크를 만들어 Whisper 모델이 가장 잘 작동 할 수 있도록 전처리합니다. 하지만 짧은 구간을 병합하면 문맥이 섞이지 않을까 의문이 들었습니다. 병합 구간은 하나의 대화 흐름으로 이루어지는 경우가 많고, 서로 다른 화자가 말하고 있는 구간은 병합되지 않도록 음성 경계를 감지하기 때문에 문맥이 섞이지 않습니다. 또한 짧은 문장을 전사하는 것보다 병합을 통해 더 충분한 문맥을 주는 것이 전사 품질을 오히려 높여줍니다.
Whisepr Transcription
세그먼트 길이 s가 최대 입력 길이와 거의 같고, 활성 음성이 없는 경계로 잘 분할된 오디오를 whisper 모델로 병렬 전사할 수 있습니다. 병렬 전사를 하기 위해서는 이전 텍스트를 조건으로 사용하지 않아야 합니다. 왜냐하면 이전 텍스트를 봐야하는 조건 기반 전사는 배치 내 샘플 간 독립성을 깨뜨리고 환각과 반복에 더 취약해지기 때문입니다. 본 논문에서는 whisper의 No timestamp decoding 옵션을 사용합니다.
Forced Phoneme Alignment
먼저 정렬이란 두 시퀀스 사이에서 각 요소가 서로 어디에 대응되는지 연결해주는 작업입니다. 강제 음소 정렬은 세그먼트 s와 그에 해당하는 텍스트에 대해, 각 단어의 시작 및 종료 시간을 추정하는 것이 목표입니다. 이를 위해 음소 인식 모델을 활용합니다. 이 모델은 음성 단어를 구분하는 가장 작은 단위를 분류하는 모델입니다. 정답 텍스트가 주어진 상태에서 오디오를 그 텍스트에 맞춰 강제로 정렬하기 때문에 forced가 붙습니다. 이제 절차에 대해 알아보겠습니다.
입력 오디오 세그먼트 → 음소 모델 → logits 행렬 ( [음소 개수 k] X [시간 길이 T] 크기의 행렬 )
Whisper의 전사 결과를 음소 시퀀스로 변환한 뒤, 해당 시퀀스에서 모델의 사전에 존재하는 음소만 추출하여 wav2vec2 정렬 모델에서 각 시간 프레임마다 음소 확률 logits을 예측합니다. 그다음 DTW 정렬 알고리즘을 적용해 두 음소 시퀀스와 logits 간 최적 시간 경로를 산출하고, 정렬 결과로 단어의 첫 음소 시작과 종료 시간을 단어 타임스탬프를 계산합니다. Whisper의 음소는 단어마다 몇 개 안되지만 오디오는 T가 수백 개 프레임으로 구성됩니다. 그래서 DTW에서 각 음소가 어떤 시간 구간에 해당하는지 찾아주는 최적의 정렬 경로를 계산합니다. 모델의 사전에 존재하지 않는 음소는 가장 가까운 음소의 시간으로 대체됩니다. 이 전체 과정은 병렬 처리가 가능해서 긴 오디오의 전사와 정렬 속도가 빨라집니다.
다음으로 넘어가기 전에 DTW에 대해 더 자세히 알아보겠습니다.

DTW(동적 시간 왜곡)는 서로 길이도 다르고 속도도 다른 두 시퀀스를 시간 축에 따라 서로 유사하게 최적으로 정렬시키는 알고리즘입니다. 두 시퀀스의 길이가 다르거나 속도가 다를 경우 주로 사용합니다. 음소 시퀀스와 logits 시퀀스에서 각 쌍에 대해 얼마나 비슷한지를 나타내는 거리값을 계산하여 거리가 가장 작은 경로를 찾고, 최소화 경로를 따라 두 시퀀스를 매칭시킵니다. 각 프레임에서 정답 음소가 나올 확률이 높으면 거리가 작고, 확률이 높으면 거리가 큽니다. 사람 말처럼 속도나 발음, 길이 , 타이밍이 일정하지 않고 길이가 달라도 정확하게 정렬됩니다. 예를 들어 빠른 발음과 느린 발음도 정렬되며, 음소가 길게 늘어지는 경우도 자동 보정됩니다.
DTW는 시간 축을 변형시켜 최대한 유사하게 계산하는데, 총 4단계로 이루어집니다. A = [1,3,4] B = [1,2,3,4]를 예로 설명하겠습니다.
1. 거리 행렬 계산

A와 B의 거리 차이를 절대값을 취해 거리 행렬을 계산합니다.
2. 누적 거리 행렬 계산

왼쪽, 왼쪽 대각선, 위쪽 세 방향 중 가장 작은 값을 더합니다.
3. 역추적

가장 오른쪽 아래부터 누적 거리가 가장 작은 값으로 역추적합니다.
4. 매칭 경로 확인

이제 이 거리를 매칭하여 최적의 정렬을 확인할 수 있습니다.
Multi-lingual Transcription and Alignment
WhisperX는 아래 두 가지 조건만 만족한다면 다국어 음성 전사에도 적용할 수 있습니다:
- 사용되는 VAD 모델이 다양한 언어에 대해 견고해야 하며
- 정렬용 음소 모델은 목표 언어 또는 여러 언어에 대해 학습되어 있어야 합니다.
다국어 음소 인식 모델 [21]도 사용 가능하며, 이 모델은 언어와 관계없이 음성 파형에서 자기지도 학습을 합니다. 소리 구조와 리듬, 억양, 타이밍 등을 학습하여 어떤 언어든 소리 패턴만 있으면 대응할 수 있는 공통 음향 표현을 만듭니다. 그래서 학습 시 포함되지 않았던 새로운 언어로도 일반화될 수 있습니다. 단, 이 모델을 WhisperX에서 사용할 경우 언어 독립적 음소 집합을 목표 언어의 음소로 매핑하는 과정이 추가로 필요합니다. 다국어 음소 인식 모델은 언어 독립적인 음소 코드를 사용하지만, Whisper는 언어별로 자신만의 고유한 음소 체계를 사용하기 때문입니다. 또한 모델은 음소 단위로 logits을 출력하는데 target transcript는 문자 단위나 철자 기반이기 때문에 정렬 시 단어 안에 포함된 음소를 정확히 연결하려면 언어별 규칙 기반 매핑이 필요합니다.
언어 독립적 음소는 모든 언어의 발음을 동일한 기호 체계로 통합한 국제 음성 기호 (IPA)를 기반으로 발음 공통점을 클러스터링해서 언어-독립 음소셋을 정의합니다. 언어는 다르지만 소리는 비슷한 경우를 한 음소로 통합해서 공통 음소 집합을 만들고, 공통 음소에서 특정 언어 전용 음소로 매핑하는 겁니다.
* logits이란 신경망의 출력층 바로 전 단계의 숫자값입니다. 각 클래스에 대해 확률을 나타냅니다. 어떤 음소가 나올 확률이 높은지를 판단합니다.
Translation
Whisper는 번역 모드도 제공하며, 여러 언어로 된 입력 음성을 영어로 번역된 전사로 출력 가능합니다.
WhisperX의 VAD 기반 배치 전사 전략은 번역 모드에서도 사용할 수 있습니다. 그러나 음성-텍스트 간의 발음 일치가 사라지므로, 음소 정렬은 불가능합니다. 즉, 번역된 텍스트는 음향학적 기준으로 음소 정렬할 수 없습니다.
Word-level Timestamps without Phoneme Recognition
외부 음소 인식 모델 없이 Whisper에서 직접 단어 수준 타임스탬프를 추출할 수 있는 가능한지 실험해보았습니다. Whisper의 디코더에서 인코딩 결과에 대해 어느 부분을 주로 참고했는지 Cross-attention score으로 기록해 타임스탬프를 추정하려는 시도들도 있었습니다. Attention은 확률 분포로 퍼져있어 말하고 있는지 존재 여부를 파악할 수 있지만 정확한 시작과 끝 구간을 알기 어렵습니다. 이러한 접근은 음소 매핑 과정이 필요 없고, 추론 연산량이 줄어든다는 장점이 있습니다. 하지만 WhisperX에서 사용한 외부 음소 정렬 방식보다 성능이 낮고, 시간 정렬 기준으로 사용하기엔 타임스탬프 정확도가 낮아 단어 정렬 품질이 떨어집니다.
3. Evaluation
평가에서는 아래 세 질문에 답하고자 합니다:
- WhisperX는 긴 오디오 전사와 단어 수준 정렬에서 기존 최신 ASR보다 더 좋은 성능을 내는가?
- WhisperX의 VAD 기반 Cut & Merge 전처리는 전사 품질과 속도에 어떤 영향을 주는가?
- 사용하는 음소 인식 모델과 Whisper 모델 버전의 선택이 단어 정렬 성능에 어떤 영향을 미치는가?
Datasets
데이터셋은 다양한 실제 환경을 반영한 여러 데이터셋으로 평가했습니다.
AMI Meeting Corpus의 회의 데이터와 Switchboard-1 Telephone Corpus (SWB)의 전화 대화 데이터, TED-LIUM 3의 강연 데이터, Kincaid46의 Youtube 등에서 가져온 영상 오디오 데이터로 긴 오디오 위주로 구성되어 있습니다.
Metrics
WER : Word Error Rate, 전사 결과 정확도
Spd. : 전사 속도. Whisper 기준으로 배수 표시
IER : Insertion Error Rate, 불필요하게 추가된 단어 비율 -> 환각 평가
5-Dup : 전사에서 같은 5단어 반복 횟수 -> 반복 오류 평가
Precision / Recall (단어 정렬 정확도) : 예측한 단어 타임스탬프가 실제 단어 위치와 200ms 안에 맞으면 True Positive
Implementation Details
WhisperX는 기본적으로 Whisper의 기본 설정을 사용합니다. large-v2, Greedy 디코딩, VAD 모델 pyannote, 음소 모델 wav2vec2 BASE 960h를 사용합니다. 이 모델은 영어 한정 CMU Pronouncing Dictionary의 음소 표기를 따르는 LibriSpeech 데이터셋으로 훈련되었고, 이는 음소 개수가 약 39개 정도로 구성된 고정 사전이라 logits 행렬의 음소 개수 k는 39로 고정됩니다. 모든 속도 비교는 NVIDIA A40 GPU 기준으로 진행했습니다.
4. Results
Word Segmentation Performance (단어 정렬 성능)

기존 최신 음성 인식 모델인 Whisper, wav2vec2.0과 비교해보면, WhisperX는Word Segmentation, WER, Spd 모두에서 더 우수한 성능을 보여줍니다. 특히 배치 전사를 사용할 경우 가벼운 모델인 wav2vec2.0보다도 더 빨랐습니다. 위 결과에서 확인할 수 있듯이 Whisper만 사용해서 단어 수준 타임스탬프를 추출하면 성능이 낮았습니다. 즉, Whisper는 아주 큰 모델이고 학습량도 많지만 시간 정렬 작업에는 적합하지 않다는 것을 의미합니다. 따라서 정확한 단어 시작과 끝 구간 학습에는 한계가 있습니다.
Effect of VAD Chunking (VAD Chunking 효과)

WhisperX는 VAD+Cut&Merge 전처리를 통해 WER와 Precision/Recall을 동시에 향상시킵니다. 반면 VAD 없이 긴 오디오를 슬라이딩 윈도우로 쪼개서 배치 처리하면 WER가 심각하게 저하되고 단어 정렬도 엉망이 됩니다. 그 이유는 경계 효과 때문인데, 단어가 중간에 끊기거나 말이 시작되기 전에 잘라서 오류가 심해집니다.
VAD로 오디오를 미리 나누고 각 청크를 서로 독립적으로 전사하는 방식은 최대 12배 속도가 향상되었고 성능도 향상되었습니다. Whisper의 buffered transcription의 한계를 극복했다고 볼 수 있습니다.
Merge 연산에서 세그먼트 최대 길이를 얼마나 잡을지 테스트한 결과, Whisper 훈련에서 사용한 입력 길이인 30초가 가장 적절했습니다. 문맥을 최대로 유지하는 것이 성능에 가장 유리했습니다.
Hallucination(환각) & Repetition(반복)

WhisperX는 Kincaid46, TED-LIUM 데이터셋에서 가장 낮은 삽입 오류율(IER)을 보였습니다. 즉, WhisperX는 Whisper보다 불필요한 단어를 덜 생성하고 같은 단어 5-gram 반복 수도 훨씬 작습니다. WhisperX는 Whisper의 디코딩된 타임스탬프 토큰에 의존하지 않고 VAD로 정확한 발화 구간을 미리 나눈 뒤, 해당 범위에서만 정렬을 수행하기 때문에 반복 루프나 비활성 음성 영역에서 오작동이 방지됩니다. wav2vec2.0은 정확도는 낮지만, 환각과 반복은 훨씬 적게 발생합니다.
Effect of Whisper & Alignment Model

Whisper 모델은 사이즈가 클수록 정렬 성능이 향상되었습니다. 하지만 정렬용 음소 인식 모델은 클수록 무조건 좋은 건 아닙니다. VoxPopuli로 학습된 모델은 AMI 데이터셋에서 성능이 높은 것으로 보아 오히려 도메인 적합성이 더 중요합니다.
결론적으로 Whisper는 가능한 큰 모델을 쓰고, 정렬용 음소 모델은 도메인에 맞는 걸 골라야 성능이 잘 나옵니다.
* 음성 데이터의 도메인은 화자의 말투, 배경 소음, 언어, 방언, 음질 등을 포함합니다. 모델이 훈련 데이터와 지금 처리하고 있는 오디오 특성이 얼마나 유사한지가 음소 정렬 성능에 큰 영향을 미칩니다.
5. Conclusion
본 논문에서 제안한 WhisperX는 오디오 내 병렬 전사를 가능하게 하는 time-accurate 음성 인식 시스템입니다. VAD + Cut&Merge 전처리를 도입하여 Whisper의 문제였던 hallucination과 repetition을 줄이고, 오디오 내부에서 병렬 전사가 가능해졌습니다. 이로 인해 전사 속도가 12배 증가하고 정확도는 유지되거나 개선되었습니다. 하지만 WhisperX에도 여전히 hallucination이 존재한다는 것이 아쉽습니다.
Whisper의 전사 결과를 외부 음소 인식 모델과 강제 정렬시켜 단어 수준의 정밀한 타임스탬프를 생성할 수 있습니다. 이 방식은 연산량이 거의 늘지 않고, 자막 생성, 화자 분리, 키워드 탐지 등 다양하게 응용될 수 있습니다. WhisperX는 Whisper를 그대로 사용하는 wrapper 구조로 구현되었지만 모델 자체를 재훈련하지 않고도 성능 향상 폭이 크고 오픈소스로 제공되어 효율적인 연구입니다. 향후에는 긴 오디오를 처리하면서도 단어 수준 시간 정보를 end-to-end로 예측할 수 있는 단일 학습 기반 ASR 시스템 개발이 기대됩니다.
논문 출처 : https://arxiv.org/abs/2303.00747
WhisperX: Time-Accurate Speech Transcription of Long-Form Audio
Large-scale, weakly-supervised speech recognition models, such as Whisper, have demonstrated impressive results on speech recognition across domains and languages. However, their application to long audio transcription via buffered or sliding window approa
arxiv.org