Phase 06: Speech & Audio

Códec de audio neural EnCodec, SNAC, Mimi, DAC y la división semántica-acústica

La generación de audio 2026 es casi toda una serie de tokens. EnCodec, SNAC, Mimi y DAC convierten formas de onda continuas en secuencias discretas que un transformador puede predecir. La división de tokens semánticos vs acústicos primer código como semántico, descanso como acústico es el cambio arquitectónico más importante desde el transformador para el audio.

Type: Learn

Languages: Python

Prerequisites: Phase 6 · 02 (Spectrograms), Phase 10 · 11 (Quantization), Phase 5 · 19 (Subword Tokenization)

Time: ~60 minutes

El problema

Los modelos de lenguaje trabajan en tokens discretos. El audio es continuo. Si desea un modelo de estilo LLM para el habla / música MusicGen, Moshi, Sesame CSM, VibeVoice, Orpheus primero necesita un neural audio codec: un codificador aprendido que discrete el audio en un pequeño vocabulario de tokens, y un decodificador que coincide que reconstruye la forma de onda.

Dos familias han surgido:

  1. Reconstruction-first codecs EnCodec, DAC. Optimiza la calidad de audio perceptual. Los tokens son "acústicos" capturan todo, incluida la identidad del altavoz, el timbre, el ruido de fondo.
  2. Semantic-first codecs Mimi (Kyutai), SpeechTokenizer. Forza el primer código para codificar contenido lingüístico / fonético (a menudo destilizando de WavLM).

Las perspectivas de 2024-2026: a pure reconstruction codec gives you blurry speech when you try to generate from text.El LLM sobre tokens de codec tiene que aprender tanto la estructura del lenguaje como la estructura acústica en el mismo libro de código, que no se escala.

El concepto

!Four codec landscape: EnCodec, DAC, SNAC (multi-scale), Mimi (semantic+acoustic)

El truco principal: Cuantización de vectores residuales (RVQ)

En lugar de un libro de códigos grande (que necesitaría millones de códigos para una buena calidad), todos los códigos de audio modernos usan RVQEl primer libro de código cuantifica la salida del codificador; el segundo cuantifica el residual; etc. Cada libro de código es de 1024 códigos.

En el momento de la inferencia, el decodificador suma todos los códigos elegidos por marco para reconstruir.

Los cuatro códec que importan en 2026

EnCodec (Meta, 2022).El código base. Encoder-decodificador sobre forma de onda, cuello de botella RVQ. 24 kHz, 32 libretas de código posibles, 4 libretas de código predeterminadas @ 1.5 kbps. Utiliza 1D conv + transformer + 1D convarquitectura. Usado por MusicGen.

DAC (Descript, 2023).RVQ con libros de código L2-normalizados, funciones de activación periódicas, pérdidas mejoradas. La mayor fidelidad de reconstrucción de cualquier código abierto a veces indistinguible del habla original con 12 libros de código. 44.1 kHz banda completa.

SNAC (Hubert Siuzdak, 2024).RVQ a múltiples escalas los libros de código gruesos operan a una velocidad de cuadros más baja que los finos. Modelan eficazmente el audio jerárquicamente: un "bozón" grueso a ~ 12 Hz más detalles a 50 Hz. Usado por Orpheus-3B porque la estructura jerárquica se adapta bien a la generación basada en LM.

Mimi (Kyutai, 2024).El cambio de juego 2026 . 12.5 Hz frecuencia de fotogramas (extremadamente baja), 8 libros de código @ 4.4 kbps.distilled from WavLM entrenado para predecir las características de contenido de voz de WavLM. Los códigos 1-7 son residuos acústicos. Esta división potencia Moshi (lección 15) y Sesame CSM.

Las velocidades de cuadros son importantes para la modelado del lenguaje

Rate de fotogramas más bajo = secuencia más corta = LM más rápido.

CodecFrame rate1 s = N framesGood for
EnCodec-24k75 Hz75music, general audio
DAC-44.1k86 Hz86high-fidelity music
SNAC-24k (coarse)~12 Hz12AR-LM efficient
Mimi12.5 Hz12.5streaming speech

A 12,5 Hz, una declaración de 10 segundos es sólo 125 marcos de códec un transformador puede predecirlos fácilmente.

Señales semánticos vs acústicos

frame_t → [semantic_token_t, acoustic_token_0_t, acoustic_token_1_t, ..., acoustic_token_6_t]
  • Semantic token (codebook 0 in Mimi).Encodifica lo que se dijo fonemas, palabras, contenido. Destilado de WavLM a través de una pérdida de predicción auxiliar.
  • Acoustic tokens (codebooks 1-7).Timbre de código, identidad del altavoz, prosodia, ruido de fondo, detalles finos.

Un AR LM predice primero el token semántico (condicionado en texto), luego predice los tokens acústicos (condicionados en referencia semántica + altavoz). Esta factorization es la razón por la que el TTS moderno puede cero-shot-clone voces: el modelo semántico maneja el contenido; el modelo acústico maneja el timbre.

2026 calidad de reconstrucción (bites por segundo, menor bitrate es mejor)

CodecBitratePESQViSQOL
Opus-20kbps20 kbps4.04.3
EnCodec-6kbps6 kbps3.23.8
DAC-6kbps6 kbps3.54.0
SNAC-3kbps3 kbps3.33.8
Mimi-4.4kbps4.4 kbps3.13.7

Los codecs tradicionales como Opus siguen ganando por bit en calidad perceptiva.discrete tokens(que no produce Opus) y generative-model quality(lo que el LM puede hacer con esos tokens).

Construye el mismo

Paso 1: codificar con EnCodec

pythonfrom encodec import EncodecModel
import torch

model = EncodecModel.encodec_model_24khz()
model.set_target_bandwidth(6.0)  # kbps

wav = torch.randn(1, 1, 24000)
with torch.no_grad():
    encoded = model.encode(wav)
codes, scale = encoded[0]
# codes: (1, n_codebooks, n_frames), dtype=int64

n_codebooks=8Cada código es 0-1023 (10 bits).

Paso 2: Descifrar y medir la reconstrucción

pythonwith torch.no_grad():
    wav_recon = model.decode([(codes, scale)])

from torchaudio.functional import compute_deltas
import torch.nn.functional as F

mse = F.mse_loss(wav_recon[:, :, :wav.shape[-1]], wav).item()

Paso 3: la división semántica-acústica (estilo Mimi)

pythonfrom moshi.models import loaders
mimi = loaders.get_mimi()

with torch.no_grad():
    codes = mimi.encode(wav)  # shape (1, 8, frames@12.5Hz)

semantic = codes[:, 0]
acoustic = codes[:, 1:]

El código semántico 0 está alineado con WavLM. Se puede entrenar un transformador de texto a semántica un vocabulario mucho más pequeño que ir directamente al audio. Luego, un decodificador de forma acústica a onda separado condiciones en una referencia de altavoz.

Paso 4: por qué funciona el AR LM sobre los tokens de codec

Para un clip de 10 segundos de voz en los libros de códigos de Mimi de 12,5 Hz × 8:

N_tokens = 10 * 12.5 * 8 = 1000 tokens

1000 tokens es un contexto trivial para un transformador. Un transformador de parámetro de 256M puede generar 10 segundos de habla en milisegundos en una GPU moderna.

Usalo

Problema de mapa → codec:

TaskCodec
General music generationEnCodec-24k
Highest-fidelity reconstructionDAC-44.1k
AR LM over speech (TTS)SNAC or Mimi
Streaming full-duplex speechMimi (12.5 Hz)
Sound-effect library with textEnCodec + T5 condition
Fine-grained audio editingDAC + inpainting

Regla de oro: if you're building a generative model, start with Mimi or SNAC. If you're building a compression pipeline, use Opus.

Las trampas

  • Too many codebooks.Añadir libros de código aumenta la fidelidad linealmente pero la longitud de la secuencia LM también linealmente.
  • Frame-rate mismatch.El entrenamiento de LM en 12,5 Hz Mimi luego el ajuste fino en 50 Hz EnCodec falla silenciosamente.
  • Assuming all codebooks equal.En Mimi, el código 0 lleva contenido; perderlo destruye la inteligencia.
  • Using reconstruction quality as the only metric.Un codec puede tener una gran reconstrucción pero no servirá para la generación basada en LM si la estructura semántica es mala.

Envío

Salvo comooutputs/skill-codec-picker.mdSeleccione un codec para una tarea generativa o de compresión dada.

Los ejercicios

  1. Easy.- ¿ Qué ?code/main.pyImplementa un cuantificador de juguete escalar + residual y mide el error de reconstrucción al agregar libros de código.
  2. Medium.Instalarencodecy comparar 1, 4, 8, 32 libros de código en un clip de discurso prolongado.
  3. Hard.Carga Mimi. Encienda un clip. reemplace el código 0 con números enteros aleatorios; decodifique. Luego reemplace el código 7 de manera similar. Compara las dos corrupciones código 0 corrupción debe destruir la inteligencia; código 7 corrupción apenas debe cambiar nada.

Términos clave

TermWhat people sayWhat it actually means
RVQResidual quantizationCascade of small codebooks; each quantizes the previous residual.
Frame rateCodec speedHow many token-frames per second. Lower = faster LM.
Semantic codebookCodebook 0 (Mimi)Codebook distilled from SSL features; encodes content.
Acoustic codebooksEverything elseTimbre, prosody, noise, fine detail.
PESQ / ViSQOLPerceptual qualityObjective metrics correlating with MOS.
EnCodecMeta codecThe RVQ baseline; used by MusicGen.
MimiKyutai codec12.5 Hz frame rate; semantic-acoustic split; powers Moshi.

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.