El sonido llega como una onda continua. El muestreo la convierte en una lista de números —miles por segundo— y a partir de ahí hay dos maneras de representarla, que no compiten: responden a preguntas distintas.
Ese salto de un dominio al otro lo hace una transformada de Fourier aplicada por ventanas —trocitos cortos de señal, uno detrás de otro—, y el resultado se pasa a decibelios porque el oído y los modelos trabajan mejor en escala logarítmica.
Lo que hay que llevarse es la consecuencia práctica: convertir audio en espectrograma convierte un problema de audio en un problema de visión, y con él llega toda la maquinaria de redes convolucionales que ya existía. No es un truco de implementación, es la razón por la que el audio y la imagen acabaron compartiendo arquitecturas.
// las máquinas no escuchan: miran imágenes de frecuenciasLa síntesis de voz hace el viaje contrario: de texto a onda. Y ahí ha pasado algo que conviene entender porque explica por qué el código de hoy es tan corto.
| Arquitectura antigua | Arquitectura actual (VITS) | |
|---|---|---|
| Etapas | Dos: modelo acústico → vocoder | Una sola, de extremo a extremo |
| Piezas | Texto → espectrograma → onda | Encoder de texto → predictor de duración → generador de onda |
| Qué implica | Dos modelos que entrenar y que encajar | Un modelo, una llamada |
El predictor de duración es la pieza que más se nota al escuchar: decide cuánto dura cada fonema, que es de donde sale el ritmo. Sin él la voz suena mecánica aunque el timbre sea perfecto.
Y la trampa práctica del audio generado: lo que devuelve el modelo es un array de números más una frecuencia de muestreo, y las dos cosas viajan juntas. Guardar el array con una frecuencia distinta de la que produjo el modelo no da error — reproduce la voz acelerada o ralentizada. Es el fallo clásico de «suena como una ardilla», y siempre es el mismo: alguien fijó la frecuencia a mano en vez de usar la que devolvió el pipeline.
| Comprobación | Qué detecta |
|---|---|
| ¿La señal tiene longitud > 0 y frecuencia de muestreo > 0? | Que el fichero se cargó de verdad |
| ¿Es la señal todo ceros? | Silencio puro — una gráfica vacía no es un bug del código |
| ¿El espectrograma tiene las dos dimensiones no vacías? | Que la transformada produjo algo |
| ¿Coincide la frecuencia de muestreo al guardar con la que devolvió el modelo? | El fallo de «ardilla» |
Son cuatro if y ninguno requiere entender de señales. Están aquí porque el audio es
el tipo de dato donde más fácil es procesar durante horas algo que estaba vacío desde el principio:
a diferencia de un texto, nadie mira un array de 300.000 números para ver si tiene sentido.
Coge un audio corto tuyo y dibuja las dos vistas: la forma de onda y el espectrograma. Sin entrenar nada, solo mirarlas. Después responde a una pregunta sobre cada una: en la onda, ¿dónde están los silencios? En el espectrograma, ¿qué zona se ilumina cuando hay voz y cuál cuando hay ruido de fondo?
Si las dos preguntas se contestan mirando, tu representación sirve. Si el espectrograma es una mancha uniforme, ningún modelo va a distinguir ahí lo que tú no distingues — y eso lo sabes antes de gastar una hora de entrenamiento.