Quels sont les bons moyens de détecter l'écrêtage du signal dans un enregistrement?


32

Étant donné un enregistrement, je dois détecter si une coupure s'est produite.

Puis-je conclure en toute sécurité qu'il y a eu des coupures si un (un) échantillon atteint la valeur maximale de l'échantillon, ou dois-je rechercher une série d'échantillons ultérieurs au niveau maximal?

L'enregistrement peut être prise à partir de 16 ou 24 bits des convertisseurs A / D, et sont converties en valeurs à virgule flottante allant de . Si cette conversion prend la forme d'une division par 2 15 - 1 ou 2 23 - 1 , alors les pics négatifs peuvent vraisemblablement être un peu inférieurs à -1 et les échantillons de valeur -1 ne sont pas tronqués?1...121512231

Évidemment, on peut toujours créer un signal spécifiquement pour neutraliser l'algorithme de détection d'écrêtage, mais je regarde des enregistrements de parole, de musique, d'ondes sinusoïdales ou de bruit rose / blanc.


8
Gardez à l'esprit que le niveau de découpage n'est pas toujours le maximum numérique. Si le circuit analogique (ou même le côté analogique de l'ADC) a un niveau d'écrêtage légèrement inférieur à celui de la résolution max, il coupera plus tôt. S'il coupe en mode analogique puis passe par un filtrage, il ne s'agira même pas d'une ligne droite. Quels scénarios devez-vous détecter?
endolith

1
Les enregistrements sont réalisés avec un périphérique audio PC (généralement connecté via USB). Ce sont principalement des réponses à un stimulus de balayage ou MLS et utilisées pour calculer une réponse impulsionnelle de la pièce. Je ne contrôle pas le matériel, donc l'écrêtage peut même se produire à la sortie du stimulus. Je n'y ai pas pensé plus tôt, mais je suis content que vous ayez pensé à cela.
Han

Réponses:


30

J'étais en train de taper une réponse à peu près exactement comme celle de Yoda . Il est probablement le plus fiable, mais je vais vous proposer une solution différente pour que vous ayez quelques options.


Si vous prenez un histogramme de votre signal, vous aurez probablement une forme en forme de cloche ou de triangle en fonction du type de signal. Des signaux clairs auront tendance à suivre ce modèle. De nombreux studios d’enregistrement ajoutent un effet de «volume» qui provoque une petite bosse près du sommet, mais l’apparence est quelque peu lisse. Voici un exemple tiré d'une vraie chanson d'un musicien majeur:

L'histogramme

Voici l'histogramme du signal que Yoda donne dans sa réponse:

Histogramme sans découpage

Et maintenant le cas de leur coupure:

Histogramme avec coupure

Cette méthode peut parfois être trompée, mais il est au moins quelque chose à jeter dans votre boîte à outils dans les cas où la méthode FFT ne semble pas fonctionner pour vous ou représente trop de calculs pour votre environnement.


2
C'est un effet génial fou. Très intéressant.
Kortuk

Je suis content que vous ayez suggéré cette méthode. J'aurais dû l'inclure moi-même ...
PearsonArtPhoto Le

Je dis cela précisément parce que cela semble être la méthode la plus applicable. C'est une forme appliquée des autres options données, mais cela donne l'impression que le signal "erreur" est beaucoup plus clair.
Kortuk

1
Vous pourriez aussi bien prendre la valeur absolue du signal en premier et obtenir un histogramme lisse plus uniforme
endolithe

Mes doigts me démangent d'essayer ceci sur mes signaux. Merci.
Han

20

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

entrez la description de l'image ici

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.


1
Certains de mes signaux (notamment le MLS) vont jusqu’à la fréquence de Nyquist. Donc, cette méthode n'est probablement pas toujours applicable pour moi.
Han

@yoda Avec les spectres en main, comment peut-on dire qu'un spectre est "sale" comme vous l'avez indiqué? Quel test peut-on effectuer?
Spacey

9

Cela dépend un peu de la méthode d’enregistrement. On dirait que vous utilisez seulement 1 convertisseur, ce qui simplifie un peu les choses.

Vous devez rechercher tout ce qui dépasse un certain seuil, et plus particulièrement un ou plusieurs points adjacents. En règle générale, les convertisseurs A / N ne lisent pas leur valeur maximale à moins que vous ne la testiez de manière très précise. Réalisez donc que la valeur maximale peut être inférieure à ce qui semble possible.

Compte tenu de vos paramètres, je rechercherais des signaux consécutifs supérieurs à 0,98 ou inférieurs à -,98, avec quelques ajustements pour déterminer le seuil optimal (je ne le ferais pas passer en dessous de 0,9). Il serait peut-être sage d'en détecter un au maximum et un autre à proximité, par exemple 0,8.

La raison pour laquelle on ignore une mesure spécifique est qu’il est fréquent que des pointes se produisent qui n’ont absolument rien à voir avec le signal. Cela sera réduit si vous utilisez un bon convertisseur A / N connu. Il est probable que si vous utilisez une matrice de détecteurs, ou une image, certains détecteurs seront défectueux, voire potentiellement coupants.


Conseil très pratique ici. Avec l'approche de @ Kellenjb, cela devrait me permettre de travailler sur une implémentation.
Han

3

Les séquences MLS (séquences de longueur maximale) sont particulièrement difficiles à analyser. Leur facteur de crête (= pic / valeur efficace) est très proche de 1, ce qui est même inférieur de trois dB à celui d'une onde sinusoïdale. De nombreux convertisseurs N / A sont conçus pour prendre une onde sinusoïdale dans le cas le plus défavorable et une MLS jouée à pleine amplitude peut facilement couper le circuit d'interpolation de sortie d'un convertisseur N / A.

Le problème suivant est qu’un MLS découpé est presque identique à un non découpé puisque les amplitudes sont presque toutes très basses en premier lieu. De plus, l'analyse PDF ne fonctionne pas car le PDF d'une MLS est simplement deux grands pics sur les bords.

Dans une mesure de réponse impulsionnelle typique d'une pièce, le point de coupure le plus probable est en fait le convertisseur N / A, l'ampli ou le haut-parleur. Une fois qu’elle a traversé la pièce, elle ressemble beaucoup moins à une MLS et il est donc plus facile d’évaluer le découpage à l’aide des méthodes décrites ci-dessus.

Dans presque toutes les mesures acoustiques, le bruit de fond est déterminé par le bruit propre du microphone ou par les bruits de fond et non par le convertisseur A / N. Par conséquent, il n’est pas très important d’optimiser le gain d’entrée dans le convertisseur A / N et de laisser une marge suffisante avant l’écrêtage (environ 10 dB) ne pose aucun problème.

C'est généralement une bonne idée de mesurer avec un nombre de niveaux d'excitation différents et de regarder le SNR de la mesure. Aux niveaux bas, le bruit de fond acoustique domine et aux niveaux élevés, quelque chose va limiter, compresser ou écraser. Le truc pour bien mesurer est de trouver un bon endroit entre les deux.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.