Des algorithmes pour déterminer la clé d'un échantillon audio

je me suis intéressé à la détermination de la tonalité musicale d'un échantillon audio. Comment (ou pourrait) d'un algorithme d'essayer de rapprocher les clés d'une comédie musicale d'échantillonnage audio?

Antares Autotune et Melodyne sont deux logiciels qui font ce genre de choses.

est-ce que quelqu'un peut donner un peu d'explication d'un profane sur la façon dont cela fonctionnerait? Déduire mathématiquement la clé d'un chant en analysant le spectre de fréquence pour les progressions d'accords etc.

Ce sujet m'intéresse beaucoup!

Edit - brillant sources et une mine d'informations pour être trouvé à partir de tous ceux qui ont contribué à cette question .

spécialement de: the_mandrill et Daniel Brückner.

48
demandé sur Amro 2010-06-29 18:58:45

8 réponses

il vaut la peine d'être conscient que c'est un problème très délicat et si vous n'avez pas d'expérience dans le traitement du signal (ou un intérêt à apprendre à ce sujet) alors vous avez un moment très frustrant devant vous. Si vous vous attendez à jeter quelques FFTs au problème alors vous n'irez pas très loin. J'espère que vous avez l'intérêt car c'est un domaine vraiment fascinant.

initialement, il y a le problème de la reconnaissance de pas, ce qui est raisonnablement facile à faire pour instruments monophoniques simples (par exemple voix) utilisant une méthode telle que l'autocorrélation ou le spectre de somme harmonique (par exemple voir le lien de Paul R). Cependant, vous constaterez souvent que cela donne les mauvais résultats: vous obtiendrez souvent la moitié ou le double de la hauteur que vous attendiez. Cela s'appelle pitch période de doublement ou erreurs d'octave et cela se produit essentiellement parce que le FFT ou l'autocorrélation a une hypothèse que les données ont des caractéristiques constantes dans le temps. Si vous avez un instrument joué par un humain, il y aura toujours une certaine variation.

certaines personnes abordent le problème de la reconnaissance de clé comme étant une question de faire d'abord la reconnaissance de pas, puis de trouver la clé à partir de la séquence des hauteurs. C'est incroyablement difficile si vous avez autre chose qu'une séquence monophonique de lancers. Si vous avez monotone séquence de pas alors il est toujours pas clair méthode de coupe pour déterminer la clé: comment gérer les notes chromatiques, par exemple, ou pour déterminer si c'est majeur ou mineur. Vous devez donc utiliser une méthode similaire à celle de Krumhansl "Key finding algorithm .

Si, compte tenu de la complexité de cette approche, une alternative est de regarder toutes les notes jouées en même temps. Si vous avez des accords, ou plus d'un instrument alors vous allez avoir une soupe spectrale riche de nombreux sinusoïdes jouant à la fois. Chaque note individuelle est composée de plusieurs harmoniques une fréquence fondamentale, donc A (à 440Hz) sera composé de sinusoïdes à 440, 880, 1320... De plus, si vous jouez un E (voir ce diagramme pour les hauteurs) alors c'est 659,25 Hz qui est presque une fois et demie celle de A (en fait 1,498). Cela signifie que chaque 3ième harmonique de A coïncide avec chaque 2ième harmonique de E. C'est la raison pour laquelle les accords sonnent plaisant, parce qu'ils partagent les harmoniques. (en passant, toute la raison pour laquelle l'harmonie occidentale fonctionne est due à la bizarrerie du destin que la douzième racine de 2 à la puissance 7 est près de 1,5)

si vous regardez au-delà de cet intervalle d'une 5ème à Majeure, Mineure et autres accords, alors vous trouverez d'autres rapports. Je pense que beaucoup de techniques de recherche clés énuméreront ces rapports et rempliront ensuite un histogramme pour chaque pic spectral dans le signal. Ainsi, dans le cas de la détection de l'accord A5 vous s'attendre à trouver des pics à 440, 880, 659, 1320, 1760, 1977. Pour B5, ce sera 494, 988, 741, etc. Créer ainsi un histogramme de fréquence et pour chaque pic sinusoïdal dans le signal (par exemple à partir du spectre de puissance FFT) incrémenter l'entrée d'histogramme. Ensuite, pour chaque touche A-G, additionnez les bacs de votre histogramme et ceux qui contiennent le plus d'entrées seront probablement votre clé.

C'est juste une approche très simple, mais peut être suffisant pour trouver la clé d'un grattés ou accord soutenu. Vous feriez ont également pour couper le signal en petits intervalles (par exemple 20ms) et d'analyser chacun de construire une estimation plus robuste.

EDIT:

Si vous voulez expérimenter, je vous suggère de télécharger un paquet comme Octave ou CLAM ce qui rend plus facile de visualiser des données audio et d'exécuter des FFTs et d'autres opérations.

autres liens utiles:

  • Ma thèse sur certains aspects de la reconnaissance de hauteur -- le calcul est un peu lourd, mais le chapitre 2 est (je l'espère) tout à fait une introduction accessible aux différentes approches de modélisation de musique audio
  • http://en.wikipedia.org/wiki/Auditory_scene_analysis -- Bregman Auditif de l'analyse de la Scène, qui, bien que ne parle pas de la musique a fascinantes découvertes sur la façon dont nous percevons des scènes complexes
  • Dan Ellis a fait de grands papiers dans ce type de zones
  • Keith Martin a certains des approches intéressantes
55
répondu the_mandrill 2010-06-29 20:59:34

j'ai travaillé pendant plus de deux ans à l'université sur le problème de la transcription d'enregistrements de CD polyphoniques en partitions. Le problème est notoirement difficile. Les premiers documents scientifiques relatifs au problème remontent aux années 1940 et jusqu'à aujourd'hui il n'y a pas de solutions robustes pour le cas général.

toutes les suppositions de base que vous lisez habituellement ne sont pas exactement correctes et la plupart d'entre elles sont erronées assez qu'elles deviennent inutilisables pour tout mais très simple scénario.

les fréquences des harmoniques sont et non multiples de la fréquence fondamentale - il y a des effets non linéaires de sorte que les partiels élevés dérivent loin de la fréquence attendue-et non seulement quelques Hertz; il n'est pas inhabituel de trouver le 7ème partiel où vous vous attendiez au 6ème.

transformations de Fourier font pas jouer agréable avec l'analyse audio parce que les fréquences que l'on s'intéresse sont la transformation de Fourier fournit des fréquences espacées de façon logarithmique. Aux basses fréquences vous avez besoin de haute résolution de fréquence pour séparer les emplacements voisins - mais cela donne une mauvaise résolution de temps et vous perdez la capacité les notes séparées jouées dans la succession rapide.

un enregistrement audio ne contient (probablement) pas toutes les informations nécessaires pour reconstruire la partition. Une grande partie de notre perception musicale se produit dans nos oreilles et le cerveau. C'est pourquoi certains des systèmes les plus réussis sont des systèmes experts avec de grands dépôts de connaissances sur la structure de la musique (occidentale) qui ne comptent qu'une petite partie sur le traitement du signal pour extraire l'information de l'enregistrement audio.

quand je serai de retour chez moi, je regarderai les documents que j'ai lus et je choisirai les 20 ou 30 plus pertinents et je les ajouterai ici. Je suggère vraiment de les lire avant de décider de mettre en œuvre quelque chose - comme indiqué ci-dessus les hypothèses les plus courantes sont quelque peu incorrectes et vous ne voulez vraiment pas redécouvrir toutes ces choses trouvées et analysées depuis plus de 50 ans lors de la mise en œuvre et de la mise à l'essai.

c'est un problème difficile, mais c'est aussi très amusant. J'aimerais vraiment entendre ce que vous avez essayé et cela a fonctionné.


pour l'instant, vous pouvez jeter un oeil à la constante Q transform, Cepstrum et Wigner(–Ville) distribution. Il y a aussi quelques bonnes documents sur la façon d'extraire la fréquence des déplacements dans la phase des spectres de Fourier de courte durée - cela permet d'utiliser des fenêtres de tailles très courtes (pour la haute résolution de temps) parce que la fréquence peut être déterminée avec une précision plusieurs 1000 fois plus grande que la résolution de fréquence de la transformation de Fourier sous-jacente.

toutes ces transformations s'adaptent au problème du traitement audio beaucoup mieux que les transformations de Fourier ordinaires. Pour améliorer les résultats de la base les transformations se penchent sur le concept de réaffectation de l'énergie.

17
répondu Daniel Brückner 2010-06-29 18:08:59

vous pouvez utiliser la transformée de Fourier pour calculer le spectre de fréquence à partir d'un échantillon audio. À partir de cette sortie, vous pouvez utiliser les valeurs de fréquence pour les notes particulières pour transformer cela en une liste de notes entendues pendant l'échantillon. Choisir les notes les plus fortes entendues par échantillon plutôt qu'une série d'échantillons devrait vous donner une carte décente des différentes notes utilisées, que vous pouvez comparer aux différentes échelles musicales pour obtenir une liste des échelles possibles qui contiennent la combinaison de notes.

pour aider à décider quelle échelle particulière est utilisée, faites une note (sans jeu de mots) des notes les plus souvent entendues. Dans la musique Occidentale, la racine de l'échelle est généralement la plus commune de la note entendue, suivie par la cinquième, puis le quatrième. Vous pouvez également rechercher des modèles tels que les accords , arpeggios , ou progressions .

la taille de L'échantillon sera probablement importante ici. Idéalement, chaque échantillon sera une seule note (de sorte que vous ne recevez pas deux accords dans un échantillon). Si vous filtrer et se concentrer sur les basses fréquences, vous pouvez être en mesure d'utiliser les transitoires de volume ("clics") normalement associés aux instruments à percussion afin de déterminer le tempo de la chanson et "verrouiller" votre algorithme au rythme de la musique. Commencez avec des échantillons qui sont un demi-temps en longueur et ajuster à partir de là. Être prêt à jeter quelques échantillons qui n'ont pas beaucoup de données utiles (tels qu'un exemple pris au milieu d'une diapositive).

6
répondu bta 2010-06-29 15:36:14

autant que je puisse dire de cet article , différentes touches ont chacune leurs propres fréquences communes, donc il analyse probablement l'échantillon audio pour détecter ce que les notes et les accords les plus courants sont. Après tout, vous pouvez avoir plusieurs clés qui ont la même configuration de sharps et flats, avec la différence étant la note que la clé commence et donc les accords que de telles clés, il semble que la fréquence des notes significatives et les accords apparaissent serait le seul réel façon vous pouviez comprendre ce genre de chose. Je ne pense pas vraiment que vous pouvez obtenir une explication d'un profane des formules mathématiques actuelles sans omettre beaucoup d'informations.

notez que cela vient de quelqu'un qui n'a absolument aucune expérience dans ce domaine, avec sa première exposition à l'article lié à cette réponse.

5
répondu JAB 2010-06-29 15:16:21

c'est un sujet complexe, mais un algorithme simple pour déterminer une seule clé (note unique) ressemblerait à ceci:

faire une transformation de fourier sur disons 4096 samples (la taille exacte dépend de Votre résolution) sur une partie de l'échantillon qui contient la note. Déterminer la puissance pic dans le spectre - c'est la fréquence de la note.

les choses deviennent plus serrées si vous avez un accord, différents "instruments / effets" ou un modèle de musique non homophonique.

3
répondu MRalwasser 2010-06-29 15:21:42

vous avez D'abord besoin d'un algorithme de détection de pitch (par exemple autocorrélation ).

vous pouvez alors utiliser votre algorithme de détection de pitch pour extraire le pitch sur un certain nombre de fenêtres de temps court. Après cela, vous auriez besoin de voir quelle touche musicale les emplacements échantillonnés conviennent le mieux.

1
répondu Paul R 2010-06-29 18:43:45

si vous avez besoin de classer un tas de chansons en ce moment, puis foule-source le problème avec quelque chose comme Turk mécanique .

1
répondu Nathan 2010-06-29 21:06:13

L'analyse de la clé n'est pas la même chose que l'analyse des hauteurs. Malheureusement, toute la notion de key est quelque peu ambiguë, les différentes définitions ont tendance à ne Partager que le concept de tonic, c'est-à-dire un ton/accord central. Même s'il existait un bon système de transcription automatique, il n'existe pas d'algorithme fiable pour déterminer la clé.

1
répondu Musicologist 2015-07-22 18:03:34