Quali sono i modi migliori per rilevare il clipping del segnale in una registrazione?


32

Data una registrazione, devo rilevare se si è verificato un clipping.

Posso concludere con sicurezza che c'è stato un clipping se uno o più campioni raggiungono il valore massimo del campione o devo cercare una serie di campioni successivi al massimo livello?

La registrazione può essere presa da convertitori A / D a 16 o 24 bit e convertiti in valori in virgola mobile compresi tra . Se questa conversione assume la forma di una divisione per o , allora presumibilmente i picchi negativi possono essere leggermente inferiori a -1 e i campioni con il valore -1 non vengono ritagliati?2 15 - 1 2 23 - 11...121512231

Ovviamente si può sempre creare un segnale specifico per sconfiggere l'algoritmo di rilevamento del clipping, ma sto guardando le registrazioni di parlato, musica, onde sinusoidali o rumore rosa / bianco.


8
Tieni presente che il livello di ritaglio non è sempre il massimo digitale. Se il circuito analogico (o anche il lato analogico dell'ADC) ha un livello di clipping leggermente inferiore rispetto al massimo digitale, si taglierà in anticipo. Se si aggancia in analogico e quindi passa attraverso alcuni filtri, non sarà nemmeno una linea retta. Quali scenari devi rilevare?
endolith,

1
Le registrazioni vengono effettuate con un dispositivo audio per PC (generalmente collegato tramite USB). Principalmente sono risposte a uno sweep o uno stimolo MLS e sono utilizzate per calcolare una risposta all'impulso nella stanza. Non controllo l'hardware, quindi il clipping potrebbe persino verificarsi all'uscita dello stimolo. Non ci avevo pensato prima, ma sono contento che tu ci abbia pensato.
Han,

Risposte:


30

Stavo scrivendo una risposta più o meno esattamente come quella di Yoda . È probabilmente il più affidabile, ma ti proporrò una soluzione diversa in modo da avere alcune opzioni.


Se prendi un istogramma del tuo segnale, molto probabilmente avrai una campana o un triangolo simile alla forma a seconda del tipo di segnale. I segnali puliti tenderanno a seguire questo schema. Molti studi di registrazione aggiungono un effetto "loudness" che provoca un piccolo bernoccolo vicino alla parte superiore, ma è ancora piuttosto liscio. Ecco un esempio di una vera canzone di un grande musicista:

Istogramma

Ecco l'istogramma del segnale che Yoda fornisce nella sua risposta:

Istogramma senza ritaglio

E ora il caso del loro ritaglio:

Istogramma con ritaglio

Questo metodo può essere ingannato a volte, ma è almeno qualcosa da mettere nella borsa degli attrezzi per situazioni in cui il metodo FFT non sembra funzionare per te o è troppi calcoli per il tuo ambiente.


2
Questo è un pazzo effetto fantastico. Molto interessante.
Kortuk,

Sono contento che tu abbia suggerito questo metodo. Avrei dovuto includerlo anch'io ...
PearsonArtPhoto,

Lo dico proprio perché questo sembra essere il metodo più implementabile. È una forma applicata delle altre opzioni fornite, ma sembra che il segnale di "errore" sia molto più chiaro.
Kortuk,

1
Potrebbe anche prendere prima il valore assoluto del segnale e ottenere un istogramma unilaterale più uniforme
endolith

Le dita mi fanno male per provare questo sui miei segnali. Grazie.
Han,

20

La risposta più semplice se hai a che fare con registrazioni brevi è ascoltarla e rilevare "pop" (suono a spillo corto) nella riproduzione. Tuttavia, una soluzione più solida consiste nell'analizzare lo spettro di frequenza della registrazione.

Ricordiamo che quando un segnale viene troncato ad una certa soglia, ricorda localmente un'onda quadra nelle regioni troncate. Ciò introduce armoniche più elevate nello spettro delle frequenze che non sarebbero state originariamente presenti. Se il tuo segnale è a banda larga (la maggior parte dei segnali del mondo reale lo sono) e stai campionando molto al di sopra della frequenza di Nyquist, allora questo si distingue abbastanza chiaramente come il giorno.

Ecco un breve esempio in MATLAB che lo dimostra. Qui, creo un segnale bandlimited della durata di 1s, campionato a 1000Hz, e poi lo taglio tra ±0.8(vedi la trama in alto nella figura sotto)

time = 0:0.001:1;
cleanSignal = sin(2*pi*75*time).*chirp(time,50,1,200);
clippedSignal = min(abs(cleanSignal),0.8).*sign(cleanSignal);

inserisci qui la descrizione dell'immagine

Si può vedere chiaramente che lo spettro di frequenza della forma d'onda originale non ruotata è pulito e va a zero al di fuori della larghezza di banda (in basso a sinistra), mentre nel segnale troncato c'è una lieve distorsione generale dello spettro (prevista se troncata) e la maggior parte soprattutto, armoniche / picchi / contributi più elevati nello spettro al di fuori della larghezza di banda del segnale (in basso a destra).

Questo potrebbe generalmente essere un approccio migliore, perché il rilevamento del clipping osservando i valori non è generalmente accurato a meno che se non si sia progettato l'apparecchiatura da soli e si conoscano esattamente il valore della soglia.


1
Alcuni dei miei segnali (in particolare l'MLS) arrivano fino alla frequenza di Nyquist. Quindi questo metodo probabilmente non è sempre applicabile per me.
Han,

@yoda Con gli spettri in mano, come si fa a dire che uno spettro è 'sporco' come hai indicato? Quale test si può eseguire?
Spacey,

9

Un po 'di questo dipende dal metodo di registrazione. Sembra che tu stia usando solo 1 convertitore, il che semplifica un po 'le cose.

Dovresti cercare qualsiasi cosa al di sopra di una certa soglia e in particolare più di un punto uno accanto all'altro. In genere, i convertitori A / D in realtà non leggono il loro valore massimo a meno che non lo testiate in modo molto preciso, quindi rendetevi conto che il valore massimo potrebbe essere inferiore a quanto sembra possibile.

Dati i tuoi parametri, cercherei segnali consecutivi superiori a .98 o inferiori a -.98, con alcune modifiche per determinare quale dovrebbe essere la soglia ottimale (non la porterei sotto .9). Potrebbe essere saggio rilevarne uno al massimo e un altro vicino su qualcosa come .8.

Il motivo per ignorare 1 misura specifica è che è comune che si verifichino picchi che non hanno nulla a che fare con il segnale. Ciò verrà ridotto nel caso in cui si stia utilizzando un convertitore A / D valido noto. È probabile che se si utilizza un array di rivelatori o un'immagine, alcuni rilevatori saranno danneggiati, potenzialmente ritagliando frequentemente.


Consigli molto pratici qui. Insieme all'approccio di @ Kellenjb questo dovrebbe darmi abbastanza per iniziare a lavorare su un'implementazione.
Han,

3

Le MLS (sequenze di lunghezza massima) sono particolarmente difficili da analizzare per il ritaglio. Il loro fattore di cresta (= picco / rms) è molto vicino a 1, che è anche tre dB più piccolo di quello di un'onda sinusoidale. Molti convertitori D / A sono progettati per prendere un'onda sinusoidale come il caso peggiore e un MLS riprodotto a piena ampiezza può facilmente agganciare il circuito di interpolazione di uscita di un D / A.

Il prossimo problema è che una MLS ritagliata sembra quasi identica a una non ritagliata poiché le ampiezze sono quasi tutte + -peak in primo luogo. Anche l'analisi PDF non funziona poiché il PDF di un MLS è semplicemente due grandi picchi ai bordi.

In una tipica misurazione della risposta all'impulso nella stanza, il punto di clipping più probabile è in realtà il D / A, l'amplificatore o l'altoparlante. Una volta che ha attraversato la stanza sembra molto meno simile a un MLS e quindi è più facile valutare il clipping con i metodi sopra descritti.

In quasi tutte le misurazioni acustiche il rumore di fondo è determinato dal rumore del microfono o dai rumori di fondo e non dall'A / D. Pertanto, non è molto importante ottimizzare il guadagno in ingresso nell'A / D e lasciare un ampio spazio per la testa prima che il clipping (circa 10 dB) vada perfettamente bene.

In genere è una buona idea misurare con un numero di diversi livelli di eccitazione e guardare il SNR della misurazione. A bassi livelli domina il rumore di fondo acustico e ad alti livelli qualcosa limita, comprime o taglia. Il trucco per fare una buona misurazione è trovare un buon punto in mezzo.

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.