Normalización de audio.

8

Tengo una grabación en formato pcm y quiero hacer un análisis simple.

Tengo algunas preguntas sobre qué es la normalización. Según tengo entendido, es obtener todas las amplitudes entre un rango, es decir, [-1, 1]

La forma obvia de hacerlo es:

max_amplitude = max(array_of_amplitudes)
for amplitude in array_of_amplitudes:
   amplitude = amplitude / max_amplitude

Leí sobre la normalización de RMS. ¿Alguien puede explicar cómo se hace?

Además, ¿podría explicar cuál es el beneficio de la normalización?

gosom
fuente

Respuestas:

9

Su código de normalización es incorrecto. Si la señal de entrada tiene una gran caída (digamos un valor negativo en -5.0), su código no lo detectará y aún tendrá valores fuera de [-1, 1]. Utilice max (abs (array_of_amplitudes)) en su lugar. Antes de la normalización, también se recomienda eliminar cualquier compensación de CC que pueda tener la señal.

La normalización de RMS consiste en calcular el nivel RMS (raíz-media cuadrática) en ventanas a corto plazo, tomar el máximo de esos valores y dividir la señal entre el máximo. Esto no garantizará que el resultado se encuentre dentro de [-1, 1]. Tendrá que recortar los valores fuera de este. El beneficio es que es más robusto a los valores atípicos en la señal. Supongamos que tiene una grabación relativamente silenciosa, con solo un pequeño pico en 1.0 en algún lugar debido a una falla del controlador de la tarjeta de sonido o un "pop" temporal en el micrófono. La normalización no afectará el nivel de la señal (ya está normalizada ya que el máximo es 1.0); mientras que la normalización de RMS seguirá aumentando su nivel (y el "pop" causará recorte).

En cuanto a las aplicaciones:

  • En la grabación / reproducción de audio, la normalización es importante porque garantiza que se utilice el rango dinámico completo de los convertidores de salida. Si reproduce una señal que alcanza un máximo de 0.25 a través de un DAC de 16 bits, no está utilizando los 2 bits superiores de su convertidor (que siempre será 0) y, por lo tanto, aumenta su ruido de cuantización en 12dB.
  • En algunas tareas de clasificación de audio (como el reconocimiento de emociones; clasificación de género musical; o incluso el reconocimiento de voz), la amplitud / volumen puede usarse como una característica. Por lo tanto, realmente desea que todos los archivos de entrada se "calibren" de manera similar en términos de nivel.
pichenettes
fuente
+1. Otros beneficios son evitar el desbordamiento (no es muy común con el punto flotante, pero puede suceder) y el análisis (¿sabe exactamente qué tan "fuerte" es un 0.8 normalizado, mientras que quién sabe qué tan fuerte / débil es un 1082 no normalizado?).
Jim Clay