40 votes

Algorithme de reconnaissance des accords de guitare?

Quel est le bon algorithme de traitement du signal numérique qui convient aux accords de guitare? Depuis Fast Fourier Transform, je pense que seul les notes jouées à la guitare sont précises, mais pas les notes jouées simultanément (c.-à-d. Accords).

Merci!

72voto

tias Points 381

La réponse courte est que vous avez besoin de beaucoup plus d'un algorithme. Bon d'accord des méthodes de reconnaissance serait plus juste de qualifier de "systèmes", mais en général ils sont en effet fondés sur une première transformation à la fréquence de domaine (le plus souvent DFT).

Si vous souhaitez un accord representaton de la chanson similaire à ce

C G Am F7 F6 C ...

puis ce est en fait un problème qui est un peu en retrait de la reconnaissance de la note dans un morceau de audio. En fait, il y a deux problèmes (en gros):

  1. pour trouver les emplacements sont présents à tout moment
  2. le regroupement de ces terrains de plus de temps pour être en mesure d'assigner une corde sur l'étiquette d'un intervalle de temps.

Il s'avère que la méthode de transformation à partir du moment de domaine (audio normal) pour le domaine de fréquence (représentation spectrale) n'est que de peu d'importance. C'est très important ce que vous faites par la suite, et souvent sophistiqués des modèles probabilistes (similaires à ceux de la reconnaissance vocale: Hmm, DBNs, ...) sont utilisées pour lutter contre ce problème.

Essayez google scholar "accord de transcription", ou "détection d'accords", ou "corde d'étiquetage" pour la recherche de pointe dans ce domaine.

La plupart de ces approches utilisent une transformée de Fourier discrète (DFT) pour créer la première spectrogramme. Au cours de la poursuite du traitement, trop, ils ont tendance à ne diffèrent que légèrement, bien que les différents temps de la série les techniques de lissage ont été utilisés: les modèles de Markov cachés, Bayésien dynamique des réseaux, des machines à vecteurs de support (SVMstruct) et à la condition de champs aléatoires, entre autres. Le plus avancé des transcripteurs utiliser le réglage automatique, clé de l'information, note de basse de l'information, et l'information de la position métrique pour améliorer les résultats. Ma thèse (Chapitre 2) donne un bon aperçu.

Open source d'accord algorithmes de détection:

Espérons que cette aide.

3voto

Nemeth Points 557

Eh bien, vous pouvez essayer un autre ensemble d'algorithmes pour le domaine des fréquences, comme les ondelettes. Mais je ne suis pas sûr si cela va faire pour la précision de votre question. En fait, je n'ai pas compris de quelle façon vous rencontrez des problèmes avec la FFT. Il sera toujours une approximation de l'accord, il n'y a pas de meilleure façon de récupérer ce genre d'information sur son.

Donc, cela dépend de l'analyse que vous faites sur ce spectre, avec une seule note, il y a effectivement beaucoup de meilleurs algorithmes de la FFT, mais avec les accords que vous aurez très probablement avez à travailler avec la FFT.

Le problème que vous aurez à faire face est divisée fondamentaux harmoniques de la partie supérieure des harmoniques, une chose qui peut aider est uniquement en considération les fréquences qui sont sur la guitare de la gamme. Si vous avez seulement à travailler avec des sons de guitare, vous devez donner le temps à l'étude de la fréquence normale de domaine graphique de la guitare et essayer de l'utiliser pour améliorer votre précision.

3voto

Matthias Points 1

Il existe des outils raisonnablement efficaces qui utilisent la DFT (FFT), mais ils effectuent de nombreux traitements après le calcul de la DFT.

Essayez ce lien pour un résumé de l'état actuel des connaissances, ou google "Chordino" ou "Chordata" pour les algorithmes d'extraction d'accords open source.

1voto

Yury Points 10837

Il y a un concours entre scientifique où les gens essaient d'analyser les différents paramètres de la musique. Un article de ce concours est d'accords de reconnaissance. Ce concours est public, n'importe qui peut y participer et de montrer les résultats dans ce domaine. Les résultats de l'année 2011 est publié ici.

Un de mes amis a obtenu de bons résultats dans ce domaine (et dans ce concours trop). Vous pouvez lire à propos de son approche sur sa page web.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X