Hugging Face Transformers를 사용하여 영어 ASR을 위한 Wav2Vec2 미세 조정하기
개요
Hugging Face는 Wav2Vec2 모델이 매우 적은 양의 레이블이 지정된 데이터를 사용하여 경쟁력 있는 결과를 얻을 수 있도록 영어 자동 음성 인식(ASR)을 위해 미세 조정될 수 있음을 입증했습니다. 사전 학습된 체크포인트를 활용하고 Connectionist Temporal Classification (CTC)를 사용하여 미세 조정함으로써, 개발자는 별도의 언어 모델이 즉시 필요하지 않은 엔드 투 엔드 ASR 시스템을 구축할 수 있습니다.
Wav2Vec2 아키텍처 및 사전 학습
Wav2Vec2는 원시 오디오에서 음성 표현을 학습하도록 설계된 ASR용 사전 학습 모델입니다. 이 모델은 2020년 9월 Alexei Baevski, Michael Auli, Alex Conneau에 의해 출시되었습니다.
대조 학습 사전 학습 (Contrastive Pretraining)
Wav2Vec2는 레이블이 없는 음성(50,000시간 이상)으로부터 학습하기 위해 대조 학습 사전 학습 목적 함수를 사용합니다. BERT의 마스크드 언어 모델링(masked language modeling)과 유사하게, 모델은 트랜스포머 네트워크에 전달하기 전에 특징 벡터를 무작위로 마스킹하여 문맥화된 음성 표현을 학습합니다.
데이터 효율성
사전 학습을 통해 모델은 최소한의 레이블 데이터로 높은 성능에 도달할 수 있습니다. 예를 들어, 10분 정도의 적은 레이블 데이터만 사용해도 Wav2Vec2는 LibriSpeech의 깨끗한 테스트 세트에서 5% 미만의 단어 오류율(WER)을 달성할 수 있습니다.
영어 ASR을 위한 미세 조정 프로세스
Wav2Vec2 미세 조정은 트랜스포머 블록 위에 추가된 선형 레이어를 사용하여 사전 학습된 문맥 표현을 특정 전사 어휘에 매핑하는 과정을 포함합니다.
토큰화 및 어휘집
최종 선형 레이어의 출력 크기는 사전 학습 작업이 아닌 레이블이 지정된 데이터셋에 따라 달라지므로, 사용자 정의 어휘집을 생성해야 합니다. Timit 데이터셋의 경우 다음 과정이 포함됩니다:
- 텍스트를 소문자로 정규화.
- 별도의 음성 단위에 해당하지 않는 특수 문자(예:
,.?!;:) 제거. - 훈련 및 테스트 세트에서 모든 고유 문자를 추출.
- 단어 구분자 토큰(
|), 알 수 없는 토큰([UNK]), 그리고 CTC "blank token" 역할을 하는 패딩 토큰([PAD]) 추가.
특징 추출 (Feature Extraction)
음성 신호는 샘플링을 통해 이산화되어야 합니다. Wav2Vec2는 LibriSpeech 및 LibriVox의 샘플링 속도와 일치하는 16kHz로 샘플링된 입력을 기대합니다. Wav2Vec2FeatureExtractor는 원시 음성 신호를 처리하여 zero-mean-unit-variance 정규화가 이루어지도록 합니다.
데이터 준비
Wav2Vec2Processor를 사용하여 오디오 파일을 로드하고 16kHz로 재샘플링합니다. 이 프로세서는 오디오 입력에 대한 특징 추출과 대상 텍스트 레이블에 대한 토큰화를 모두 처리합니다.
Connectionist Temporal Classification (CTC)를 이용한 학습
Wav2Vec2는 입력 길이(오디오 프레임)가 출력 길이(텍스트 문자)보다 훨씬 큰 시퀀스-투-시퀀스 문제에 설계된 알고리즘인 CTC를 사용하여 미세 조정됩니다.
학습 설정
학습을 최적화하기 위해 다음과 같은 기술적 설정이 사용됩니다:
- Data Collator:
input_values와labels는 서로 다른 모달리티에 속하므로, 이를 각각 동적으로 패딩하기 위해 특화된DataCollatorCTCWithPadding이 사용됩니다. - Frozen Feature Extractor: CNN 레이어는 사전 학습 중에 충분히 학습되었으므로 특징 추출을 위해 고정됩니다(
model.freeze_feature_extractor()). - Gradient Checkpointing: GPU 메모리를 절약하기 위해 활성화됩니다.
- Group by Length: 패딩 토큰의 수를 줄이고 효율성을 높이기 위해 길이가 유사한 학습 샘플들이 함께 그룹화됩니다.
평가 지표
주요 지표로 단어 오류율(WER)이 사용됩니다. 모델은 각 타임스텝에 대해 로짓(logit) 벡터를 예측하며, argmax를 사용하여 가장 가능성 있는 문자를 결정합니다. CTC 디코딩에서 연속된 동일 토큰은 그룹화되며, 단어 내의 동일한 문자를 구분하기 위해 blank 토큰이 사용됩니다.
결과 및 시사점
Timit 데이터셋(5시간의 학습 데이터)에서 "base" Wav2Vec2 모델을 미세 조정하는 데모에서, 모델은 22.1%의 테스트 WER을 달성했습니다.
오류 분석
예측 결과는 종종 대상 텍스트와 음향적 유사성을 보이지만 철자 또는 문법 오류를 포함합니다. 이는 출력을 유효한 언어 패턴으로 제한하는 언어 모델 없이 독립적인 음향 모델만 사용할 때 예상되는 결과입니다.
CTC 성능
모델은 말하기 속도에 대한 불변성(invariance)을 보여줍니다. CTC는 모델이 여러 프레임에 걸쳐 동일한 토큰을 반복하거나 blank 토큰을 삽입할 수 있도록 허용하므로, 오디오 신호의 길이에 관계없이 전사가 일관되게 유지됩니다.