음성 인식(STT) 기술 소개
이 페이지는 뇌체크의 음성 인식 기능을 이해하기 위한 배경 기술을 소개합니다. OpenAI의 Whisper 모델을 중심으로 최신 음성 인식 기술의 구조와 특징을 설명하며, 뇌체크가 Whisper를 그대로 사용한다는 의미는 아닙니다.
음성 인식이란?
음성 인식(Speech-to-Text, STT)은 사람의 음성을 텍스트로 변환하는 기술입니다.
언어 학습에서 음성 인식은 핵심적인 역할을 합니다. 학습자가 직접 말한 내용을 텍스트로 변환하면, 말한 내용이 목표 문장과 얼마나 일치하는지를 확인할 수 있습니다. 정확한 음성 인식이 뒷받침되어야 의미 있는 학습 피드백이 가능합니다.
STT와 발화 평가는 다릅니다
음성 인식(STT)은 "무엇을 말했는가"를 텍스트로 변환하는 기술입니다. 반면, 발화(발음) 평가는 "얼마나 잘 말했는가"를 측정하는 것으로, 억양·강세·연음·발화 속도 등 소리 자체의 품질을 다룹니다.
STT 결과를 정답과 비교하면 "말한 내용의 일치도"는 확인할 수 있지만, 이것만으로 발음 품질을 완전히 평가하기는 어렵습니다. 발음 품질 평가에는 음소 단위 정렬, 발화 속도/강세 분석 등 STT 외의 추가 신호가 필요할 수 있습니다.
또한 발화 평가 결과는 마이크 품질, 주변 소음, 말하기 속도에 영향을 받습니다. 따라서 결과는 학습 피드백을 위한 참고 정보이며, 절대적인 발음 점수로 해석하기는 어렵습니다.
Whisper: 대규모 약지도 학습 기반 음성 인식
OpenAI가 개발한 Whisper는 인터넷에서 수집한 68만 시간 분량의 다국어 오디오-텍스트 쌍으로 훈련된 범용 음성 인식 모델입니다. 코드와 모델 가중치가 MIT 라이선스로 공개된 오픈소스 프로젝트입니다.
대규모 약지도 학습 (Large-Scale Weak Supervision)
기존 음성 인식 모델은 사람이 직접 정밀하게 레이블링한 데이터로 훈련하는 것이 일반적이었습니다. Whisper는 다른 접근을 택합니다. 인터넷에서 수집한 방대한 양의 오디오와 그에 대응하는 텍스트(자막, 전사 등)를 활용하여 훈련합니다. 개별 데이터의 품질은 완벽하지 않지만, 규모와 다양성으로 이를 보완합니다. 다양한 녹음 환경(마이크, 소음, 억양)이 섞인 데이터를 대량으로 학습하기 때문에, 실제 사용 환경에서의 강건성이 좋아지는 경향이 있습니다.
다중 작업(Multitask) 모델
Whisper는 단일 모델로 여러 음성 처리 작업을 수행합니다:
- 음성 인식 (Speech Recognition): 음성을 해당 언어의 텍스트로 변환
- 음성 번역 (Speech Translation): 음성을 영어 텍스트로 번역
- 언어 식별 (Language Identification): 어떤 언어가 사용되었는지 감지
- 음성 구간 추정 (Voice Activity Detection): 무음/잡음 구간을 구분하여 전사 품질을 보조
이 모든 작업은 Transformer(문맥을 잘 파악하는 신경망) 기반의 시퀀스-투-시퀀스(입력 시퀀스를 출력 시퀀스로 변환하는) 모델 하나로 처리됩니다. 특수 토큰(작업 지시용 기호)을 사용해 어떤 작업을 수행할지 지정하므로, 전통적인 음성 처리 파이프라인의 여러 단계를 단일 모델로 대체합니다.
제로샷 전이 (Zero-Shot Transfer)
Whisper의 가장 주목할 만한 특성은, 특정 데이터셋에 맞춰 미세 조정(fine-tuning)하지 않고도 다양한 벤치마크에서 높은 성능을 보인다는 점입니다. 논문에서는 이를 "제로샷 전이"라고 부릅니다. 여러 공개 벤치마크에서 추가 미세 조정 없이도 기존 완전 지도 학습 방식과 경쟁력 있는 오류율(WER/CER)을 보고했습니다. 다만 언어, 소음 환경, 발화 스타일에 따라 성능 편차가 클 수 있습니다.
모델 크기와 성능
Whisper는 용도와 환경에 맞게 선택할 수 있는 여러 크기의 모델을 제공합니다.
| 모델 | 파라미터 수 | 다국어 지원 | 필요 VRAM | 상대 속도 |
|---|---|---|---|---|
| tiny | 3,900만 | O | ~1 GB | ~10x |
| base | 7,400만 | O | ~1 GB | ~7x |
| small | 2억 4,400만 | O | ~2 GB | ~4x |
| medium | 7억 6,900만 | O | ~5 GB | ~2x |
| large | 15억 5,000만 | O | ~10 GB | 1x |
| turbo | 8억 900만 | O | ~6 GB | ~8x |
수치는 OpenAI Whisper GitHub README의 모델 표(A100 GPU에서 영어 전사 기준의 상대 속도, 대략적 VRAM)를 요약한 것입니다. 언어, 발화 속도, 하드웨어에 따라 실제 속도는 달라질 수 있습니다.
turbo 모델은 large-v3를 최적화한 버전으로, 전사(transcription) 정확도를 거의 유지하면서 속도를 크게 개선했습니다. 단, turbo는 전사에 초점이 맞춰져 있어 번역(비영어 음성 → 영어 텍스트)에는 적합하지 않습니다. 번역이 필요하면 tiny, base, small, medium, large 같은 다국어 모델을 사용합니다.
영어 전용 모델
tiny, base, small, medium 크기에는 영어 전용(.en) 모델이 별도로 제공됩니다. 영어만 처리하는 경우 다국어 모델보다 더 나은 성능을 보이며, 특히 작은 모델(tiny.en, base.en)에서 차이가 두드러집니다. 모델 크기가 커질수록 다국어 모델과의 성능 차이는 줄어듭니다.
기술 구조
Whisper는 Transformer 기반의 인코더-디코더(encoder-decoder) 구조를 사용합니다.
- 오디오 전처리: 입력 오디오를 로그 멜 스펙트로그램(log-Mel spectrogram)으로 변환합니다. 이는 소리를 주파수와 시간 축으로 나타낸 표현입니다.
- 인코더: 스펙트로그램을 읽고, 음성의 특징을 압축된 표현으로 변환합니다.
- 디코더: 인코더의 출력을 바탕으로, 토큰(문장을 쪼갠 단위) 단위로 텍스트를 순차 생성합니다. 특수 토큰으로 작업 유형(인식, 번역 등)과 언어를 지정합니다.
모델이 한 번에 처리할 수 있는 입력 길이에 제한이 있어, 긴 음성은 30초 단위로 나눠 순차 처리합니다.
뇌체크에서의 적용
뇌체크의 발화 기능은 음성 인식 기술을 바탕으로 구성됩니다.
- 발화 인식: 학습자가 말한 영어를 텍스트로 변환합니다
- 내용 일치 확인: 인식된 텍스트가 목표 문장과 얼마나 일치하는지(누락, 추가, 치환)를 분석합니다
- 학습 피드백: 인식 결과를 참고하여 학습자에게 피드백을 제공합니다. 환경에 따라 정확도와 반응 속도는 달라질 수 있습니다.
관련 논문: Robust Speech Recognition via Large-Scale Weak Supervision — Alec Radford, Jong Wook Kim, Tao Xu, Greg Brockman, Christine McLeavey, Ilya Sutskever (2022)