Hugging Face Transformers에서 n-gram을 사용한 Wav2Vec2 성능 향상

Hugging Face는 pyctcdecode 라이브러리를 🤗 Transformers 라이브러리에 통합하여, Wav2Vec2 음성 인식 모델을 n-gram 언어 모델(LM)과 결합할 수 있도록 했습니다. 이 통합은 특히 데이터가 제한적인 모델에서 철자 오류를 크게 줄이고 단어 오류율(WER)을 개선합니다.

n-gram LM을 통한 전사 정확도 향상

Wav2Vec2를 n-gram 언어 모델과 결합하면 단어의 발음은 맞지만 철자가 틀린 일반적인 음향 전용 전사 오류를 수정할 수 있습니다. Wav2Vec2는 트랜스포머 아키텍처와 Connectionist Temporal Classification (CTC) 미세 조정 덕분에 외부 LM 없이도 수용 가능한 전사를 생성할 수 있지만, LM은 모델이 존재하지 않는 단어를 예측하는 것을 방지하는 필수적인 언어적 문맥을 제공합니다.

facebook/wav2vec2-base-100h를 사용한 데모에서, 4-gram 언어 모델을 추가하면 "christmaus"를 "christmas"로, "simalyis"를 "similes"로 수정하는 등의 오류를 바로잡을 수 있었습니다. 그러나 잘못된 전사가 유효한 영어 단어인 경우(예: "roast" 대신 "rose"), n-gram 모델이 여전히 무시할 수 없는 확률을 할당할 수 있으므로 일부 오류가 지속될 수 있습니다.

LM-Boosted Decoding의 기술적 구현

언어 모델을 사용한 디코딩은 모델 출력을 처리하는 방식에서 표준 디코딩과 다릅니다. Wav2Vec2ProcessorWithLM은 로짓(logits)의 argmax를 사용하여 가장 가능성 높은 문자를 찾는 대신, 각 타임스텝에서 가능한 모든 출력 문자에 대한 전체 확률 분포(logits)를 활용합니다.

이 프로세스는 확률 행렬을 통해 빔 서치(beam search)를 적용하며, n-gram 언어 모델을 활용하여 언어적 패턴을 기반으로 다음 글자의 가능성을 가중치로 부여합니다. 이를 위해 효율적인 디코딩과 모델 저장을 위해 pyctcdecodekenlm 라이브러리가 필요합니다.

커스텀 n-gram 언어 모델 구축하기

특정 도메인이나 언어를 위한 n-gram LM을 만들려면 다음 워크플로우를 사용합니다.

1. 데이터 수집 및 전처리

효과적인 LM을 위해서는 음성 인식 시스템의 대상 전사와 일치하는 텍스트 데이터가 필요합니다. facebook/wav2vec2-xls-r-300m을 기반으로 한 스웨덴어 모델의 경우, 깨끗하고 낭독되는 특성을 가진 europarl_bilingual 데이터셋이 구어체 오디오와 잘 부합하여 사용되었습니다. 전처리는 다음을 포함합니다:

  • 대상 언어의 텍스트 추출.
  • 텍스트를 소문자로 변환.
  • 미세 조정된 음향 모델의 알파벳과 일치하도록 특정 문자(예: 문장 부호)를 제거.

2. KenLM을 사용한 모델 구축

KenLM은 트랜스포머 기반 LM에 비해 계산 비용이 낮기 때문에 n-gram 모델을 구축하는 데 사용됩니다. 트랜스포머 LM은 더 나은 결과를 낼 수 있지만, n-gram은 LM이 없는 경우보다 성능을 크게 향상시키며 훨씬 빠른 검색 시간(본질적으로 룩업 테이블 쿼리)을 제공합니다.

KenLM 파이프라인의 주요 단계는 다음과 같습니다:

  • lmplz 명령어를 사용하여 n-gram(예: 5-gram) 구축.
  • 🤗 Transformers와의 호환성을 보장하기 위해 .arpa 파일에 문장 종료(</s>) 토큰을 수동으로 추가.
  • 파일 크기를 줄이고 로딩 속도를 높이기 위해 build_binary를 사용하여 .arpa 파일을 바이너리 .bin 형식으로 변환.

통합 및 성능 향상

n-gram 모델을 통합하기 위해, 음향 모델의 특징 추출기(feature extractor), 토크나이저(tokenizer), 그리고 KenLM 바이너리 모델로 초기화된 pyctcdecode 빔 서치 디코더를 결합하여 Wav2Vec2ProcessorWithLM 객체를 생성합니다.

성능 영향

공식 Wav2Vec2 논문에 따르면, n-gram LM은 단어 오류율(WER)을 특히 매우 작은 데이터셋(예: 10분 분량의 오디오)으로 학습된 모델에서 상당한 감소를 제공합니다. n-gram은 LM이 없는 없는 경우 WER을 약 80%까지 줄일 수 있습니다. 스웨덴어 xls-r-300m-sv 예시에서, 5-gram LM-boosted 디코더는 Common Voice 7 테스트 세트에서 18.85%의 WER을 달성성하였으며, 이는 약 30%의 상대적 성능 향상을 나타냅니다.

Sources

관련