#!/bin/bash
# CULTIVA IA Podcast — SoX audio processing pipeline
# Episodios: ep001_raw.wav, ep002_raw.wav, ep003_raw.wav
set -euo pipefail
INPUT_DIR="./raw"
OUTPUT_DIR="./processed"
NOISE_PROF="./noise.prof"
# Paso 1: Crear directorio de salida
mkdir -p "$OUTPUT_DIR"
# Paso 2: Perfilar ruido de fondo (primeros 0.5s del ep001)
sox "$INPUT_DIR/ep001_raw.wav" -n noiseprof "$NOISE_PROF" trim 0 0.5
echo "[✓] Perfil de ruido generado: $NOISE_PROF"
# Paso 3: Procesar todos los episodios en lote
for f in "$INPUT_DIR"/*.wav; do
BASENAME=$(basename "$f" .wav)
OUTPUT="$OUTPUT_DIR/${BASENAME/_raw/}.mp3"
echo "→ Procesando: $BASENAME"
# Pipeline completo en un solo comando SoX:
# 1. noisered — eliminacion de ruido de fondo
# 2. highpass — corte de rumble < 80 Hz
# 3. compand — compresion dinamica
# 4. equalizer — realce de presencia en 3 kHz
# 5. norm -1 — normalizacion a -1 dBFS
# 6. fade t — fade-in 1s, fade-out 2s
# Output: MP3 192kbps, mono, 44.1 kHz
sox "$f" \
-C 192 -c 1 -r 44100 \
"$OUTPUT" \
noisered "$NOISE_PROF" 0.2 \
highpass 80 \
compand 0.3,1 "6:-70,-60,-20" -5 -90 0.2 \
equalizer 3000 1q +2dB \
norm -1 \
fade t 1 0 2
# Verificar output
soxi -d "$OUTPUT" | xargs -I{} echo " Duracion: {}"
echo " Tamano: $(du -sh "$OUTPUT" | cut -f1)"
done
echo "[✓] Pipeline completado. Archivos en: $OUTPUT_DIR"
Waveform — ep001 (fragmento 5-15s)
Rojo: RAW con noise & rumble / Cian: Procesado limpio
Espectro de Frecuencias — ep001
Energia por banda de frecuencia (RAW vs Procesado)
■ RAW
■ Procesado
2040801603006001k2k3k6k12k16k20k Hz
highpass 80 Hz elimina rumble de bajas; equalizer 3kHz +2dB realza la presencia vocal
noisered noise.prof 0.21
Elimina el ruido de ventilador y coches perfilado en los primeros 0.5s
Ruido eliminado82%
SNR: -32 dB → -50 dB (+18 dB mejora)
highpass 80
Filtro paso-alto que corta trepidaciones y rumble por debajo de 80 Hz
Sub-80Hz eliminado100%
Energia < 80Hz: -38 dBFS → muted
compand 0.3,1 6:-70,-60,-20
Compresor dinamico con attack 0.3s / release 1s, ratio 6:1 en voz baja
Reduccion dinamica±18→±3 dB
Dinamica: ±18 dB → ±3 dB (83% mas uniforme)
equalizer 3000 1q +2dB
Refuerza la presencia vocal a 3kHz para mayor claridad y articulacion
Claridad vocal+2 dB @ 3kHz
Inteligibilidad subjetiva: +15% (A/B test)
norm -1
Normaliza el pico maximo a -1 dBFS, dejando headroom para evitar clipping
Nivel pico-1.0 dBFS
Peak: variable (-0.8...-2.1) → constante -1.0
fade t 1 0 2
Fade-in lineal de 1s al inicio, fade-out lineal de 2s al final del episodio
Transicionesaplicadas
Inicio/fin suave — listo para RSS/Spotify