음성인식 모델이 사진 몇 장 크기라고요?
Cactus Compute에서 Whistle이라는 음성-텍스트 변환 모델을 공개했어요. STT(Speech to Text), 그러니까 말소리를 글자로 바꿔 주는 모델이에요. 가장 눈에 띄는 숫자는 16.9MB라는 크기인데요. 요즘 스마트폰으로 찍은 고화질 사진 몇 장, 아니면 가벼운 앱 업데이트 한 번 정도의 용량이에요. Cactus는 스마트폰이나 노트북 안에서 AI 모델을 직접 돌리는 온디바이스 AI에 집중해 온 팀이라서, 이번 발표도 그 흐름에서 나온 결과물로 보시면 돼요.
“그게 왜 대단해?” 싶으실 수 있는데요, 비교 대상을 보면 감이 와요. 음성인식에서 사실상 표준처럼 쓰이는 OpenAI의 Whisper는 가장 큰 large 모델이 파라미터가 약 15억 개라 용량이 수 GB나 돼요. 가장 작은 tiny 모델도 파라미터가 약 3,900만 개라서 일반적인 16비트 형식으로 저장하면 70MB가 조금 넘어요. 16.9MB는 그 tiny 모델보다도 한참 작은 크기예요.
왜 굳이 기기 안에서 돌려야 할까?
음성인식을 서버(클라우드)에서 처리하면 편하긴 해요. 큰 모델을 마음껏 쓸 수 있으니까요. 그런데 문제가 세 가지 따라와요.
첫째는 지연 시간이에요. 말한 내용을 서버로 보내고 결과를 받아오는 데 왕복 시간이 생기거든요. 실시간 자막이나 음성 명령처럼 바로 반응해야 하는 기능에서는 이게 꽤 거슬려요. 둘째는 비용인데요, 사용자가 늘면 음성 처리 API 요금도 같이 늘어나요. 셋째는 프라이버시예요. 회의 녹음이나 병원 상담처럼 민감한 음성을 외부 서버로 보내는 것 자체가 부담인 경우가 많죠.
온디바이스로 돌리면 이 세 가지가 한 번에 해결돼요. 네트워크가 없어도 동작하고, 데이터가 기기 밖으로 나가지 않으니까요. 대신 모델이 작아야 한다는 숙제가 생겨요. 앱 용량, 메모리, 배터리를 다 신경 써야 하거든요.
모델을 이렇게 작게 만드는 방법
Whistle의 구체적인 구조는 원문에서 꼭 확인해 보시길 권해요. 일반적으로 모델을 작게 만들 때는 이런 방법들을 많이 써요.
- 양자화(Quantization): 이게 뭐냐면, 숫자를 저장하는 정밀도를 낮추는 거예요. 32비트나 16비트로 저장하던 가중치를 8비트나 4비트로 줄이는 거죠. 사진의 색상 수를 줄여서 파일 크기를 줄이는 것과 비슷해요. 눈으로 보기엔 거의 똑같은데 용량은 확 줄어들어요.
- 지식 증류(Knowledge Distillation): 큰 모델을 '선생님'으로 두고, 작은 '학생' 모델이 선생님의 답을 따라 하도록 학습시키는 방법이에요. 처음부터 혼자 배우는 것보다 훨씬 효율적으로 실력을 끌어올릴 수 있어요.
- 구조 경량화: 레이어 수나 차원을 줄이고, 음성인식에 꼭 필요한 부분만 남기는 방법이에요.
- 정확도 지표: 영어는 주로 단어 오류율(WER)로 평가하는데, 한국어는 띄어쓰기 기준이 애매해서 글자 오류율(CER)로 보는 경우가 많아요.
- 실시간성: 음성 1초를 처리하는 데 몇 초가 걸리는지(RTF)를 보세요. 1보다 작아야 실시간 처리가 가능해요.
- 라이선스와 런타임: 상업적으로 써도 되는지, iOS나 안드로이드에 바로 붙일 수 있는지도 중요해요.
간단히 계산해 보면 16.9MB에는 8비트 기준으로 파라미터가 약 1,700만 개, 4비트라면 3,000만 개 남짓 들어갈 수 있어요. 이 정도 규모로 쓸 만한 인식 품질을 낸다면 최적화를 꽤 공격적으로 했다는 뜻이죠.
비슷한 시도들과 비교해 보면
경량 음성인식 분야는 이미 경쟁이 치열해요. whisper.cpp는 Whisper를 C/C++로 옮겨서 노트북이나 라즈베리파이에서도 돌아가게 만든 프로젝트이고, 양자화된 모델을 많이 써요. Useful Sensors의 Moonshine은 처음부터 엣지 기기를 겨냥해 설계된 모델이에요. Whisper는 오디오를 늘 30초 단위로 처리하는데, Moonshine은 짧은 음성은 짧게 처리해서 지연을 줄였어요. 오래된 강자로는 Kaldi 기반의 Vosk도 있고요. 애플과 구글은 아예 OS에 온디바이스 받아쓰기를 넣어 두었죠.
Whistle은 이 흐름에서 '크기'를 끝까지 줄여 본 시도라고 볼 수 있어요. 결국 관건은 이 크기에서 정확도와 속도를 얼마나 지켜냈느냐겠죠.
한국 개발자라면 이것부터 확인하세요
가장 먼저 볼 건 한국어 지원 여부예요. 모델이 작아질수록 여러 언어를 한꺼번에 잘하기 어려워서 영어 위주로 최적화되는 경우가 많거든요. 그다음으로는 이런 걸 확인해 보세요.
마무리
한 줄 정리: 음성인식이 '서버에서 돌리는 무거운 기능'에서 '앱에 그냥 넣는 가벼운 부품'으로 바뀌고 있어요.
여러분은 온디바이스 STT를 실제 서비스에 넣어 보신 적 있나요? 한국어 인식 품질이 어느 정도 나와야 클라우드 API를 버리고 넘어갈 수 있을지, 각자의 기준이 궁금해요.
🔗 출처: Hacker News