|
Audio encoder
|
32-layer Whisper-style transformer (d=1280, 20 heads, head_dim=64, FFN=5120, GELU, LayerNorm, eps=1e-5)
|
|
Conv stem
|
3x Conv2d(stride=2, channels=480, kernel=3x3, pad=1) -> 8x temporal downsample (128 mel bins -> 16 freq bins)
|
|
Stem projection
|
Linear(480x16=7680 -> 1280) + sinusoidal positional embedding (max 1500 positions)
|
|
DeepStack taps
|
Encoder layers [8, 16, 24] -> 3 independent GatedMLP(1280 -> 8192 -> 2560, SiLU)
|
|
DeepStack injection
|
Residual add at LM layers [0, 1, 2] at audio-token positions
|
|
Audio adapter
|
GatedMLP(1280 -> 8192 -> 2560, SiLU) for final encoder output
|
|
LM backbone
|
36-layer Qwen3 (hidden=2560, 32 Q-heads / 8 KV-heads, head_dim=128, QK-norm, SwiGLU FFN=9728, RoPE theta=1M)
|
|
Output head
|
Linear(2560 -> 151936), untied from embedding
|
|
Vocab
|
151936 Qwen3 BPE (151643 regular + 293 special tokens)
|
|
Audio input
|
16 kHz mono, 128 mel bins, n_fft=400, hop=160
|
|
Audio tokens
|
12.5 Hz after 8x conv downsample, time markers every 2 seconds
|
|
Parameters
|
~4.6 B total (encoder ~650M + adapter/deepstack ~120M + LM ~3.8B)
|