Phase 07: Transformers Deep Dive

Transformadores de audio Arquitectura de susurros

El sonido es una imagen de frecuencia a lo largo del tiempo.

Type: Learn

Languages: Python

Prerequisites: Phase 7 · 05 (Full Transformer), Phase 7 · 08 (Encoder-Decoder), Phase 7 · 09 (ViT)

Time: ~45 minutes

El problema

Antes de Whisper (OpenAI, Radford et al. 2022), el reconocimiento automático de voz (ASR) de vanguardia significaba que los extractores de características de wav2vec 2.0 y HuBERT se supervisan por sí mismos más una cabeza afinada.

Whisper hizo tres apuestas:

  1. Train on everything.680.000 horas de audio deficiente en 97 idiomas, sin un cuerpo académico limpio, sin etiquetas fonéticas.
  2. Multi-task single model.Un decodificador entrenado conjuntamente en transcripción, traducción, detección de actividad de voz, ID de idioma y timestamping a través de tokens de tarea.
  3. Standard encoder-decoder transformer.El codificador consume espectrogramas log-mail. El decodificador produce tokens de texto autoregresivamente.

El resultado: Whisper big-v3 es robusto en acentos, ruido y lenguajes que tienen datos de etiqueta limpia cero. Es el front-end de voz predeterminado para todos los asistentes de voz de código abierto y la mayoría de los comerciales en 2026.

El concepto

!Whisper pipeline: audio → mel → encoder → decoder → text

Paso 1 repetición + ventana

Audio a 16 kHz. Clip/pad a 30 segundos. Computa el espectrograma log-mel: 80 mel bin, 10 ms de paso → ~ 3.000 cuadros × 80 características. Esta es la "imagen de entrada" que Whisper ve.

Paso 2 tronco convolucionario

Dos capas Conv1D con el núcleo 3 y el paso 2 reducen los 3.000 cuadros a 1.500.

Paso 3 codificador

Un codificador de transformador de 24 capas (para grandes) en 1.500 pasos de tiempo. codificación posicional sinusoidal, autoatención, GELU FFN. Produce estados ocultos de 1.500 × 1.280 .

Paso 4 decodificador

Un decodificador de transformador de 24 capas. Produce automáticamente tokens de un vocabulario BPE que es un superconjunto de GPT-2 con algunos tokens especiales específicos de audio.

Paso 5 Tokens de tarea

El descifrador comienza con fichas de control que dicen al modelo qué hacer:

<|startoftranscript|>  <|en|>  <|transcribe|>  <|0.00|>

o

<|startoftranscript|>  <|fr|>  <|translate|>   <|0.00|>

El modelo fue entrenado en esta convención. controlas tareas por prefijo. el equivalente de instrucción de 2026 pero aplicado al habla.

Paso 6 salida

Buscar en haz (ancho 5) con un umbral de log-prob.<|notimestamps|>El token está ausente.

Tamaños de susurros

ModelParamsLayersd_modelHeadsVRAM (fp16)
Tiny39M43846~1 GB
Base74M65128~1 GB
Small244M1276812~2 GB
Medium769M24102416~5 GB
Large1550M32128020~10 GB
Large-v31550M32128020~10 GB
Large-v3-turbo809M32128020~6 GB (4-layer decoder)

El decodificador de 32 capas se reduce a 4.8 veces más rápido con regresión de <1 punto WER.

Lo que el susurro no hace

  • No hay diarios, para eso se empareja con la nota de piano.
  • No se transmite en tiempo real de forma nativa la ventana de 30 segundos está fija.faster-whisper¿ Qué ?WhisperX) para el streaming a través de la superposición de VAD +.
  • No hay contexto de forma larga más allá de 30 s sin fragmentos externos. Funciona bien en la práctica porque el habla humana rara vez necesita contexto de largo alcance para la transcripción.

2026 paisaje

TaskModelNotes
English ASRWhisper-turbo, MoonshineMoonshine is 4× faster on edge
Multilingual ASRWhisper-large-v397 languages
Streaming ASRfaster-whisper + VAD150 ms latency targets achievable
TTSPiper, XTTS-v2, KokoroEncoder-decoder pattern, but Whisper-shaped
Audio + languageAudioLM, SeamlessM4TText tokens + audio tokens in one transformer

Construye el mismo

¿ Qué ?code/main.pyNo entrenamos Whisper, construimos el log-mail espectrogram pipeline + task-token prompt formator. Esas son las piezas que realmente tocan en la producción.

Paso 1: sintetizar el audio

Generar una onda seno-segunda a 440 Hz muestrada a 16 kHz. 16.000 muestras.

Paso 2: Espectograma de registro de correo electrónico (simplificado)

El espectrograma de mel completo necesita FFT. hacemos un marco simplificado + versión de energía por marco que muestra la tubería sin necesidad delibrosa¿Qué es esto ?

pythondef frame_signal(x, frame_size=400, hop=160):
    frames = []
    for start in range(0, len(x) - frame_size + 1, hop):
        frames.append(x[start:start + frame_size])
    return frames

En el marco = 25 ms, en el hop = 10 ms.

Paso 3: envasado a 30 s

Whisper siempre procesa trozos de 30 segundos.

Paso 4: crear los tokens de solicitud

pythondef whisper_prompt(lang="en", task="transcribe", timestamps=True):
    tokens = ["<|startoftranscript|>", f"<|{lang}|>", f"<|{task}|>"]
    if not timestamps:
        tokens.append("<|notimestamps|>")
    return tokens

Esa es toda la superficie de control de tareas.

Usalo

pythonimport whisper
model = whisper.load_model("large-v3-turbo")
result = model.transcribe("meeting.wav", language="en", task="transcribe")
print(result["text"])
print(result["segments"][0]["start"], result["segments"][0]["end"])

Más rápido, compatible con OpenAI:

pythonfrom faster_whisper import WhisperModel
model = WhisperModel("large-v3-turbo", compute_type="int8_float16")
segments, info = model.transcribe("meeting.wav", vad_filter=True)
for s in segments:
    print(f"{s.start:.2f} - {s.end:.2f}: {s.text}")

When to pick Whisper in 2026:

  • RAS multilingüe con un modelo.
  • Una robusta transcripción de ruidosos y diversos sonidos.
  • Investigación / prototipo ASR punto de partida más rápido.

When to pick something else:

  • Ultra baja latencia streaming en el borde Moonshine supera a Whisper en calidad igualada.
  • AI de conversación en tiempo real que necesita <200 ms ASR de transmisión dedicada.
  • Diario de altavoces Susurro no hace esto; paralizador en la nota de piano.

Envío

¿ Qué ?outputs/skill-asr-configurator.mdLa habilidad elige un modelo ASR, parámetros de decodificación y una tubería de procesamiento previo para una nueva aplicación de voz.

Los ejercicios

  1. Easy.- ¿ Qué ?code/main.pyConfirmar el recuento de fotogramas para una señal de 1 segundo a 16 kHz con 10 ms saltar es ~ 100 fotogramas.
  2. Medium.Construir el espectro completo de log-mel usando numpy.fftVerifique si 80 mil contenedores coinciden .librosa.feature.melspectrogram(n_mels=80)dentro del error numérico.
  3. Hard.Implemente inferencia de transmisión: fragmento de audio en ventanas de 10 segundos con superposición de 2 segundos, ejecuta Whisper en cada fragmento, fusione las transcripciones. Mide la tasa de error de palabra frente a un solo paso en una muestra de podcast de 5 minutos.

Términos clave

TermWhat people sayWhat it actually means
Mel spectrogram"Audio image"2D representation: frequency bins on one axis, time frames on the other; log-scaled energy per cell.
Log-mel"What Whisper sees"Mel spectrogram passed through log; approximates human perception of loudness.
Frame"One time slice"A 25 ms window of samples; overlapping at 10 ms stride.
Task token"Prompt prefix for speech"Special tokens like <|transcribe|> / <|translate|> in the decoder prompt.
Voice activity detection (VAD)"Find the speech"Gate that removes silence before ASR; cuts cost massively.
CTC"Connectionist Temporal Classification"Classic ASR loss for alignment-free training; Whisper does NOT use it.
Whisper-turbo"Small decoder, full encoder"large-v3 encoder + 4-layer decoder; 8× faster decoding.
Faster-whisper"The production wrapper"CTranslate2 reimplementation; int8 quantization; 4× faster than OpenAI's reference.

Leer más

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.