¿Qué hace soundcheck?
El video con IA parece terminado mucho antes de que el audio lo esté. Las tomas de TTS se unen a diferentes niveles, la cama musical nunca se comprime, la mezcla se fuerza en el limitador para sonar "fuerte", y la voz de IA mantiene su siseo de 6-10 kHz y su retumbo de 100-300 Hz.
soundcheck convierte eso en números, lo corrige y demuestra la corrección.
Ejecútalo
python scripts/soundcheck.py analyze <archivo> [--target youtube] [--music musica.wav] [--json]
python scripts/soundcheck.py fix <archivo> [--target youtube] [--music musica.wav] [--out salida.wav] [--level] [--naturalize]
python scripts/soundcheck.py demo
fix necesita ffmpeg en el PATH. analyze y demo solo requieren Python 3 + numpy (scipy se usa para filtrado más rápido cuando está presente).
Dale a fix un video y devuelve un video: el audio corregido se multiplexa contra el flujo de video original (copiado, nunca recodificado). Sin --out escribe <nombre>.soundcheck.mp4 junto al archivo fuente.
--level iguala el nivel de tomas de voz separadas antes de masterizar. Úsalo para diálogo grabado o sintetizado línea por línea; no lo uses en contenido musical, donde un crescendo o un descenso es parte del arreglo, no un defecto. analyze imprime las marcas de tiempo de los mayores saltos entre tomas para que puedas decidir.
Verifica antes de confiar
python scripts/verify.py # 20 comprobaciones, salida 0 = todo correcto
La suite verifica que nuestros medidores coincidan con el ebur128 de ffmpeg, que fix salga 0 solo cuando todas las señales pasen, que el archivo entregado se mida nuevamente con un medidor independiente, que la dinámica no se aplaste, y que el silencio / clips cortos / mono 24-bit / mp4 / archivos faltantes se comporten correctamente. Si falla en tu máquina, arréglalo antes de tocar el audio de nadie.
Cuando proceses material real, siempre haz una comparación A/B. El cumplimiento medido es necesario, no suficiente.
Flujo de trabajo
- Mide antes de tocar nada. Ejecuta
analyze. Nunca empieces a ecualizar desde una suposición. - Lee la tarjeta de puntuación, no la puntuación. La puntuación es un resumen; las señales que fallan son el trabajo.
- Corrige. Ejecuta
fix --target <plataforma>. Elige la profundidad correctiva de EQ a partir de la medición, aplica la cadena, calcula una ganancia estática a partir de nuestra propia medición de sonoridad, limita y vuelve a medir. - Verifica.
fixsale no-cero cuando alguna señal medida sigue fuera de especificación. No informes "listo" con una salida no-cero; informa las señales restantes. - Compara A/B. Conserva el original. Si la corrección suena peor que el problema (sobre-EQ, bombeo), reduce la profundidad correctiva y vuelve a ejecutar. El cumplimiento medido es necesario, no suficiente.
Las 7 Señales de Audio Artificial
| # | Señal | Medida como | Objetivo | Causa habitual |
|---|---|---|---|---|
| 1 | Desigualdad de nivel entre tomas | Niveles en banda de voz, delta adyacente | <= 3 dB | Tomas TTS renderizadas por separado |
| 2 | Sin margen dinámico | Pico verdadero | <= -1 dBTP | Masterización "hazlo fuerte" |
| 3 | Conflicto voz/música | LUFS voz - LUFS música | >= 4 dB | Sin compresión lateral |
| 4 | Sibilancia áspera | Energía 6-10 kHz / 1-4 kHz | <= 0.45 | /s/ y /sh/ sintéticos |
| 5 | Barro de medios graves | Energía 100-300 Hz / 300-3k | <= 0.40 | Retumbo de proximidad, cama de graves fuerte |
| 6 | Sin suelo, sin espacio | Piso de ruido vs nivel de programa | >= 45 dB por debajo | Artefactos de denoising, ruido de ambiente apilado |
| 7 | Problemas de fase/DC | Correlación L/R, offset DC | corr >= 0.2 | Tomas concatenadas, remuestreo |
La señal 3 solo se ejecuta cuando pasas --music con una pista de música aislada. La señal 6 informa n/a cuando el material no tiene pasajes silenciosos; la música suave no es ruido, y un "no se puede evaluar" honesto no es un aprobado. La señal 1 informa dónde están los saltos más grandes, para que un humano pueda escuchar.
Escalera de sonoridad
| Entrega | Integrada | Pico verdadero | Notas |
|---|---|---|---|
| YouTube / TikTok / Reels | -14 LUFS | -1 dBTP | Las plataformas normalizan aquí |
| Spotify | -14 LUFS | -1 dBTP | |
| Apple Music | -16 LUFS | -1 dBTP | |
| Podcast (estéreo / mono) | -16 / -19 LUFS | -1 dBTP | |
| Broadcast (EBU R128) | -23 LUFS | -1 dBTP | |
| Drama corto / OTT (CN) | -24 LKFS | -1 dBTP | |
| Cine | -27 LUFS | -2 dBTP | anclado al diálogo |
Orden de la cadena (importa)
pasa altos 70 Hz -> EQ sustractivo (barro, luego sibilancia) -> compresión suave -> limitador -> ganancia estática -> limitador
- La profundidad correctiva de EQ se deriva de la señal medida, no de un preajuste fijo.
- La compresión es suave a propósito (2.5:1, ~3-6 dB de reducción de ganancia). Esto es postproducción, no diseño de sonido.
- La ganancia se aplica después de la cadena correctiva y se mide en la salida de la cadena, para que el archivo entregado cumpla con la especificación incluso cuando el EQ cambió la sonoridad.
- El limitador se sitúa en 0.79 (-2 dBFS pico de muestra) para sobrevivir a los picos de sobremuestreo a -1 dBTP.
Barreras de protección
- Nunca afirmes éxito sin una medición nueva. El código de salida del script es la fuente de la verdad.
- No recodifiques con pérdida dos veces. Decodifica a WAV una vez, trabaja en WAV, codifica una vez al final.
- No sobremuestrees para fingir calidad. Salida a 48 kHz; la tasa interna de 192 kHz de loudnorm no es una característica.
- No aplastes la dinámica para alcanzar un número. Si alcanzar -14 LUFS requiere >6 dB de limitación, dilo y entrega -16 en su lugar: una mezcla aplastada es peor que una silenciosa.
- Las pistas musicales se mantienen separadas. Comprimir una pista mixta destruye la voz; pide las pistas individuales.
- Conserva el original. Siempre escribe en un archivo nuevo.
Lo que esto no puede corregir
analyze imprime una advertencia cuando la fuente casi no tiene energía por encima de 8 kHz: la firma de un TTS de 16/22 kHz pasado a través de una sesión de 48 kHz. Esa opacidad no es un problema de masterización y ningún EQ la recupera. Si se dispara la advertencia, dilo en lugar de "corregido": renderiza la voz nuevamente con un TTS neuronal, luego masteriza.
--naturalize añade una pequeña sala, un suelo de respiración/ruido de ambiente y un poco de aire en alta frecuencia. Elimina la señal de "seco, digitalmente silencioso"; no puede inventar prosodia y no rescatará una fuente robótica. Nunca lo habilites por defecto en contenido musical.
Límites
- La señal de "cama musical" necesita una pista aislada; sin ella, el balance voz/música no se mide.
- El piso de ruido solo es significativo cuando hay pasajes realmente silenciosos.
- El pico verdadero está sobremuestreado 4x; los radiodifusores que requieran 8x deben verificar con su propio medidor.
- Esto es una herramienta de entrega, no una mezcla creativa. No hará buena una interpretación mala.