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);
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.