Quelle méthodologie utiliser pour la discrimination des différents tons (musicaux?)

12

J'essaie de rechercher et de trouver la meilleure façon d'attaquer ce problème. Il chevauche le traitement de la musique, le traitement de l'image et le traitement du signal, et il existe donc une myriade de façons de le voir. Je voulais me renseigner sur les meilleures façons de l'aborder, car ce qui peut sembler complexe dans le domaine sig-proc pur peut être simple (et déjà résolu) par des gens qui font du traitement d'image ou de musique. Quoi qu'il en soit, le problème est le suivant:entrez la description de l'image ici

Si vous pardonnez à ma main de dessiner le problème, nous pouvons voir ce qui suit:

f1f4

f1

f1

Le problème est de savoir comment aborder ce problème, de telle sorte que je puisse écrire un classificateur qui puisse faire la distinction entre signal-1, signal-2 et signal-3. Autrement dit, si vous lui fournissez l'un des signaux, il devrait pouvoir vous dire que ce signal est tel ou tel. Quel meilleur classificateur me donnerait une matrice de confusion diagonale?

Un contexte supplémentaire et ce à quoi j'ai pensé jusqu'à présent:

Comme je l'ai dit, cela chevauche un certain nombre de domaines. Je voulais savoir quelles méthodologies pourraient déjà exister avant de m'asseoir et de partir en guerre avec cela. Je ne veux pas réinventer la roue par inadvertance. Voici quelques réflexions que j'ai eues à partir de différents points de vue.

Point de vue du traitement du signal: Une chose que j'ai regardée était de faire une analyse cepstrale , puis d'utiliser éventuellement la bande passante de Gabor du cepstrum pour distinguer le signal-3 des 2 autres, puis mesurer le pic le plus élevé du cepstrum pour discriminer le signal- 1 du signal-2. C'est ma solution de travail actuelle de traitement du signal.

Point de vue du traitement de l'image: ici, je pense puisque je peux en fait créer des images face aux spectrogrammes, peut-être puis-je tirer parti de quelque chose de ce domaine? Je ne connais pas intimement cette partie, mais qu'en est-il de détecter une `` ligne '' en utilisant la transformation de Hough , puis de `` compter '' les lignes (et si ce ne sont pas des lignes et des taches?) Et de partir de là? Bien sûr, à tout moment où je prends un spectrogramme, toutes les impulsions que vous voyez peuvent être décalées le long de l'axe du temps, alors est-ce important? Pas certain...

Point de vue du traitement de la musique: Un sous-ensemble du traitement du signal, bien sûr, mais il me semble que le signal-1 a ​​une certaine qualité, peut-être répétitive (musicale?), Que les gens du music-proc voient tout le temps et ont déjà résolu dans peut-être des instruments discriminatoires? Pas sûr, mais l'idée m'est venue à l'esprit. Peut-être que ce point de vue est la meilleure façon de voir les choses, en prenant une partie du domaine temporel et en taquinant ces taux progressifs? Encore une fois, ce n'est pas mon domaine, mais je soupçonne fortement que c'est quelque chose qui a été vu auparavant ... peut-on considérer les 3 signaux comme différents types d'instruments de musique?

Je dois également ajouter que j'ai une quantité décente de données d'entraînement, donc peut-être que l'utilisation de certaines de ces méthodes pourrait me permettre de faire une extraction de fonctionnalités avec laquelle je peux ensuite utiliser K-Nearest Neighbour , mais c'est juste une pensée.

Quoi qu'il en soit, c'est ma position actuelle, toute aide est appréciée.

Merci!

MODIFICATIONS BASÉES SUR DES COMMENTAIRES:

  • f1f2f3f4f1f2f2

  • Les taux de répétition des impulsions et les longueurs d'impulsions des trois classes de signaux sont également tous connus à l'avance. (Encore une fois une certaine variance mais très peu). Quelques mises en garde cependant, les taux de répétition des impulsions et les longueurs d'impulsion des signaux 1 et 2 sont toujours connus, mais ils constituent une plage. Heureusement cependant, ces plages ne se chevauchent pas du tout.

  • L'entrée est une série temporelle continue qui arrive en temps réel, mais nous pouvons supposer que les signaux 1, 2 et 3 s'excluent mutuellement, en ce sens qu'il n'en existe qu'un seul à un moment donné. Nous avons également beaucoup de flexibilité sur la quantité de temps que vous prenez à traiter à tout moment.

  • f1f2f3f4

Spacey
la source
Quelle sera votre contribution? 1 / Un flux continu dans lequel vous souhaitez séparer les occurrences de signal 1/2/3 (segmentation + problème de classification) ou 2 / échantillons individuels avec un seul type de signal que vous devez classer en catégories 1/2/3? Vous décrivez plusieurs caractéristiques des signaux: PRT du signal 1; fréquence de répétition du signal 2; fréquence du signal 3; valeurs de f1 / f2 / f3 / f4. Ces paramètres sont-ils connus à l'avance ou variables? Enfin, si votre entrée contient plusieurs occurrences de ces signaux à segmenter, quelle est la durée typique d'un segment?
pichenettes
Une autre question: d'après vos dessins, il semble que vous ayez affaire à des tons purs (pas d'harmoniques et pas de bruit). Est-ce le cas, ou les données sont-elles beaucoup plus sales que vos dessins?
pichenettes
@pichenettes Merci, j'ai ajouté les informations dont vous avez besoin dans un montage.
Spacey
Un suivi de vos progrès et des solutions à cette question seraient appréciés. L'analyse dépend principalement de la variabilité temporelle des sons étudiés. s'ils sont plus rapides qu'une fenêtre fft, disons que sous 256 échantillons, vous aurez besoin de spectrogrammes haute résolution. Plus le spectrogramme est précis, plus vous pouvez voir de petites informations détaillées dans vos sons. La FFT est probablement très bien. Après cela, la question est simplement d'ajouter des opérateurs logiques pour classer les sons à l'aide de routines simples d'analyse de modèle. analyser la durée des impulsions, la distance entre elles, la nature chordale de l'ensemble, etc.
com.prehensible
il est simple de trouver l'harmonique principale simplement en vérifiant la valeur de crête de chaque ligne x, puis vous vous retrouvez avec un graphique à analyser en utilisant la programmation d'analyse de signature de modèle, qui progresse de la même manière que si vous les analysiez en rhétorique, juste dessinez les règles des meilleurs différenciateurs que vous utilisez avec précaution lors de la comparaison et de la classification des progressions numériques.
com.prehensible

Réponses:

7

Étape 1

S(m,k)mk

Étape 2

Pour chaque trame STFT, calculez la fréquence fondamentale dominante en utilisant quelque chose comme YIN, avec un indicateur de "confiance en hauteur", comme la profondeur du "dip" DMF calculé par YIN.

f(m)mv(m)m

r0

e(m)m

Étape 3

MMM=50

Extrayez les fonctionnalités suivantes:

  • σf(k)(f(m))m[kM,k+M],v(m)>τ
  • σv(k)(v(m))m[kM,k+M]
  • σe(k)(e(m))m[kM,k+M]

σfσvσe

σfσvσeσfσvσeσfσvσe

Calculez ces 3 fonctionnalités sur vos données d'entraînement et entraînez un classificateur bayésien naïf (juste un tas de distributions gaussiennes). Selon la qualité de vos données, vous pouvez même vous en sortir avec des classificateurs et utiliser des seuils définis à la main sur les fonctionnalités, bien que je ne le recommande pas.

Étape 4

M

Si vos données et classificateur sont bons, vous verrez quelque chose comme ceci:

1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3

Cela délimite assez bien l'heure de début et de fin, et le type de chaque signal.

Si vos données sont bruyantes, il doit y avoir des trames erronées et mal classées:

1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 3, 2, 2, 1, 1, 1, 3, 1, 1, 1, 3, 3, 3, 2, 3, 3, 3

Si vous voyez beaucoup de merde comme dans le deuxième cas, utilisez un filtre de mode sur les données sur des quartiers de 3 ou 5 détections; ou utilisez des HMM.

Message à emporter

Ce sur quoi vous souhaitez baser votre détection n'est pas une caractéristique spectrale, mais des statistiques temporelles agrégées de caractéristiques spectrales sur des fenêtres qui sont à la même échelle que la durée de vos signaux. Ce problème nécessite vraiment un traitement sur deux échelles de temps: la trame STFT sur laquelle vous calculez des propriétés de signal très locales (amplitude, hauteur dominante, force de hauteur), et des fenêtres plus grandes sur lesquelles vous jetez un œil à la variabilité temporelle de ces propriétés de signal.

pichenettes
la source
Notez que vous pouvez également le faire dans le style de reconnaissance vocale si vous souhaitez utiliser HTK ou similaire ... Modèle acoustique: 4 téléphones P1, P2, P3, P4 (tonalité à f1, tonalité à f2, tonalité à f3, tonalité à f4 ) + 1 symbole S pour le silence. 1 ou 2 gaussiens par téléphone. Modèle de mot W1 pour le signal 1: (P1 S P2 S P3 S P4 S) +. Modèle de mot W2 pour le signal 2: (P1 S) +. Modèle de mot W3 pour le signal 3: (P1) +. Modèle de phrase: (W1 | W2 | W3) *. La seule mise en garde est que si vous utilisez une boîte à outils de reconnaissance vocale, vous devrez modifier son front-end d'extraction de fonctionnalités car les MFCC sont trop basse résolution et agnostiques pour différencier f1 / f2 / f3 / f4.
pichenettes
@pichenettes Merci pichenettes, c'est une très bonne réponse - j'ai quelques suivis cependant: 1) Qu'est-ce que 'YIN' que vous mentionnez et qu'est-ce que 'DMF'? Je n'ai rien trouvé sur eux via google. 2) Qu'est-ce que la «confiance en hauteur» comme mesure? 3) Vous mentionnez que vous pouvez utiliser l'auto-corrélation pour trouver la confiance de tonalité - l'autocorrélation de quoi, la trame de domaine temporel ou la STFT de la trame? (Je ne comprends pas cela probablement parce que je ne sais pas ce que vous entendez par la confiance de ton). (suite ...)
Spacey
@pichenettes (suite) 4) Concernant les fonctionnalités qui existent PAR FENÊTRE seulement oui? Vous calculez donc trois stds par fenêtre, sur (dans ce cas) 101 images? Dans ce cas, quand vient le temps de m'entraîner, mon «point» 3D a été fait à partir de 3 stds sur 101 CADRES, n'est-ce pas? 5) Dans votre étape 4, lorsque vous avez le nombre 1,1,1,2,2 etc., chaque nombre correspond à la façon dont vous avez classé CETTE fenêtre correctement? Le premier «1» était la classification d'une fenêtre composée de cadres -50 à 50, et le second «1» d'une fenêtre composée de cadres -49 à 51, n'est-ce pas? (La fenêtre glisse d'un cadre à chaque fois) ...
Spacey
@pichenettes 6) Enfin, j'aurais dû mentionner que cela doit être utilisé comme une `` alarme '', de sorte que si le signal-1 ou le signal-2 sont présents, je fais sonner une alarme, mais alors rien ne devrait se déclencher si il n'y a rien là-bas - ne devrait-il pas y avoir un certain seuil à faire correspondre avant même qu'il ne commence à essayer de classer afin que vous n'obteniez pas de faux positifs sur rien? (juste du bruit de fond par exemple). (J'apprends juste le classificateur Naive Bayes maintenant, alors je ne sais pas s'il est multi-classe). 7) MERCI BEAUCOUP PAR LA VOIE ET ​​MERCI À L'AVANCE! MILLE ET UNE UPVOTS POUR VOUS! :-)
Spacey
1
1 / YIN est un algorithme de détection de hauteur classique pour les signaux vocaux et musicaux. recherche.ircam.fr/equipes/pcm/cheveign/pss/2002_JASA_YIN.pdf . DMF est la "fonction d'amplitude de différence", la quantité calculée par des algorithmes comme YIN pour l'estimation de la hauteur. 2 / Un algorithme de détection de hauteur comme YIN produira une estimation de la fréquence fondamentale et un "score de confiance" indiquant la probabilité que la hauteur renvoyée soit la bonne réponse. Sur des signaux bruyants ou des signaux présentant plusieurs hauteurs, ce sera faible, sur une onde sinusoïdale pure ce sera très élevé.
pichenettes
3

Une approche alternative pourrait être quatre détecteurs hétérodynes: Multipliez le signal d'entrée avec un oscillateur local de 4 fréquences et filtre passe-bas les sorties résultantes. Chaque sortie représente une ligne verticale dans votre image. Vous obtenez la sortie à chacune des 4 fréquences en fonction du temps. Avec le filtre passe-bas, vous pouvez définir la déviation de fréquence que vous souhaitez autoriser et également la vitesse à laquelle vous souhaitez que les sorties changent, c'est-à-dire la netteté des bords.

Cela fonctionnera bien même si le signal est assez bruyant.

Hilmar
la source
Je pensais à cette méthode - voyez-vous des avantages de cette méthode (mélange et LPF) par rapport au travail direct sur le passe-pand en utilisant un spectrogramme, etc.?
Spacey