Normalizzazione audio


8

Ho una registrazione in formato pcm e voglio fare qualche semplice analisi.

Ho alcune domande su cosa sia la normalizzazione. Per quanto ho capito è quello di ottenere tutte le ampiezze tra un intervallo cioè [-1, 1]

Il modo ovvio per farlo è:

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

Ho letto della normalizzazione RMS. Qualcuno può spiegare come è fatto?

Inoltre, potresti spiegare qual è il vantaggio della normalizzazione?

Risposte:


9

Il tuo codice di normalizzazione non è corretto. Se il segnale di input ha un grande calo (diciamo un valore negativo a -5,0), il tuo codice non lo rileverà e avrai comunque valori al di fuori di [-1, 1]. Utilizzare invece max (abs (array_of_amplitudes)). Prima della normalizzazione, si consiglia inoltre di rimuovere qualsiasi offset CC che potrebbe avere il segnale.

La normalizzazione RMS consiste nel calcolare il livello RMS (radice-media-quadrato) su finestre a breve termine, prendendo il massimo di quei valori e dividendo il segnale per il massimo. Questo non garantisce che il risultato sia compreso tra [-1, 1] - dovrai tagliare i valori al di fuori di questo. Il vantaggio è che è più robusto per gli outlier nel segnale. Supponiamo che tu abbia una registrazione relativamente silenziosa, con solo un breve picco a 1.0 da qualche parte a causa di un errore del driver della scheda audio o di un "pop" temporaneo sul microfono. La normalizzazione non influirà sul livello del segnale (è già normalizzato poiché il massimo è 1.0); mentre la normalizzazione RMS aumenterà ancora il suo livello (e il "pop" causerà il clipping).

Per quanto riguarda le applicazioni:

  • Nella registrazione / riproduzione audio, la normalizzazione è importante perché garantisce l'utilizzo dell'intera gamma dinamica dei convertitori di uscita. Se si riproduce un segnale con un picco a 0,25 attraverso un DAC a 16 bit, non si utilizzano i 2 bit superiori del convertitore (che sarà sempre 0) e quindi si aumenta il rumore di quantizzazione di 12 dB.
  • In alcune attività di classificazione audio (come il riconoscimento delle emozioni, la classificazione del genere musicale o persino il riconoscimento vocale), l'ampiezza / volume potrebbe essere usato come caratteristica. Quindi, vuoi davvero che tutti i file di input siano "calibrati" in modo simile in termini di livello.

+1. Altri vantaggi sono evitare l'overflow (non troppo comune con il virgola mobile, ma può accadere) e l'analisi (sai esattamente quanto è forte uno 0,8 normalizzato, mentre chissà quanto è forte / debole un 1082 non normalizzato?).
Jim Clay,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.