Procesamiento de audio en Python aplicando un filtro pasa bajas a archivos WAV usando la transformada de Fourier (DFT/FFT).
🌐 App en línea: Filtro de Fourier - Procesamiento de Audio
El proceso de filtrado realiza lo siguiente:
- Carga un archivo WAV.
- Convierte el audio a una señal de punto flotante.
- Calcula la transformada de Fourier (DFT/FFT) de la señal.
- Aplica un filtro pasa bajas conservando solo las componentes de frecuencia por debajo de un valor de corte.
- Calcula la transformada inversa (IDFT/IFFT) para reconstruir el audio filtrado.
- Normaliza y guarda el audio resultante en formato WAV.
Esta es la pieza central del proyecto: yupiter/audio_processing_notebook.ipynb, un notebook de Jupyter que implementa y explica paso a paso el filtro pasa bajas por Transformada Discreta de Fourier (DFT), incluyendo gráficas del espectro antes/después y reproducción del audio resultante.
audio_processing_notebook.ipynb— Notebook principal con todo el desarrollo.processed/— Carpeta de entrada: aquí se colocan los WAV que se quieren procesar. Incluye un audio de ejemplo (648112__deleted_user_12449013__vocals_animal1_key-fmin_bpm124_jennaevans.wav).resultado_template.txt— Plantilla HTML usada dentro del notebook para mostrar visualmente las métricas del resultado (archivo de entrada/salida, frecuencia de muestreo, duración, energía original y filtrada).
- Celda 1 — Definición de funciones:
lowpass_filter(data, fs, cutoff_freq=4000): recibe la señal cruda y devuelve la señal filtrada junto con los datos intermedios del espectro. Internamente: normaliza →fft()→ aplica máscara confftfreq→ifft()→ desnormaliza.- Función de graficado para visualizar el espectro y la señal original vs. filtrada.
- Función de procesamiento completo del archivo WAV.
- Celda 2 — Ejecución y resultados:
- Detecta automáticamente el WAV más reciente en
processed/. - Aplica el filtro con la frecuencia de corte elegida.
- Calcula la reducción de energía como porcentaje.
- Genera las gráficas y muestra el panel de métricas (usando
resultado_template.txt). - Reproduce el audio filtrado con el widget
IPython.display.Audio.
- Detecta automáticamente el WAV más reciente en
-
Colócate en la carpeta del notebook:
cd yupiter
-
Asegúrate de tener instaladas las dependencias necesarias:
pip install numpy scipy matplotlib jupyter
-
Coloca el archivo
.wavque quieras procesar dentro deprocessed/(ya viene uno de ejemplo). -
Abre el notebook:
jupyter notebook audio_processing_notebook.ipynb
-
Ejecuta las celdas en orden. El resultado filtrado se guarda automáticamente como
uploads/filtered_<nombre>.wavdentro deyupiter/.
- Si el audio es estéreo, el notebook toma solo el canal izquierdo para simplificar el procesamiento. Para procesar ambos canales sería necesario llamar a
lowpass_filterdos veces. - El archivo de entrada debe ser un WAV legible por
scipy.io.wavfile.
- Usa archivos WAV mono o estéreo; si son estéreo, solo se procesa el primer canal.
- El filtro pasa bajas elimina las frecuencias por encima del valor de corte seleccionado.
- Para audio de gran duración, el proceso puede tardar más.
- Colocar un archivo
ejemplo.wavenyupiter/processed/. - Ajustar
cutoff_freqa4000Hz. - Generar y obtener
audio_filtrado.wav.