← Todo el material
Curso Intermedio 24 de agosto de 2026

Voz e IA — Módulo 1: cómo oye una máquina — del sonido a los números

Primer módulo del Curso de Voz e IA en tiempo real: qué es realmente el sonido para un computador. La onda de presión, el muestreo y la frecuencia de sampleo, la cuantización, del waveform al espectrograma y al mel-espectrograma, y el mapa completo de las tareas de voz que construiremos en el curso.

☰ Índice del contenido

Bienvenido al Curso de Voz e IA en tiempo real. La meta del curso completo es que puedas construir un agente que escucha y habla: que entienda lo que le dices en voz y te responda hablando, con la latencia lo bastante baja como para que se sienta una conversación y no un walkie-talkie. Es un objetivo ambicioso, y por eso el recorrido va por capas: cómo oye una máquina (este módulo) → reconocimiento de voz (ASR) → Whisper en la práctica → síntesis de voz (TTS) → latencia → streaming → VAD y turn-taking → arquitectura de un agente de voz → speech-to-speech y realtime APIs → telefonía → evaluar voz → producción. Cada módulo asume el anterior, así que este es el cimiento: nada de lo que sigue tiene sentido si no entendemos primero qué es el sonido para un computador.

Si hiciste el primer módulo del curso de generación de imágenes, esto te va a sonar familiar por una buena razón. Allá vimos que una imagen no es una imagen para la máquina: es una grilla de números, un tensor. Acá pasa lo mismo con el oído. Una imagen es una grilla de píxeles; el audio es una secuencia de muestras. Este módulo es el “cómo ve una máquina”, pero para el oído: el punto donde algo del mundo físico —una onda que hace vibrar el aire— se vuelve una lista de números que un modelo puede procesar.

La tesis del módulo

El sonido es una onda continua de presión; para una máquina se vuelve una lista de números tomados miles de veces por segundo, y casi todo el trabajo de voz consiste en transformar esa lista en una representación donde el contenido —los fonemas, las palabras— sea visible. El waveform crudo esconde la información; el espectrograma la muestra. Entender ese salto es entender por qué todos los modelos de voz se parecen por dentro.

El sonido es una onda de presión

Cuando algo suena —tus cuerdas vocales, un parlante, una cuerda de guitarra— hace vibrar el aire. Esa vibración es una onda de presión: zonas donde las moléculas de aire se aprietan (más presión) alternadas con zonas donde se separan (menos presión), viajando hacia tu oído. Tu tímpano no hace nada mágico: es una membrana que se mueve hacia adentro y hacia afuera siguiendo esa presión. Un micrófono hace exactamente lo mismo, solo que convierte ese movimiento en un voltaje que sube y baja con la onda.

Dos propiedades de la onda cargan casi todo el significado:

  • La frecuencia (cuántas veces por segundo se repite el patrón, medida en hercios, Hz) determina el tono: grave si es baja, agudo si es alta. La voz humana hablada vive sobre todo entre unos 85 Hz y 8 kHz.
  • La amplitud (qué tan grande es el vaivén de presión) determina el volumen: fuerte si es grande, suave si es chico.

Hasta acá todo es continuo: la presión toma infinitos valores a lo largo de infinitos instantes. Un computador no puede guardar infinito. Necesita convertir esa onda continua en algo finito y discreto. Ese proceso tiene dos pasos, y son el corazón de este módulo: muestreo (discretizar el tiempo) y cuantización (discretizar la amplitud).

Muestreo: discretizar el tiempo

Muestreo (sampling: tomar muestras) es medir el valor de la onda cada cierto intervalo fijo de tiempo, en lugar de medirlo siempre. Es como filmar: la cámara no captura movimiento continuo, captura 24 o 30 fotos por segundo y tu ojo rellena el resto. El audio hace lo mismo: toma una muestra (sample: el valor de la presión en un instante) miles de veces por segundo.

La frecuencia de muestreo (sample rate: cuántas muestras se toman por segundo, en Hz) es el número que define esa velocidad. Un audio a 16 kHz tiene 16.000 muestras por cada segundo de sonido. Un minuto de audio a 16 kHz son 960.000 números. Ese es todo el archivo: una lista larga de números.

¿Por qué 16 kHz y no cualquier otro número? Acá entra el teorema de Nyquist (o de Nyquist-Shannon), y basta con la intuición: para capturar fielmente una frecuencia de X Hz, hay que muestrear al menos al doble, a 2X Hz. Si muestreas más lento, las frecuencias altas se “disfrazan” de frecuencias bajas que no existían —un artefacto llamado aliasing— y el sonido queda distorsionado sin remedio.

De ahí salen los números que verás toda tu vida trabajando con voz:

  • La voz humana con inteligibilidad completa cabe bajo los 8 kHz. Doble de 8 kHz = 16 kHz. Por eso 16 kHz es el estándar de facto en ASR y voz: captura todo lo que hace falta para entender palabras, sin gastar espacio en frecuencias que no aportan.
  • La telefonía tradicional se diseñó para 8 kHz (captura hasta 4 kHz). Suena “apagada” —le falta el brillo de los agudos— pero se entiende. Por eso la voz por teléfono tiene ese timbre característico, y por eso un modelo de voz para telefonía debe entrenarse o adaptarse a 8 kHz.
  • La música usa 44.1 kHz (el estándar del CD) porque el oído humano llega hasta ~20 kHz, y el doble de 20 kHz es ~40 kHz, con un margen extra.

Ojo: subir el sample rate no mejora un modelo de voz; muchas veces lo empeora. Los modelos de ASR se entrenan a 16 kHz y esperan 16 kHz. Si les das 44.1 kHz sin remuestrear (resample: convertir de una frecuencia a otra), o peor, si les das 8 kHz de teléfono estirado a 16 kHz sin cuidado, el audio cae fuera de la distribución con la que aprendieron y la transcripción se degrada. El sample rate correcto es el que espera el modelo, no el más alto.

Cuantización: discretizar la amplitud

Muestrear discretiza el tiempo, pero cada muestra sigue siendo un número real con infinitos decimales de presión. La cuantización (quantization: redondear cada muestra a uno de una cantidad finita de niveles) discretiza la amplitud. Cuántos niveles hay disponibles lo fija la profundidad de bits (bit depth):

  • 16 bits por muestra dan 2¹⁶ = 65.536 niveles posibles. Es el estándar del audio de voz y del CD: la diferencia entre un nivel y el siguiente es tan chica que el oído no la nota.
  • 8 bits dan solo 256 niveles: se escucha el “escalonado” como un ruido de fondo áspero (ruido de cuantización).
  • 24 o 32 bits se usan en producción musical por margen de edición, pero para voz e IA son excesivos.

El PCM (Pulse-Code Modulation: modulación por códigos de pulso) es simplemente el nombre formal de este formato crudo —la lista de muestras enteras, sin comprimir, tal cual salieron del muestreo y la cuantización. Cuando alguien dice “audio PCM de 16 kHz, 16 bits, mono”, está describiendo exactamente la lista de números que un modelo de voz consume. Un archivo WAV normalmente es PCM con una cabecera que dice el sample rate, la profundidad de bits y los canales.

Los canales son cuántas señales independientes hay: mono (una) o estéreo (dos, izquierda y derecha). Para voz e IA casi siempre se trabaja en mono: la voz no necesita estéreo, y la mayoría de los modelos esperan un solo canal. Si te llega estéreo, lo primero es mezclarlo a mono.

El waveform: la lista de números cruda

El waveform (forma de onda) es esa lista de muestras a lo largo del tiempo: el resultado directo del muestreo y la cuantización. Si lo grafican, es la línea que sube y baja que todos asociamos con el audio. Es la representación más fiel —contiene toda la información— pero también la menos útil para un modelo, y esa es la paradoja clave del módulo.

El problema: en el waveform, el contenido lingüístico está enredado. Los fonemas —los sonidos mínimos que distinguen palabras, como la /s/ de la /f/— se diferencian por su contenido de frecuencias, no por la forma cruda de la onda. Dos personas diciendo la misma vocal producen waveforms que se ven completamente distintos, pero comparten el mismo patrón de frecuencias. El dominio del tiempo esconde justo lo que necesitamos ver. Hay que cambiar de dominio.

De la onda a la frecuencia: Fourier

La herramienta para pasar del tiempo a la frecuencia es la transformada de Fourier. La idea, a alto nivel: cualquier onda, por complicada que sea, se puede descomponer como una suma de ondas simples (senos) de distintas frecuencias. La transformada de Fourier toma un trozo de waveform y responde: “¿cuánta energía hay en cada frecuencia?”. El resultado es un espectro —qué tan fuerte suena cada tono en ese instante.

En la práctica se usa la FFT (Fast Fourier Transform: transformada rápida de Fourier), un algoritmo que calcula esa descomposición de forma eficiente. Pero hay un detalle: una FFT sobre todo el audio te dice qué frecuencias hay en total, y pierde cuándo ocurrió cada una. En voz eso no sirve: el orden de los fonemas es la palabra. La solución es cortar el audio en ventanas (frames: trozos cortos que se solapan, típicamente de 25 milisegundos, avanzando cada 10 ms) y calcular una FFT por ventana. Así conservamos el eje del tiempo.

El espectrograma: tiempo × frecuencia × energía

Apilar todas esas FFT por ventana, una al lado de la otra, produce el espectrograma: una imagen 2D donde el eje horizontal es el tiempo, el eje vertical es la frecuencia, y el color (o el brillo) es la energía en esa frecuencia y ese instante. Zonas brillantes = ese tono suena fuerte ahí; zonas oscuras = silencio en esa banda.

Acá está el giro conceptual, y por eso este módulo es hermano del de imágenes: el espectrograma vuelve el audio en una imagen. Y en una imagen los fonemas se ven: las vocales muestran bandas horizontales claras (los formantes, las frecuencias que las cuerdas vocales y la boca resaltan); las consonantes fricativas como /s/ muestran una nube de energía en agudos. Lo que estaba enredado en el waveform aparece dibujado. Por eso casi todos los modelos de voz no consumen el waveform crudo: consumen un espectrograma.

El mel-espectrograma: como oye el ser humano

Falta un ajuste. El oído humano no percibe las frecuencias de forma lineal. Distinguimos muy bien entre 100 y 200 Hz (grave), pero entre 10.000 y 10.100 Hz no notamos casi diferencia, aunque el salto en Hz sea el mismo. Somos más sensibles a los graves y agrupamos los agudos.

La escala mel (de melody) es una escala de frecuencias diseñada para que distancias iguales en mel suenen igual de distintas al oído: comprime los agudos y estira los graves, imitando la percepción humana. El mel-espectrograma es un espectrograma cuyo eje de frecuencia se pasó a escala mel (típicamente a 80 bandas mel en voz). Resultado: una representación compacta que concentra el detalle justo donde el oído —y el contenido de la voz— vive.

El mel-espectrograma es, en la práctica, la entrada estándar de casi todos los modelos de voz: Whisper convierte tu audio a un mel de 80 bandas antes de mirarlo; los TTS modernos generan un mel y luego lo convierten a audio. Por eso, aunque este es el módulo 1, ya estás viendo la pieza que reaparecerá en cada módulo siguiente.

      DEL SONIDO AL MEL: LA CADENA COMPLETA

  onda de presión (continua, en el aire)
                    │
                    ▼  micrófono + muestreo
          ┌───────────────────┐
          │  waveform (PCM)   │  lista de
          │  16 kHz, 16 bits  │  muestras
          └─────────┬─────────┘
                    │  cortar en ventanas
                    │  (25 ms, cada 10 ms)
                    ▼
          ┌───────────────────┐
          │  FFT por ventana  │  tiempo ►
          └─────────┬─────────┘  frecuencia
                    ▼
          ┌───────────────────┐
          │   espectrograma   │  imagen 2D:
          │  tiempo x frec.   │  tiempo x frec
          └─────────┬─────────┘  x energía
                    │  escala mel (imita el oído)
                    ▼
          ┌───────────────────┐
          │  mel-espectrograma│  entrada de
          │    (80 bandas)    │  Whisper, TTS...
          └───────────────────┘

Ese diagrama es el mapa de todo el preprocesamiento de voz. Cada flecha es una transformación que conserva la información pero la reorganiza para que el contenido sea más fácil de leer. La última caja —el mel— es donde empiezan los modelos de los próximos módulos.

Código: del audio al mel-espectrograma

Veamos las dos formas más comunes de calcular un mel-espectrograma. Primero con librosa (biblioteca de análisis de audio en Python), la más usada para experimentar:

import librosa
import numpy as np

# Carga el audio y lo remuestrea a 16 kHz (sr=16000).
# librosa devuelve el waveform como un arreglo float y el sample rate.
# mono=True mezcla a un solo canal automáticamente.
y, sr = librosa.load("frase.wav", sr=16000, mono=True)

print(y.shape)   # p. ej. (48000,) -> 3 segundos a 16 kHz
print(y.dtype)   # float32: las muestras normalizadas a [-1, 1]

# Mel-espectrograma. n_fft = tamaño de la ventana FFT (en muestras),
# hop_length = cuántas muestras avanza entre ventanas (el "cada 10 ms"),
# n_mels = cuántas bandas mel (80 es lo típico en voz).
mel = librosa.feature.melspectrogram(
    y=y, sr=sr, n_fft=400, hop_length=160, n_mels=80
)

# Pasar de energía (potencia) a decibeles: comprime el rango dinámico
# para que se parezca más a como el oído percibe el volumen.
mel_db = librosa.power_to_db(mel, ref=np.max)

print(mel_db.shape)  # (80, T): 80 bandas mel x T ventanas de tiempo

Y con torchaudio (el paquete de audio de PyTorch), el camino habitual cuando el mel alimenta directamente a un modelo de deep learning:

import torchaudio

# Carga: devuelve un tensor [canales, muestras] y el sample rate original.
waveform, sr = torchaudio.load("frase.wav")

# Si no viene a 16 kHz, remuestrear. Los modelos esperan su sr exacto.
if sr != 16000:
    waveform = torchaudio.functional.resample(waveform, sr, 16000)
    sr = 16000

# El transform de mel: mismos parámetros conceptuales que en librosa.
mel_transform = torchaudio.transforms.MelSpectrogram(
    sample_rate=sr, n_fft=400, hop_length=160, n_mels=80
)

mel = mel_transform(waveform)  # tensor [canales, 80, T]
print(mel.shape)

Fíjate que en ambos casos los parámetros son los mismos ideas: n_fft (el tamaño de la ventana), hop_length (cuánto avanza entre ventanas) y n_mels (cuántas bandas). Con 16 kHz, un hop_length de 160 muestras equivale a un paso de 10 ms (160 / 16000 = 0,01 s), justo el estándar del que hablamos.

El mapa del curso: las tareas de voz

Todo lo anterior es preprocesamiento. Sobre esa representación se montan las tareas que iremos construyendo. El pipeline general de un agente de voz conversacional es este:

        PIPELINE DE UN AGENTE DE VOZ

  usuario habla
       │
       ▼
  ┌──────────┐  audio   ┌──────────┐
  │  audio   │ ───────► │   ASR    │
  │  (mic)   │          │ (a texto)│
  └──────────┘          └────┬─────┘
                             │ texto
                             ▼
                        ┌──────────┐
                        │   LLM    │
                        │ (razona) │
                        └────┬─────┘
                             │ texto
                             ▼
  ┌──────────┐  audio   ┌──────────┐
  │  audio   │ ◄─────── │   TTS    │
  │(parlante)│          │ (a voz)  │
  └──────────┘          └──────────┘
       │
       ▼
  usuario escucha

Ese ciclo —audio → ASR → texto → LLM → texto → TTS → audio— es la arquitectura clásica de un agente de voz, y cada flecha es un módulo del curso. La tabla resume las tareas centrales:

TareaQué haceMódulos
ASR (reconocimiento de voz)Audio hablado → texto2, 3 (Whisper)
TTS (síntesis de voz)Texto → audio hablado4
VAD (detección de voz)¿Hay alguien hablando ahora?7
Turn-takingCuándo me toca hablar a mí7
Speech-to-speechAudio → audio, sin pasar por texto9

Y aquí van los sample rates de referencia que aparecerán una y otra vez:

Sample rateFrecuencia máx. capturadaUso típico
8 kHz~4 kHzTelefonía (voz por línea)
16 kHz~8 kHzVoz e IA: ASR, TTS, agentes
44.1 kHz~20 kHzMúsica (calidad CD)
48 kHz~24 kHzVideo, audio profesional

Errores comunes

  • Alimentar un modelo con el sample rate equivocado. Los modelos de ASR se entrenan a 16 kHz y esperan 16 kHz. Pasarles 44.1 kHz sin remuestrear, o audio de teléfono a 8 kHz sin adaptar, tira la transcripción. Remuestrea siempre al sr que el modelo espera.
  • Olvidar mezclar a mono. Muchos modelos esperan un solo canal. Si les entregas estéreo, o falla o solo usa un canal y bota la mitad del audio. Convierte a mono antes.
  • Creer que más bits o más kHz mejoran el modelo. No: solo suben el tamaño del archivo y sacan el audio de la distribución de entrenamiento. La calidad de voz para IA está en usar el formato que el modelo aprendió, no el más “alto”.
  • Assertear sobre el waveform crudo. Buscar fonemas o palabras mirando la forma de onda directa es pelear contra la representación equivocada. El contenido vive en el dominio de la frecuencia; por eso existe el espectrograma.
  • Confundir espectrograma con mel-espectrograma. El mel no es solo “un espectrograma bonito”: tiene el eje de frecuencia comprimido según el oído humano, y es la entrada que la mayoría de los modelos espera. Pasar un espectrograma lineal donde se espera mel rompe la entrada.
  • Ignorar el aliasing. Muestrear por debajo del doble de la frecuencia más alta no “pierde un poco de calidad”: inventa frecuencias falsas que no se pueden quitar después. El daño es en la captura, no reparable en postproceso.

La frase para llevarse

“El waveform tiene toda la información y no te deja ver nada; el mel-espectrograma tira lo que sobra y te muestra las palabras. Casi todo el trabajo de voz es ese cambio de representación, hecho una y otra vez.”

Qué viene

Módulo 2: reconocimiento de voz (ASR). Ya sabemos que la máquina consume un mel-espectrograma; ahora vamos a la primera tarea de verdad: convertir ese mel en texto. Veremos por qué transcribir es difícil —los mismos sonidos, distintas palabras; el ruido; los acentos—, qué es un modelo acústico y un modelo de lenguaje trabajando juntos, la diferencia entre reconocer palabra por palabra y reconocer secuencias completas, y por qué los modelos modernos tipo Whisper cambiaron las reglas. Con eso montado, el módulo 3 baja a la práctica pura con Whisper.

Material relacionado

VozAudioEspectrogramaProcesamiento de señalesIA

Preguntas sobre este curso

Regístrate gratis para hacer preguntas y guardar tu progreso.

✉ Entérate de lo nuevo

Recibe un aviso cuando publique nuevos cursos, workshops o investigaciones. Sin spam.