La réponse la plus simple si vous traitez de courts enregistrements est de l'écouter et de détecter les "éclaboussures" (sons de courte durée) dans la lecture. Cependant, une solution plus robuste consiste à analyser le spectre de fréquence de l'enregistrement.
Rappelez-vous que lorsqu'un signal est écrêté à un certain seuil, il ressemble localement à une onde carrée dans les régions écrêtées. Cela introduit des harmoniques plus élevées dans le spectre de fréquences qui n'y auraient pas été à l'origine. Si votre signal est limité à la bande passante (la plupart des signaux du monde réel le sont) et que vous échantillonnez bien au-dessus du taux de Nyquist, cela apparaît clairement comme le jour.
Voici un court exemple de MATLAB démontrant cela. Ici, je crée un signal de bande illimitée d’une durée de 1 seconde, échantillonné à 1000Hz, puis le coupe entre ±0.8
(voir le tracé en haut dans la figure ci-dessous).
time = 0:0.001:1;
cleanSignal = sin(2*pi*75*time).*chirp(time,50,1,200);
clippedSignal = min(abs(cleanSignal),0.8).*sign(cleanSignal);
Vous pouvez clairement voir que le spectre de fréquence de la forme d’onde originale non coupée est propre et passe à zéro en dehors de la bande passante (en bas à gauche), alors que dans le signal écrêté, il existe une distorsion mineure générale du spectre (attendue si elle est écrêtée) plus important encore, les harmoniques / pointes / contributions non nulles plus élevées dans le spectre en dehors de la bande passante du signal (en bas à droite).
Cela peut généralement être une meilleure approche, car détecter l’écrêtage en examinant les valeurs n’est généralement pas précis, sauf si vous concevez vous-même l’équipement et connaissez précisément la valeur du seuil.