지난 2편에서는 Whisper의 Encoder가 음성 데이터를 어떻게 '문맥 표현'으로 변환하는지 살펴보았습니다.
이제 아키텍처 분석 마지막 3편에서는 이 요약된 음성 정보를 바탕으로, Decoder가 어떻게 실제 텍스트를 생성하는지,
그리고 어떻게 번역이나 언어 감지 같은 복합적인 작업을 동시에 수행하는지 그 핵심 원리를 파악하려고 합니다.
Whisper 아키텍처
Whisper는 전형적인 Encoder-Decoder Transformer 구조를 갖습니다.
이전 편에서는 오디오 입력 -> Encoder를 거쳐 잠재 표현으로 변환되는 과정을 따라가며 모델의 전반부를 살펴보았고, 이제 시선을 반대로 옮겨서 Encoder가 만들어낸 표현이 Decoder를 통해 어떻게 텍스트로 생성되는지, 즉 Whisper의 출력 단계를 추적해보겠습니다.

1. 출력
Decoder는 어떻게 음성을 실제 텍스트로 만들어낼까?
실제 텍스트 생성은 Decoder 단계에서 이루어집니다.
그리고 Whisper의 Decoder는 단순히 텍스트만 생성하는 구조가 아니라
- 음성 인식 (Speech-to-Text)
- 번역 (Speech-to-Translation)
- 언어 감지
- Timestamp 생성
같은 여러 작업을 하나의 구조 안에서 동시에 처리하도록 설계되어 있습니다.
이번 글에서는 Whisper 아키텍처 분석의 마지막 단계로, Decoder 내부 구조부터 실제 텍스트가 생성되는 과정까지 출력 아키텍처 전체 흐름을 정리해보려고 합니다.
Decoder의 기본 구조
Whisper Decoder는 기본적으로 Transformer Decoder 구조를 그대로 따릅니다.
Decoder Input
↓
Masked Self Attention
↓
Cross Attention (Encoder Output)
↓
Feed Forward Network
↓
Linear Layer
↓
Softmax
↓
Next Token Prediction
이 구조는 일반적인 Transformer Decoder와 동일합니다. 하지만 중요한 차이는 텍스트를 생성하는 방식입니다.
Whisper의 텍스트 생성 방식
Whisper는 문장을 한 번에 생성하지 않습니다.
대신 Auto-Regressive 방식을 사용합니다.
즉 이전에 생성된 토큰을 기반으로 다음 토큰을 예측합니다.
예를 들어 다음과 같은 방식입니다.
<start>
↓
Hello
↓
Hello world
↓
Hello world today
Decoder는 매 순간 이전까지 생성된 토큰, Encoder가 만든 음성 표현을 동시에 참고해서 다음 토큰을 하나씩 생성합니다.
이 방식은 GPT 같은 생성형 모델에서도 사용되는 방식입니다.
Whisper가 여러 작업을 동시에 수행할 수 있는 이유
Whisper는 단순한 STT 모델이 아니라 음성 인식 (Speech-to-Text), 음성 번역 (Speech Translation), 언어 감지, *Timestamp 생성 같은 작업을 하나의 모델로 처리할 수 있는 모델입니다
* Timestamp(타임스탬프) : 타임스탬프는 음성이 언제 시작되고 언제 끝났는지를 나타내는 시간 정보입니다.
처음 보면 이 기능들이 각각 따로 존재하는 것처럼 보이는데, 실제 구조를 보면 그렇지 않습니다.
Whisper에서는 이런 작업들이 Decoder 입력에 포함되는 토큰을 통해 제어됩니다.
Decoder가 시작될 때 다음과 같은 토큰이 함께 들어갑니다.
<|startoftranscript|> -> 디코딩 시작
<|ko|> -> 입력언어
<|transcribe|> -> 음성 인식 수행
<|notimestamps|> -> timestamp 비활성화
Decoder는 이 토큰들을 보고 현재 어떤 작업을 수행해야 하는지 결정합니다.
이 구조를 보면 Whisper의 멀티태스크 능력은 Decoder가 특별한 알고리즘을 가지고 있어서라기보다는
토큰 기반으로 작업을 제어하는 구조에서 나온다는 것을 알 수 있습니다.
Whisper에서 언어 감지는 어떻게 이루어질까?
Whisper에서 언어 감지는 별도의 모델이 따로 존재하지 않습니다.
디코딩이 시작될 때 Decoder는 언어 토큰에 대한 확률을 계산하고, 그중 가장 높은 값을 가진 언어를 선택합니다.
흐름을 단순하게 보면 다음과 같습니다.
Audio Representation
↓
Decoder 시작
↓
언어 토큰 확률 계산
↓
가장 높은 언어 선택
↓
텍스트 생성 시작
즉 Whisper에서 언어 감지도 결국 토큰 예측 문제 안에서 처리됩니다.
그래서 별도의 언어 분류 모델 없이도 Decoder 단계에서 자연스럽게 언어가 결정됩니다.
이처럼 Whisper의 출력 과정은 단순히 텍스트를 생성하는 것을 넘어, 언어 정보와 같은 부가적인 정보까지 하나의 토큰 생성 과정 안에서 함께 처리되도록 설계되어 있습니다.
그렇다면 이제 Decoder가 실제로 어떤 과정을 거쳐 최종 텍스트 출력을 만들어내는지, Whisper의 전체 출력 흐름을 정리해보겠습니다.
Whisper 최종 텍스트 출력
Decoder가 시작되면 먼저 <|startoftranscript|> 토큰이 입력되면서 디코딩이 시작됩니다.
이후 Decoder는 Encoder가 생성한 audio representation을 참고하면서 다음에 등장할 토큰의 확률 분포를 계산합니다.
이 과정에서 Decoder는 두 가지 정보를 함께 활용합니다.
1. 지금까지 생성된 토큰들의 문맥 정보 이미 생성된 단어들을 기반으로, 다음에 등장할 단어가 무엇일 가능성이 높은지 판단합니다.
2. Encoder가 생성한 음성 표현 Decoder는 이 음성 표현을 참고해 현재 음성 신호에 대응하는 단어가 무엇인지 추론합니다.
이 두 정보를 바탕으로 다음 토큰의 확률 분포가 계산되고, 가장 높은 확률을 가진 토큰이 선택됩니다. 선택된 토큰은 출력 결과에 추가되는 동시에 다음 단계의 Decoder 입력으로 다시 사용됩니다.
이 과정이 반복되면서 텍스트가 한 토큰씩 확장되며 문장이 완성됩니다.
예를들어서 음성에 "Hello World" 라는 발화가 포함되어 있다면, Decoder는 먼저 Hello 토큰을 생성하고, 다음 단계에서 World 토큰을 생성하는 방식으로 문장을 완성합니다.
이처럼 Whisper의 Decoder는 음성 정보를 기반으로 토큰을 하나씩 생성하면서 최종 텍스트를 구성하는 방식으로 동작합니다.
또한 이 토큰 생성 과정 안에서 언어 정보나 timestamp 같은 요소들도 함께 결정되기 때문에 Whisper는 하나의 모델 안에서 음성 인식, 언어 감지, 번역과 같은 다양한 작업을 동시에 수행할 수 있습니다.
결과적으로 Whisper의 출력 단계는 단순히 음성을 텍스트로 변환하는 과정이 아니라, Encoder가 추출한 음성 표현을 기반으로 여러 정보를 포함한 토큰 시퀀스를 생성하는 과정이라고 볼 수 있습니다.
출력 아키텍처 관점에서의 최종 정리
지금까지 살펴본 Whisper의 출력 아키텍처 흐름을 정리하면 다음과 같습니다.
- Encoder의 출력은 텍스트가 아니라 음성의 문맥 정보가 정리된 잠재 표현(latent representation) 입니다.
- Decoder는 이 음성 표현과 이전에 생성된 토큰을 함께 입력으로 받아 다음에 등장할 토큰을 예측합니다.
- Decoder Block 내부에서는 Masked Self-Attention을 통해 이전 토큰 간의 문맥 관계를 학습하고, Cross-Attention을 통해 Encoder의 음성 표현을 참고합니다.
- 이후 Feed Forward Network와 Linear Layer, Softmax를 거쳐 다음 토큰의 확률 분포가 계산됩니다.
- 이 과정은 Auto-Regressive 방식으로 반복되며, 토큰이 하나씩 생성되면서 최종 텍스트 문장이 완성됩니다.
출처
- OpenAI Whisper 논문
Radford et al., Robust Speech Recognition via Large-Scale Weak Supervision, 2022
(https://arxiv.org/abs/2212.04356)
→ Whisper의 Encoder–Decoder Transformer 구조, Decoder 기반 텍스트 생성, Auto-Regressive 방식의 토큰 예측, 언어 토큰 및 멀티태스크 처리 구조 근거 - Transformer 아키텍처
Vaswani et al., Attention Is All You Need, 2017
(https://arxiv.org/abs/1706.03762)
→ Transformer Decoder 구조, Masked Self-Attention, Cross-Attention, Feed Forward Network 구조 근거 - OpenAI Whisper GitHub
https://github.com/openai/whisper
→ Decoder 내부 구조 (Self-Attention, Cross-Attention, MLP), 토큰 기반 디코딩 방식, 언어 토큰 및 task token 사용 방식 확인 - Whisper Tokenization / Special Tokens 설명
OpenAI Whisper Documentation
https://github.com/openai/whisper/blob/main/whisper/tokenizer.py
→ <|startoftranscript|>, <|transcribe|>, <|translate|>, <|notimestamps|> 등 작업 제어 토큰 구조 근거
3편에 걸쳐 Whisper의 전체 아키텍처 흐름을 정리해보았습니다. 다음 편에서는 졸업작품에서 Whisper를 실제로 어떻게 활용했는지 리뷰를 작성해보겠습니다.
다음편으로는 제가 졸업작품 때 Whisper 모델을 어떻게 사용하였는지에 대한 리뷰를 작성해보겠습니다.
'나의 기술 탐험 > A.I' 카테고리의 다른 글
| OpenAI Whisper(2) - Whisper 아키텍처 분석[입력] (0) | 2026.01.19 |
|---|---|
| OpenAI Whisper(1) - Whisper란 무엇일까? (0) | 2026.01.10 |