
Whisper는 언어를 어떻게 감지할까: OpenAI Whisper 언어 식별 내부 구조
Eric King
Author
소개
자동 언어 감지는 현대 음성-텍스트 변환 시스템의 핵심 기능입니다. 전사가 시작되기 전에 시스템은 오디오에서 어떤 언어가 말해지고 있는지를 먼저 판단해야 합니다.
OpenAI의 Whisper 모델은 사용자가 언어를 미리 지정하지 않아도 기본적으로 언어 감지를 수행합니다. 이를 통해 다국어 및 글로벌 애플리케이션에서 설정 없이 전사를 시작할 수 있습니다.
이 글에서는 Whisper가 언어를 감지하는 방법을 기술적으로 완전하게 설명하고, 내부 동작 메커니즘, 강점과 한계, 그리고 프로덕션 환경에서 Whisper를 배포하는 개발자를 위한 실무 가이드를 제공합니다.
음성-텍스트 변환에서 언어 감지란?
언어 감지(또는 음성 언어 식별)는 작성된 텍스트가 아니라 오디오 신호만으로 언어를 판별하는 작업입니다.
음성-텍스트 변환 파이프라인에서 언어 감지는 일반적으로 다음과 같습니다.
- 전처리 단계
- 오디오 입력마다 한 번 수행
- 음향 처리 및 디코딩 동작을 안내하는 데 사용
별도의 언어 식별 모델을 사용하는 전통적인 시스템과 달리, Whisper는 언어 감지를 전사 모델에 직접 통합합니다.
고수준 감지 파이프라인
큰 흐름에서 Whisper의 언어 감지 과정은 다음 단계를 따릅니다.
- 원시 오디오를 log-Mel 스펙트로그램으로 변환
- 인코더가 고수준 음향 특징을 추출
- 디코더가 언어 제어 토큰을 예측
- 가장 확률이 높은 언어 토큰을 선택
- 감지된 언어를 기준으로 전사를 진행
핵심은 언어가 감지되기 전에는 텍스트가 생성되지 않는다는 점입니다.
Whisper 모델 아키텍처 개요
Whisper는 다국어 오디오로 종단 간 학습된 Transformer 기반 인코더-디코더 아키텍처를 사용합니다.
인코더
- 입력: 80채널 log-Mel 스펙트로그램
- 역할: 언어에 종속되지 않는 음향 표현 추출
- 모든 언어에서 공유됨
인코더가 직접 언어 감지를 수행하는 것은 아닙니다.
디코더
- 자기회귀 Transformer 디코더
- 토큰을 순차적으로 예측
- 담당 기능:
- 언어 감지
- 전사
- 번역
- 타임스탬프 예측
언어 감지는 디코더 내부의 특수 토큰을 통해 이루어집니다.
언어 토큰: 핵심 메커니즘
Whisper는 언어를 어휘 집합 내 특수 토큰으로 표현합니다.
예시는 다음과 같습니다.
<|en|> English
<|zh|> Chinese
<|ja|> Japanese
<|fr|> French
<|de|> German
<|es|> Spanish
추론 단계에서 Whisper는 모든 언어 토큰에 대한 확률 분포를 예측합니다. 가장 확률이 높은 언어가 선택됩니다.
이 방식은 언어 감지를 디코딩에 완전히 통합된 토큰 분류 문제로 바꿉니다.
감지는 언제, 어떻게 일어나는가
언어 감지는 디코딩이 시작되는 바로 초기에 발생합니다.
개념적으로 Whisper는 다음 연산을 수행합니다.
language_probs = model.detect_language(mel)
detected_language = argmax(language_probs)
감지된 언어 토큰은 이후 디코딩 컨텍스트 앞에 붙습니다. 예:
<|startoftranscript|><|en|><|transcribe|>
이 시점부터 이후의 모든 전사 토큰은 오디오가 영어라는 가정 아래 생성됩니다.
언어 확률 점수
Whisper는 지원되는 각 언어에 대한 확률 점수를 반환할 수 있습니다.
출력 예시는 다음과 같습니다.
{
"en": 0.91,
"de": 0.04,
"fr": 0.03,
"es": 0.01,
"ja": 0.01
}
중요한 세부 사항:
- 확률은 softmax를 통해 생성됨
- 모든 언어 확률의 합은 1
- 상위 확률 간 격차가 클수록 신뢰도가 높음
신뢰도가 낮은 경우는 보통 다음과 같습니다.
- 매우 짧은 오디오
- 강한 배경 소음
- 강한 억양
- 코드 스위칭
Whisper의 언어 감지가 잘 동작하는 이유
Whisper는 다양한 언어에 걸친 실제 오디오 수십만 시간 분량으로 학습되었습니다.
성능을 뒷받침하는 핵심 요인:
- 공유된 다국어 음향 공간
- 다양한 억양과 녹음 환경에 대한 노출
- 전사 및 번역 작업의 공동 학습
- 대규모 Transformer 용량
이를 통해 Whisper는 언어 정체성과 강하게 연관된 음소적/운율적 단서를 학습할 수 있습니다.
언어 감지 vs 번역
언어 감지와 번역은 관련되어 있지만 서로 다른 작업입니다.
- 언어 감지는
<|language|>토큰을 선택 - 전사는
<|transcribe|>토큰을 사용 - 번역은
<|translate|>토큰을 사용
음성을 영어로 번역하는 경우에도 Whisper는 먼저 원본 언어를 감지한 뒤 번역을 수행합니다.
일반적인 실패 사례와 한계
Whisper는 견고하지만 알려진 엣지 케이스가 존재합니다.
1. 매우 짧은 오디오
2~3초보다 짧은 오디오는 신뢰할 수 있는 감지에 필요한 음소 정보를 충분히 담지 못할 수 있습니다.
2. 코드 스위칭
하나의 구간에 여러 언어가 섞이면 Whisper는 보통 지배적인 언어를 선택합니다.
3. 유사한 언어
서로 가까운 언어(예: 스페인어 vs 포르투갈어)는 가끔 혼동될 수 있습니다.
4. 비음성 오디오
음악, 노래, 또는 배경 소음은 감지 정확도를 떨어뜨릴 수 있습니다.
언어를 알고 있을 때는 재정의하기
애플리케이션 컨텍스트가 고정되어 있다면(예: 일본어 회의, 영어 팟캐스트):
- 언어를 명시적으로 설정
- 자동 감지를 완전히 건너뛰기
이렇게 하면 속도와 정확도가 향상됩니다.
신뢰도 임계값 사용
프로덕션 시스템에서는:
- 최대 언어 확률이 0.6 미만이면 저신뢰 감지로 표시
- 사용자 확인을 요청하거나 더 긴 오디오로 재시도
성능 고려사항
언어 감지는 전체 전사 대비 가벼운 연산입니다.
- 입력마다 한 번만 수행
- 지연 시간이 거의 추가되지 않음
- 전체 처리량에 미치는 영향이 미미함
실시간 시스템에서도 언어 감지는 일반적으로 몇 밀리초만 추가됩니다.
실제 활용 사례
Whisper의 자동 언어 감지는 다음을 가능하게 합니다.
- 설정 없는 전사 워크플로
- 다국어 회의 전사
- 팟캐스트 및 인터뷰 전사
- 크리에이터 도구 및 콘텐츠 플랫폼
SayToWords 같은 음성-텍스트 변환 플랫폼에서는 이를 통해 사용자가 수동 설정 없이 어떤 언어의 오디오든 업로드할 수 있습니다.
결론
Whisper는 전사를 수행하는 동일한 Transformer 디코더를 사용해 오디오에서 특수 언어 토큰을 직접 예측함으로써 언어를 감지합니다. 이 통합 접근법은 배포를 단순화하면서도 강력한 다국어 성능을 제공합니다.
이 메커니즘을 이해하면 개발자는 더 신뢰할 수 있는 파이프라인을 설계하고, 엣지 케이스를 처리하며, 다국어 음성-텍스트 변환 시스템을 최적화할 수 있습니다.
