HuBERT 사전학습 모델 — base·large·extra-large
HuBERT 사전학습 모델
HuBERT는 16kHz로 샘플링된 음성 오디오로 사전학습한 모델이에요. 그래서 모델을 쓸 때도 입력이 반드시 16kHz 샘플이어야 해요. 사전학습은 순수 오디오만으로 이뤄지기 때문에 기본 모델에는 토크나이저가 없어요. 음성 인식을 하려면 토크나이저를 만들고 레이블된 텍스트로 파인튜닝해야 해요.
접근 방식의 핵심
HuBERT는 Hidden-Unit BERT로, 오프라인 클러스터링 단계를 통해 BERT 식 예측 손실용 정렬 타깃 레이블을 만들어요. 핵심은 마스킹된 영역에만 예측 손실을 적용해 연속 입력 위에서 결합된 음향·언어 모델을 강제로 학습시키는 것이에요. 클러스터 레이블의 본질적 품질보다, 비지도 클러스터링 단계의 일관성에 의존한다는 점이 특징이에요.
시작은 100개 클러스터의 단순한 k-means 교사(teacher)로 출발해서, 두 번의 클러스터링 반복을 거치면 10min·1h·10h·100h·960h 파인튜닝 서브셋에서 Librispeech(960h)와 Libri-light(60,000h) 벤치마크의 wav2vec 2.0 최신 성능과 동급 이상을 보여줘요. 1B 파라미터 모델로는 더 까다로운 dev-other, test-other 서브셋에서 상대 WER을 최대 19%, 13% 줄였어요.
모델 사용
파인튜닝 방법은 wav2vec 2.0 영어 파인튜닝 블로그에서 자세히 볼 수 있어요. 다만 클래스 이름에서 Wav2Vec2ForCTC를 HubertForCTC로 바꿔야 해요.
from transformers import AutoProcessor, HubertForCTC
processor = AutoProcessor.from_pretrained("facebook/hubert-base-ls960")
model = HubertForCTC.from_pretrained("facebook/hubert-base-ls960")