Análisis espectral y FFT: del sonido al espectrograma
En resumen
La transformada rápida de Fourier (FFT) es un algoritmo que calcula el espectro de un fragmento de audio digital, es decir, qué frecuencias contiene y con qué amplitud. Su resolución en frecuencia es fs/N, así que para separar notas próximas hacen falta ventanas largas, que a cambio pierden precisión en el tiempo. Las funciones de ventana (Hann, Hamming, Blackman) reducen la fuga espectral, y repitiendo la FFT sobre ventanas sucesivas se obtiene el espectrograma.
Un afinador de pinza que reconoce tu La en una fracción de segundo, el ecualizador que te muestra una montaña de colores mientras mezclas, la aplicación que identifica una canción en el bar, el compositor espectral que «lee» el sonido de un trombón para escribir una obra: todos hacen lo mismo. Toman un trozo de sonido digital y calculan su espectro con la FFT, la transformada rápida de Fourier. Es probablemente el algoritmo más usado de todo el procesado de audio.
Escucha dos notas a un semitono de distancia, La4 (440 Hz) y La♯4 (466,16 Hz). Las usaremos como ejemplo a lo largo del artículo:
Al sonar juntas oyes un batido rápido. Separarlas en un espectro exige, como verás, analizar un trozo de sonido bastante largo.
De la serie de Fourier a la transformada discreta
En el timbre y el espectro viste que cualquier onda periódica es una suma de senoides en Esa es la serie de Fourier, y sirve para un sonido ideal que se repite igual para siempre. La música real no es así: las notas empiezan, cambian y se apagan, y en un ordenador no hay una onda continua, sino una lista de muestras, como se explica en el audio digital.
La herramienta adecuada es la transformada discreta de Fourier (DFT). Toma un bloque de muestras y devuelve números complejos :
- : la muestra número de la señal.
- : el componente del espectro número (se llama bin, «casilla»). Su módulo es la amplitud y su argumento, la fase.
- : una senoide compleja de prueba. La suma mide cuánto «se parece» la señal a esa senoide.
Cada casilla corresponde a una frecuencia:
Solo son útiles las casillas de a , es decir, de 0 Hz hasta la frecuencia de Nyquist ; la otra mitad es un reflejo de la primera cuando la señal es real, como lo es el audio.
Un ejemplo mínimo. Las 8 muestras son una senoide que completa dos ciclos en el bloque. Su DFT da en las casillas y (el reflejo de la 2) y cero en todas las demás. La DFT ha encontrado la única frecuencia presente: 2 ciclos por bloque.
La FFT: el mismo resultado, muchísimo más rápido
Calcular la DFT tal cual exige unas multiplicaciones complejas. La FFT no es otra transformada, sino un algoritmo que obtiene exactamente el mismo resultado dividiendo el problema en mitades, cuartos, octavos… y aprovechando que muchos productos se repiten. Necesita del orden de operaciones.
| DFT directa () | FFT () | Cuántas veces más rápida | |
|---|---|---|---|
| 1 024 | 1 048 576 | 10 240 | ≈ 100 |
| 4 096 | 16 777 216 | 49 152 | ≈ 340 |
| 32 768 | 1 073 741 824 | 491 520 | ≈ 2 200 |
Por eso los tamaños habituales son potencias de 2: 512, 1 024, 2 048, 4 096…
Resolución en frecuencia y en tiempo
La separación entre casillas es la resolución en frecuencia:
Y el bloque analizado dura:
Multiplica las dos y verás el problema: . No puedes mejorar una sin empeorar la otra. Una ventana larga distingue frecuencias muy próximas, pero mezcla todo lo que ocurre en ese tiempo; una corta sitúa bien los ataques, pero confunde frecuencias cercanas. Es el principio de incertidumbre del análisis de señales, que Dennis Gabor formuló para el sonido en 1946.
| (a 44,1 kHz) | Duración del bloque | |
|---|---|---|
| 512 | 86,1 Hz | 11,6 ms |
| 1 024 | 43,1 Hz | 23,2 ms |
| 2 048 | 21,5 Hz | 46,4 ms |
| 4 096 | 10,8 Hz | 92,9 ms |
| 8 192 | 5,4 Hz | 185,8 ms |
| 16 384 | 2,7 Hz | 371,5 ms |
Ejemplo numérico: separar La4 y La♯4
Analizamos las dos notas del principio, sumadas y con la misma amplitud, a = 44,1 kHz. Están separadas 26,16 Hz. Los resultados de este cálculo con Python (FFT de los primeros puntos, ventana de Hann) son:
| Separación en casillas | Resultado | ||
|---|---|---|---|
| 1 024 | 43,1 Hz | 0,6 | Un solo pico en torno a 474 Hz: no se distinguen |
| 4 096 | 10,8 Hz | 2,4 | Dos picos (441,4 y 463,0 Hz), con solo 5 dB de valle entre ellos |
| 8 192 | 5,4 Hz | 4,9 | Dos picos limpios (441,4 y 468,3 Hz), con un valle de unos 39 dB |
Con 1 024 muestras, las dos notas caen prácticamente en la misma casilla. Con 8 192 se separan sin ambigüedad, pero cada análisis «promedia» 186 ms de música: si las notas fueran semicorcheas a ♩ = 120 (125 ms cada una), el espectro mezclaría dos notas consecutivas.
Fíjate también en que los picos no están exactamente en 440 y 466,16 Hz, sino en la casilla más próxima. Con = 4 096, 440 Hz cae en la casilla 40,87: entre la 40 (430,7 Hz) y la 41 (441,4 Hz). Para afinar la estimación se interpola entre la casilla máxima y sus vecinas; con una simple interpolación parabólica se obtiene 439,9 Hz, un error de apenas 0,1 Hz, muy inferior a la resolución nominal.
Las ventanas y la fuga espectral
Tomar muestras equivale a mirar la señal por una ventana rectangular: todo lo que queda fuera se pone a cero de golpe. Si la frecuencia no completa un número exacto de ciclos dentro del bloque (lo normal), los bordes crean un salto brusco y la energía de esa frecuencia se reparte por casillas lejanas. Es la fuga espectral (leakage).
En nuestro ejemplo, un tono de 440 Hz aislado con = 4 096 y sin ventana deja un rastro a −36 dB en 538 Hz y a −48 dB en 861 Hz. Un armónico débil de un instrumento real podría quedar escondido bajo esa «falda». Con una ventana de Hann, a esas mismas frecuencias el rastro baja a −75 y −113 dB.
La solución es multiplicar el bloque por una función de ventana que baje suavemente hasta cero en los extremos. La más usada es la de Hann:
Todas las ventanas negocian lo mismo: un lóbulo principal más ancho (cada pico ocupa más casillas y separa peor frecuencias próximas) a cambio de lóbulos laterales más bajos (menos fuga, más rango para ver componentes débiles).
| Ventana | Anchura del lóbulo principal (entre ceros) | Lóbulo lateral más alto | Uso típico |
|---|---|---|---|
| Rectangular | 2 casillas | −13 dB | Señales que encajan exactamente en el bloque |
| Hann | 4 casillas | −31 dB | Uso general en audio |
| Hamming | 4 casillas | −43 dB | Voz; lóbulos cercanos bajos |
| Blackman | 6 casillas | −58 dB | Componentes débiles junto a otros fuertes |
Por eso, en el ejemplo, con = 4 096 la ventana de Hann dejaba solo 5 dB de valle entre La4 y La♯4: con 2,4 casillas de separación, los lóbulos principales, de 4 casillas de ancho, se solapan. Hay otras ventanas especializadas (Blackman-Harris, Kaiser, flat top), pero estas cuatro cubren casi todos los usos musicales.
El espectrograma
Para ver cómo cambia el sonido, se hace una FFT tras otra sobre ventanas sucesivas, normalmente solapadas un 50-75 % para no perder lo que ocurre en los bordes. Es la transformada de Fourier de tiempo corto (STFT). Colocando esos espectros uno al lado de otro obtienes el espectrograma: tiempo en horizontal, frecuencia en vertical y amplitud en color, normalmente en decibelios.
Cómo leerlo, a grandes rasgos:
- Líneas horizontales paralelas: los armónicos de una nota mantenida. Su separación vertical es la fundamental.
- Líneas onduladas: vibrato. Se ve mejor en los armónicos agudos, porque la oscilación en hercios crece con el número de armónico.
- Trazos verticales: ataques y transitorios, como golpes de percusión o consonantes.
- Manchas difusas: ruido, como el soplo de una flauta o una «s».
- Bandas reforzadas que no se mueven con la nota: formantes.
Muchos programas permiten mostrar el eje de frecuencias en escala logarítmica, que coincide con cómo percibimos la altura: cada octava ocupa el mismo espacio. Así se leen mejor las melodías; la escala lineal, en cambio, muestra los armónicos igualmente espaciados.
Con el micrófono del dispositivo: espectro y espectrograma en tiempo real, con elección del tamaño de la FFT (de 512 a 16 384 muestras), de la ventana (rectangular, Hann, Hamming, Blackman) y de la escala lineal o logarítmica, para comprobar en tu propio instrumento el compromiso entre tiempo y frecuencia.
Usos musicales del análisis espectral
- Afinadores. Muchos estiman la frecuencia fundamental a partir de la FFT con interpolación; otros usan métodos en el dominio del tiempo, como la autocorrelación, que buscan el periodo de la onda. Conocer las limitaciones explica por qué un afinador «duda» en las notas más graves: sus armónicos están muy juntos y el análisis necesita más tiempo. Las desviaciones se expresan en cents.
- Análisis de timbre y de interpretación. El espectrograma muestra el brillo de un trompetista, el vibrato de una cantante o los formantes de la voz. Es una herramienta habitual en pedagogía vocal y en investigación sobre la interpretación.
- Ecualización y mezcla. Los analizadores en tiempo real ayudan a localizar resonancias molestas o conflictos de frecuencias entre instrumentos. En acústica de salas, el análisis espectral de respuestas al impulso permite medir la reverberación por bandas.
- Música espectral. En los años setenta, compositores como Gérard Grisey y Tristan Murail partieron del análisis espectral de sonidos instrumentales para construir sus obras. Partiels (1975), de Grisey, orquesta el espectro de un Mi grave de trombón. Kaija Saariaho, formada en el IRCAM, trabajó con el análisis espectral en muchas de sus obras.
- Procesado. La compresión con pérdida, la reducción de ruido, el cambio de tono sin cambiar la duración y muchos efectos trabajan en el dominio de la frecuencia: FFT, modificación del espectro y FFT inversa. También la síntesis de sonido aditiva puede hacerse de esta forma.
Ejercicios
Ejercicio 1. A 48 kHz, ¿qué tamaño de FFT (potencia de 2) necesitas como mínimo para que la resolución sea mejor que 5 Hz? ¿Cuánto dura ese bloque?
Ver solución
. La potencia de 2 siguiente es 16 384, que da Hz. El bloque dura s. (Con 8 192 muestras, Hz, que no basta.)
Ejercicio 2. Con fs = 44,1 kHz y N = 2 048, ¿a qué frecuencia corresponde la casilla 20? ¿En qué casilla cae aproximadamente el La4 de 440 Hz?
Ver solución
El La4 cae entre las casillas 20 y 21, más cerca de la 20.
Ejercicio 3. Quieres ver en un espectrograma los armónicos separados de un Mi1 de contrabajo (41,2 Hz) con una ventana de Hann, cuyo lóbulo principal mide 4 casillas. ¿Qué N mínimo (potencia de 2) necesitas a 44,1 kHz para que la separación entre armónicos sea de al menos 4 casillas?
Ver solución
Hace falta Hz, es decir, . La potencia de 2 siguiente es 8 192 ( Hz, casi 8 casillas entre armónicos). Cada análisis abarca unos 186 ms.
Ejercicio 4. Analizas un tono de flauta muy puro acompañado de un armónico 60 dB más débil, cerca de la fundamental. ¿Qué ventana elegirías de la tabla? ¿Por qué no la rectangular?
Ver solución
La de Blackman: su lóbulo lateral más alto está a −58 dB y cae deprisa, así que el componente débil no queda tapado por la fuga de la fundamental. Con la rectangular, los lóbulos laterales (a partir de −13 dB) esconderían por completo un componente 60 dB más débil cercano.
Fuentes y bibliografía
- Cooley, J. W. y Tukey, J. W. (1965). «An algorithm for the machine calculation of complex Fourier series». Mathematics of Computation, 19(90), 297-301.
- Harris, F. J. (1978). «On the use of windows for harmonic analysis with the discrete Fourier transform». Proceedings of the IEEE, 66(1), 51-83.
- Gabor, D. (1946). «Theory of communication». Journal of the Institution of Electrical Engineers, 93(26), 429-457.
- Smith, J. O. (2011). Spectral Audio Signal Processing. Stanford: W3K Publishing (edición en línea en CCRMA).
- Roads, C. (1996). The Computer Music Tutorial. Cambridge (Massachusetts): MIT Press.
- Rossing, T. D., Moore, F. R. y Wheeler, P. A. (2002). The Science of Sound (3.ª ed.). San Francisco: Addison-Wesley.
Preguntas frecuentes
¿Qué es la FFT?
Es la transformada rápida de Fourier (Fast Fourier Transform), un algoritmo que calcula la transformada discreta de Fourier de un bloque de N muestras con del orden de N·log₂N operaciones en lugar de N². Con ella se obtiene el espectro de un fragmento de sonido de forma casi instantánea.
¿Qué resolución en frecuencia tiene una FFT?
La separación entre los puntos del espectro es fs/N, la frecuencia de muestreo dividida entre el tamaño de la ventana. A 44,1 kHz, una FFT de 4 096 muestras da puntos cada 10,8 Hz y abarca unos 93 ms de sonido.
¿Para qué sirve una función de ventana?
Para suavizar los bordes del fragmento analizado. Si se corta la señal de golpe, la energía de cada frecuencia se esparce por todo el espectro (fuga espectral). Ventanas como la de Hann o la de Blackman reducen mucho esa fuga, a cambio de ensanchar un poco cada pico.
¿Qué es un espectrograma?
Es la representación del espectro a lo largo del tiempo. Se calcula haciendo FFT sucesivas sobre ventanas solapadas y colocándolas una junto a otra, con el tiempo en horizontal, la frecuencia en vertical y la amplitud en color.
¿Qué ventana de FFT debo usar para analizar música?
La de Hann es una buena opción general. Si buscas componentes débiles junto a otros muy fuertes, la de Blackman ofrece más rango. La rectangular (sin ventana) solo conviene en casos especiales, como señales periódicas que encajan exactamente en la ventana.