수달이네 기술 블로그

1. Whisper Fine-Tuning에 대해 본문

프로젝트

1. Whisper Fine-Tuning에 대해

슬픈 수달이 2026. 4. 1. 21:23

Whisper를 소개합니다 | OpenAI

이번에 캡스톤 프로젝트로 음성만을 활용한 AI방송 진행자를 제작하려 한다. 이 과정에서 ASR에 사용하는 중요한 API인 whisper를 어떻게 fine-tuning하고, 어떻게 성능을 향상시킬지에 대한 조사이다.

Whisper Fine-Tuning

Whisper란?

OpenAI에서 지원하는 웹에서 여러 언어, 다중 작업에 거쳐 수집한 68만 시간 분량의 지도 데이터로 훈련된 자동 음성 인식(ASR)시스템

  • 이런 방대하고 다양한 데이터셋을 활용해 억양, 배경소음, 기술적 언어에 대한 정확성을 향상시킴.

  • 단순한 엔드투엔드 접근방식, 인코더-디코더 트랜스포머 구조
  • 입력: 입력 오디오가 30초 길이의 청크로 나누어 지고, 로그-멜 스펙토그램으로 변환된 후 인코더로 넘어감
  • 디코더: 일치하는 텍스트 캡션을 예측(NLP)하도록 훈련됨.
  • 언어 식별, 구문 수준 타임스탬프, 다중 언어 음성 받아쓰기, 타 언어-영어 음성 번역 등의 작업 수행

기존 방식A: 깨끗한 스튜디오 환경에서 녹음된 음성 + 완벽하게 받아쓴 고품질의 데이터(LibriSpeech등)사용

  • 양은 적지만 데이터의 질이 좋음
  • 실제 상황처럼 소음이 심하거나 마이크 성능이 안좋으면 인식률 저하

기존 방식 B: 비지도형인 소리데이터를 그냥 많이 보여주는 방식(Wav2Vec등)

  • 소리의 특징을 파악하는 능력 탁월
  • 소리 자체는 잘 이해하나 실제 문장으로 바꾸려면 추가 학습이 필요함. → 오버피팅 위험

Whisper: 지저분해도 많은 데이터(웹에서 수집)를 선택

  • 약 지도 학습: 완벽하지 않은 자막 등의 날것의 데이터를 활용
  • 대규모 데이터: 68만 시간의 데이터 활용
  • 특정 데이터에 오버피팅 되어있지 않음.
  • 파인튜닝을 거치지 않아 LibriSpeech 성능 자체엔 못미달함
    • 그러나 제로샷 성능을 측정하면 기존 모델보다 오류발생이 적고, 정확함.

원래 언어를 받아쓰고, 영어로 번역하는 작업으로 음성-텍스트 변환을 학습하는데 효과적이었음

Fine-Tuning을 해야하는 이유

일단 Faster-whisper의 경우엔 Fine-tuning이 불가하므로 Whisper모델을 사용할 것.

  • 따라서 메모리를 줄여야하므로 4비트 양자화등의 메모리 감소 기법을 사용
  • 또한 whisper모델의 크기를 large이상으로 지정 → large이하는 영어만 지원함.

언어

OpenAI Whisper 모델 파인튜닝 완벽 가이드: 한국어 음성인식 정확도 높이기 – TildAlice

기본적으로 한국어를 지원하지만, 기본 영어이므로 파인튜닝 해주어 문자 오류율을 줄일 수 있다.

  • 추가로 방언이나 억양 차이가 있으면 문자 오류율(CER)이 높음
    데이터셋 베이스 Whisper CER 파인튜닝 후 CER 개선율
    일반 한국어 8.2% 6.1% 25.6%
    사투리(경상도) 22.4% 11.8% 47.3%
  • 멘토링 프로그램 특성상 표준어가 많겠지만 일부 사용자가 있을 가능성이 존재

도메인 특화

영역별 음성 인식을 위한 Whisper Large-v3 미세 조정 | 수샨트 트와야나 작성 | 매체

일부 전문 지식, 단어의 경우 이해를 못하는 등의 오류가 존재할 수 있다.

  • 예를 들어 위 링크의 예시에선 핀테크에 관련된 도메인별 용어 오류를 해결시켰다.

소음

기본적으로 소음에 강건한 모델이지만, fine-tuning을 통해 더욱 강건하게 만들 수 있다.

데이터셋(자동차 내 멘토링 관련)

위에서 찾은 데이터셋등을 참고하여 모델 Fine-tuning을 진행

한국어 + 억양 Fine-tuning

  • KsponSpeech: AI Hub 한국어 대화 음성 (969시간)
  • Zeroth-Korean: 51.6시간 읽기 음성
  • AIHub 방송 콘텐츠: 뉴스, 드라마 (1000시간+)
  • 자체 수집 데이터: 최소 5~10시간 권장

도메인 특화 지식 + 자동차 소음

  • 멘토링 관련 지식의 경우 다양하고, 도메인을 특정 짓기 힘들다는 단점이 존재.
    • 관련 서비스 운영하며 데이터셋 수집 + 증강 + Fine-tuning이 중요해보임.
  • 혹은 전문용어 리스트를 확보한 후, TTS를 이용하여 파인튜닝하는 방식인 Synthetic Data활용도 고려해보기

모델 최적화

위와 같이 Fine-tuning로 학습된 가중치를 CTranslate2포멧으로 변환하는 방식도 고려 가능

Large모델을 파인튜닝하므로 LoRA활용 고려

8-bit/4-bit 양자화 학습 방식 고려(QLoRA)

평가 지표

CER(Character Error Rate, 음절 오류율)을 지표로 활용

  • WER은 단어단위이지만, 한국어에 어울리지 않는 평가지표

RTF(Real Time Factor)

  • 파인튜닝 이후 인식 속도를 확인(너무 무거우면 처리 시간이 길어질 가능성 존재)

구조

  1. Feature Extractor(오디오 분할): 엽력 오디오를 30초 단위 or 더 짧게 잘라준 후 학습 가능한 로그 멜 스펙토그램으로 변환한다
  2. Encoder층(LoRA) + Frozen(메인 가중치 고정)
  3. Decoder층(LoRA) + Frozen
  4. Language Token: 학습 시 토큰을 한국어, Transcription모드로 고정