Technology
오늘은 Whisper 원본 모델을 한국어 음성 인식에도 최적 활용할 수 있도록 재학습하여 Post-Training Quantization(PTQ)를 수행하고, 더 풍부한 Pareto 분석 결과를 제공하여 고객사마다 다른 제약조건 및 요구사항에 맞게 입맛대로 골라서 사용하실 수 있도록 1.58비트의 QAT까지 수행한 결과를 공유드리고자 합니다!
Hanhim Chang
September 26, 2025
안녕하세요, 에너자이 장한힘입니다! 오늘도 역시 Whisper에 대한 이야기를 들고 에너자이 블로그에 돌아왔습니다. 또 Whisper냐 물으실 수 있겠지만, Whisper는 그만큼 음성 인식에 있어서 강력한 모델이기 때문에 이야기거리가 끊이지 않네요 🫠
이전 글에서는 Whisper를 극단적으로 경량화(1.58-bit)하고, Optimium으로 custom kernel을 구현한 내용에 대해 자세히 들여다봤었는데요. 이때 공유드린 Quantization-Aware Training 전/후의 음성 인식 정확도는 영어를 기준으로 했습니다.
이에 반해 오늘은 Whisper 원본 모델을 한국어 음성 인식에도 최적 활용할 수 있도록 재학습하여 Post-Training Quantization(PTQ)를 수행하고, 더 풍부한 Pareto 분석 결과를 제공하여 고객사마다 다른 제약조건 및 요구사항에 맞게 입맛대로 골라서 사용하실 수 있도록 1.58비트의 QAT까지 수행한 결과를 공유드리고자 합니다!
요약
Whisper 원본 모델은 학습에 활용된 전체 약 68만 시간 분량의 음성-텍스트 Pair 데이터 중 영어 기반 데이터의 비중이 약 83%로 순수 비영어 데이터에 비해 압도적으로 많습니다. 이에 한국어를 포함한 비영어 음성 인식은 영어만큼 우수한 정확도를 보이지 못합니다.
에너자이는 약 5만 시간, 약 3800만 쌍의 한국어 음성-텍스트 Pair를 활용하여 Small, Base, Tiny 등의 다양한 Whisper 모델을 재학습했고 그 결과 13MB의 모델 사이즈로 약 3GB에 달하는 Whisper Large(whisper-large-v3) 모델보다 한국어 음성 인식 정확도가 높은 모델을 도출했습니다. 모델 사이즈 기준으로 약 0.4% 정도 밖에 안 되는 크기의 모델로 더 좋은 인식률을 보인 것이죠 😎
13MB 크기의 모델부터 정확도와 사이즈 사이의 Trade-off 곡선을 따라서 쭈-욱 모델들을 나열해봤고, 이 중 저희가 재학습시킨 모델 중 가장 큰 484MB의 모델은 3GB의 Whisper Large 모델 대비 한국어 음성 인식 오류율(Character Error Rate, CER)이 절반 가량으로 줄어들었습니다.
이 과정에서 한국어 데이터셋을 추가 확보하여 재학습할 뿐 아니라, Tokenizer를 직접 만들어서 학습에 활용하는 등 정확도 향상을 위한 다양한 작업을 수행했습니다.
에너자이는 다양한 대형 모델의 전력소모 및 메모리와 성능 간 Pareto 최적을 분석하여 고객사께서 입맛에 딱 맞게 최적 활용하실 수 있도록 지원합니다. 이에 맞춤형 최적 모델이 필요하실 경우, 주저말고 저희에게 연락 부탁드립니다!
Whisper에 대하여
Whisper는 다국어 전사(Transcription, 음성 언어를 텍스트로 변환하는 작업) 및 번역(도착어는 영어만 지원)을 지원하는 음성 인식(ASR, Automatic Speech Recognition) 모델로, 2022년에 OpenAI가 오픈소스로 공개하였습니다. Whisper에 대한 자세한 내용은 지난 블로그 글에서 다룬 적이 있습니다 👇
Multilingual & Multitask 모델인 Whisper의 특별한 점은 하나의 모델이 복수의 언어 및 Task를 지원한다는 점에 있습니다. 하지만, 지원하는 모든 언어에 대해서 일관되게 압도적인 성능을 보이는 것은 아닌데요. Whisper 학습에 사용된 데이터의 구성을 들여다보면 그 이유에 대해 대략 파악해볼 수 있습니다.

Whisper는 총 68만 시간 분량의 음성-텍스트 Pair로 학습되었으며, 그 중 비영어 데이터(비영어 음성 및 그에 대응되는 비영어 텍스트)가 차지하는 비중은 겨우 17%(117,113시간)입니다. 비영어 데이터가 총 98개의 언어로 구성되어 있음을 고려하면 한국어 데이터는 전체 데이터셋의 극히 일부라고 볼 수 있겠습니다.
실제로 Whisper를 사용해보면 영어 대비 한국어에서 정확도가 급감하는 것을 확인할 수 있습니다. 저희 내부적으로도 Whisper-large-v3 모델에 대하여 테스트를 진행해보았는데요. 영어에 대해서는 CER 3.91% 수준으로 준수한 성능을 보인 반면(테스트 데이터셋: LibriSpeech Other), 동일한 모델을 한국어에 적용했을 때는 CER 11.13%로 정확도가 급격히 떨어지는 것(테스트 데이터셋: KsponSpeech Eval-Other)을 확인할 수 있었습니다.
EZWhisper KR: 정확하면서도 가벼운 한국어 음성 인식 모델
위에서 간략히 공유 드린 바와 같이, 저희는 원본 모델 대비 한국어 인식 성능이 뛰어나면서도, 온디바이스 환경에 적용될 수 있을 만큼 가볍고 빠른 한국어 Whisper를 구현하는데 성공했는데요. 지금부터는 그 과정에서 저희가 어떻게 한국어 인식 성능을 끌어올리고, 동시에 메모리 및 속도를 최적화할 수 있었는지에 대하여 소개드리려고 합니다.
Dataset
Whisper는 총 68만 시간 분량의 방대한 데이터로 학습되었지만, 그 중 학습에 활용된 한국어 데이터는 극히 일부라고 볼 수 있습니다. 따라서 Whisper의 부족한 한국어 인식 성능을 끌어올리기 위한 첫 번째 단계는 한국어 데이터셋을 활용한 추가 학습이었는데요.
총 5만 시간 분량의 한국어 오픈 데이터셋(음성-텍스트 Pair)으로 추가 학습을 진행하였고, 최대한 다양한 시나리오에서 좋은 성능을 보이는 모델을 구현하기 위해 일상 대화뿐만 아니라 방송∙의료∙고객 상담 등 다채로운 컨텐츠의 데이터를 활용하였습니다. 뿐만 아니라, 사투리가 포함된 발화도 정확하게 인식할 수 있도록 관련 데이터를 추가하여 Robustness를 더했습니다.
추가 학습 과정에서 중요하게 고려해야 했던 또 다른 Challenge는 한국어에 철자와 발음이 다르게 나타나는 경우가 많다는 점이었는데요. 일부 한국어 음성 인식 데이터셋에서는 철자 전사(Spelling Transcription)와 발음 전사(Phonetic Transcription)를 같이 제공합니다. 예를 들어 철자 전사로는 “3시에 TV를 봐야지”라는 문장이 발음 전사로는 “세 시에 티비를 봐야지”로 나오게 됩니다.
두 방식 중 어느 쪽을 선택해도 좋지만, 모든 데이터셋에서 일관되게 선택하지 않으면 모델 학습에 심한 악영향을 주게 되므로, 한국어 Normalizer를 이용하여 하나의 방식으로 통일하는 전처리 과정이 필수적이었는데요. 모델의 관점에서는 발음되는 방식 그대로 변환되는 발음 전사 방식이 이해하기 쉽지만, 활용도나 사용성 측면에서는 철자 전사 방식이 좋다고 판단하여 저희는 철자 전사 방식으로 전처리를 진행했습니다. 몇 가지 샘플들로 확인해보면 OpenAI의 Whisper 역시 철자 전사 방식으로 학습된 것을 확인할 수 있습니다.
Tokenizer
Tokenizer는 텍스트를 모델이 처리할 수 있는 Token으로 변환하거나, 출력된 Token을 텍스트로 변환하는 역할을 수행하는데요. Whisper 학습 단계에서는 전사된 정답 텍스트를 Token으로 변환하여 Decoder를 학습시키는 목적으로 활용됩니다.
기존의 Whisper 모델은 다양한 언어를 지원하는 Multilingual 모델이다보니 Tokenizer 또한 한국어에 특화된 형태는 아니었는데요. 저희는 한국어 대상 성능 저하의 주요 원인들 중 하나를 Tokenizer로 보고 한국어에 특화된 Tokenizer를 직접 제작하였고, 결과는 매우 성공적이었습니다. 실제로 동일한 한국어 테스트 데이터셋에 대하여 원본 모델과 추가 학습 후 Tokenizer까지 수정한 모델의 성능을 비교해본 결과, Whisper-small 모델의 CER 수치가 18.05%에서 6.45%로 무려 11% 이상 낮아진 것을 확인할 수 있었습니다.
Quantization
이전 게시물들에서 몇 차례 공유드렸듯이, 저희는 1.58-bit라는 매우 낮은 비트로 Whisper 모델을 양자화하여 온디바이스 환경에서 구동될 수 있는 효율적인 형태로 제공하고 있습니다. Group size는 양자화에서 모델의 성능 및 크기에 중요한 영향을 미치는 요인들 중 하나인데요. 이번 게시물에서 소개드리고 있는 한국어 Whisper 모델은 Group size와 Channel size를 동일하게 설정한 모델로, 이는 성능∙모델 크기∙메모리∙속도 등을 종합적으로 고려했을 때 Pareto 최적을 충족하는 모델을 구현하기 위해 꾸준한 실험을 진행하여 찾아낸 최적이 결과라고 보시면 되겠습니다.
아시다시피, 양자화는 실수로 된 모델의 weight 값들을 정수로 변환하는 과정입니다. 널리 분포되어 있는 실수 값들을 정수로 변환하기 위해서는 scale과 zero point가 필요합니다. Scale은 분포가 얼마나 퍼져있는지, zero point는 분포가 0을 기준으로 얼마나 치우쳐져 있는지를 의미하는데요. 하지만, 하나의 scale과 하나의 zero point만으로는 weight의 분포를 모두 대표하기 어려우며, 실제로 아래와 같은 3x3 크기의 weight를 하나의 scale과 zero point로 양자화하면 다시 복원했을 때 원본 weight와 큰 차이가 생기게 됩니다.

이러한 양자화 오류는 weight가 많아질수록 점점 더 커지게 되는데요. 이를 해결하기 위해 weight를 몇 개의 group으로 쪼개어 각각의 group에 대해 scale과 zero point를 할당하는 것이 일반적입니다. 따라서 각 group의 size가 작을수록(=group의 개수가 많을 수록) 양자화 오차는 점점 줄어들며, group size가 1인 경우에는 원래의 실수 weight와 동일해집니다. 아래의 예시처럼 동일한 3x3 크기의 weight를 3개의 group으로 나눠 scale과 zero point를 계산할 경우 다시 복원했을 때 원본 weight와의 오차가 많이 줄어듬을 확인할 수 있습니다.

그렇지만 group size를 작게하여 group의 개수를 늘리는 것에 좋은 점만 있는 것은 아닙니다. 양자화된 모델의 파라미터에는 float 값인 scale과 zero point들도 포함되기 때문에 group size가 작아질수록 해당 파라미터들의 개수가 늘어나므로 모델의 크기가 커지게 되며, 동시에 scale과 zero point를 각각 곱하고 더하는 연산도 group의 개수만큼 늘어나므로 속도에도 부정적인 영향을 주게 됩니다.
따라서, 적절한 크기의 group size를 찾아 정확도와 속도 및 메모리의 균형을 맞추는 것이 중요한데요. 저희는 꾸준한 실험을 통해 group size를 channel의 크기와 동일하게 설정하였을 때 성능 손실을 최소화하면서 우수한 메모리 효율성 및 속도를 달성할 수 있음을 확인하였습니다.
적용 샘플
위에서 설명 드린 방법들을 통해 기존 모델 대비 압도적으로 뛰어난 한국어 음성 인식 모델을 완성하였는데요. 해당 모델의 성능을 확인해보기 위해 몇 가지 음성 샘플들(출처: AI Hub)에 대하여 원본 Whisper-large-v3 모델(16-bit)과 에너자이의 EZWhisper-small 모델(1.58-bit)의 전사 결과를 비교해보았습니다. 에너자이의 EZWhisper 모델은 원본 모델 대비 40배 이상 작은 모델(70MB vs 3GB)임에도 불구하고, 명확하게 더 우수한 성능을 보이는 것을 확인할 수 있습니다.
Sample 1
정답: 일요일 날 알바를 간다고? 그래서 응
OpenAI Whipser-large-v3: 이러면 알바를 간다고? 그래서 응.
ENERZAi EZWhisper-small: 일요일 날 알바를 간다고? 그래서 응.
Sample 2
정답: 일요일 날 알바를 간다고? 그래서 응
OpenAI Whipser-large-v3: 이러면 알바를 간다고? 그래서 응.
ENERZAi EZWhisper-small: 일요일 날 알바를 간다고? 그래서 응.
Sample 3
정답: 일요일 날 알바를 간다고? 그래서 응
OpenAI Whipser-large-v3: 이러면 알바를 간다고? 그래서 응.
ENERZAi EZWhisper-small: 일요일 날 알바를 간다고? 그래서 응.
오늘은 기존 모델 대비 압도적으로 뛰어난 한국어 음성 인식 성능을 자랑하는 에너자이의 EZWhisper KR 모델에 대하여 공유드렸는데요. 에너자이는 해당 모델에 Natural Language Understanding(NLU) 모델을 연동하여 세탁기, 에어컨 등의 기기를 음성으로 제어하는 음성 제어 솔루션을 구현하고, 언어 모델과 Text-to-Speech(TTS) 모델을 이어 붙여 완전한 Voice Assistant 파이프라인을 구현하는 등 다양한 방향으로 연구 개발을 진행하고 있습니다.
위에서도 말씀드렸듯이, 에너자이는 Whisper를 포함한 다양한 대형 모델의 성능과 메모리∙전력∙속도 간 Pareto 최적을 분석하여 고객사의 Requirement에 딱 맞는 맞춤형 최적 솔루션을 제공할 수 있는 팀입니다.
앞으로 LLM, VLM을 포함한 다양한 모델들로 지원 범위를 확장하여 보다 다양한 영역에서 최소한의 메모리∙전력만으로도 최고의 성능을 낼 수 있는 온디바이스 AI 솔루션을 제공할 예정이니 많은 관심 부탁드립니다! 궁금하시거나 문의 주실 사항이 있다면 언제든 편하게 메일주시면 감사하겠습니다.
hanhim.chang@enerzai.com