53 votes

Algorithmes pour déterminer la clé d'un échantillon audio

Je suis intéressé dans 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 les deux morceaux de logiciels qui font ce genre de chose.

Quelqu'un peut-il donner un peu d'un profane de l'explication sur la façon dont cela pourrait fonctionner? Mathématiquement en déduire la clé d'une chanson en analysant le spectre des fréquences 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.

Surtout à partir de: the_mandrill et Daniel Brückner.

60voto

the_mandrill Points 12530

Il vaut la peine d'être conscient que c'est un problème délicat et si vous n'avez pas d'antécédents de traitement du signal (ou d'un intérêt dans l'apprentissage à ce sujet), alors vous avez une très frustrant de temps devant vous. Si vous vous attendez à jeter un couple de Fft sur le problème, alors vous n'irez pas très loin. J'espère que vous avez de l'intérêt que c'est vraiment un domaine fascinant.

D'abord il y a le problème de la reconnaissance de hauteur, ce qui est assez facile à faire pour simple des instruments monophoniques (par exemple, voix) à l'aide d'une méthode telle que l'autocorrélation ou somme harmonique du spectre (par exemple, voir Paul R du lien). Cependant, vous trouverez souvent que cela donne des résultats erronés: vous aurez souvent la moitié ou le double de la hauteur que vous attendiez. Cela s'appelle le pitch de la période de doublement ou les erreurs d'octave et il se produit essentiellement en raison de la FFT ou d'autocorrélation a une hypothèse que les données sont constantes caractéristiques au fil du temps. Si vous avez un instrument joué par un humain, il y aura toujours une certaine variation.

Certaines personnes aborder le problème de la clé de la reconnaissance comme étant une question de faire de la reconnaissance de hauteur en premier et ensuite trouver la clé à partir de la séquence de pas. C'est incroyablement difficile, si vous avez rien d'autre qu'un monophonique séquence de pas. Si vous avez monotone séquence de pas alors il est pas encore clairement méthode de détermination de la clé: la façon dont vous traitez avec des notes chromatiques, par exemple, ou de déterminer s'il est majeur ou mineur. Donc, vous auriez besoin d'utiliser une méthode similaire à Krumhansl la clé algorithme de recherche.

Donc, 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 des instruments, alors vous allez avoir une riche spectrale soupe de beaucoup de sinusoïdes à la fois. Chaque note individuelle est composée de plusieurs harmoniques de la fréquence fondamentale, de sorte que A (à 440 hz) sera composé de sinusoïdes à 440, 880, 1320... en Outre, si vous jouez un E (voir ce diagramme pour les emplacements) alors que c'est 659.25 Hz, ce qui est presque une fois et demie celle d'Un (en fait 1.498). Cela signifie que chaque 3ème harmonique de l'Un coïncide avec tous les 2ème harmonique de E. C'est la raison pour laquelle les accords du son agréable, parce qu'ils partagent les harmoniques. (en aparté, l'ensemble de la raison que l'ouest de l'harmonie travaux est due à la bizarrerie du destin que la racine douzième de 2 à la puissance 7 est près de 1,5)

Si vous avez regardé au-delà de cet intervalle de 5 à majeurs, mineurs et autres accords, alors vous allez trouver d'autres ratios. Je pense que de nombreuses techniques de recherche énumérer ces ratios, puis remplir un histogramme pour chaque pic spectral du signal. Ainsi, dans le cas de la détection de l'accord A5 que vous attendez à trouver des pics à 440, 880, 659, 1320, 1760, 1977. Pour le B5 ça va être 494, 988, 741, etc. Afin de créer un histogramme et pour chaque sinusoïdale de pointe dans le signal (par exemple à partir de la FFT du spectre de puissance) incrément de l'histogramme de l'entrée. Ensuite, pour chaque clé A-G compte les poubelles dans votre histogramme, et ceux avec le plus d'entrées est le plus susceptible d'être 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. Il faudrait aussi 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 ensuite, je te suggère de télécharger un package comme Octave ou de PALOURDES qui rend plus facile de visualiser les données audio et exécuter Fft et d'autres opérations.

Autres liens utiles:

  • Ma thèse de Doctorat 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 grandes communications et des domaines similaires
  • Keith Martin a certaines des approches intéressantes

18voto

Daniel Brückner Points 36242

J'ai travaillé sur le problème de la transcription polyphonique enregistrements de CD dans les scores de plus de deux ans à l'université. Le problème est notoirement difficile. Les premiers articles scientifiques liés à la problématique de la date de retour pour les années 1940 et jusqu'à aujourd'hui, il n'existe pas de solutions robustes pour le cas général.

Tous l'hypothèse de base que vous l'habitude de lire ne sont pas exactement droit et la plupart d'entre eux sont mal assez pour qu'ils deviennent inutilisables pour tout, mais très simple scénarios.

Les fréquences des harmoniques sont pas des multiples de la fréquence fondamentale il y a des effets non-linéaires de sorte que la haute partiels à la dérive de la fréquence attendue - et pas seulement de quelques Hertz; il n'est pas rare de trouver de la 7e partielle où vous attend le 6 mai.

Les transformations de Fourier ne pas jouer gentil avec audio de l'analyse parce que les fréquences les intéressent sont espacées de manière logarithmique, tandis que la transformation de Fourier des rendements de façon linéaire espacés de fréquences. Dans les basses fréquences, vous avez besoin de haute résolution de fréquence pour séparer les terrains voisins - mais cela donne une mauvaise résolution temporelle et de vous perdre la possibilité de la séparer les notes jouées successivement.

Un enregistrement audio n'est (probablement) pas contenir toutes les informations nécessaires pour reconstruire le score. Une grande partie de notre perception de la musique qui se passe dans nos oreilles et notre cerveau. C'est pourquoi certains de la plupart des systèmes sont les systèmes experts avec de grands référentiels de connaissances sur la structure de (ouest) de la musique que de ne se fier qu'à une petite partie sur le traitement du signal pour en extraire des informations à partir de l'enregistrement audio.

Quand je suis de retour chez moi, je vais regarder à travers les documents que j'ai lu et choisir les 20 ou 30 plus pertinentes et de les ajouter ici. Je suggère de les lire avant de vous décider à mettre en place quelque chose - comme indiqué précédemment, la plupart des hypothèses communes sont quelque peu incorrect et que vous n'avez vraiment pas envie de redécouvrir toutes ces choses trouvées et analysées pour les plus de 50 ans, tandis que la mise en œuvre et de test.

C'est un problème difficile, mais c'est beaucoup de plaisir, aussi. J'aimerais vraiment entendre ce que vous avez essayé et cela a fonctionné.


Pour maintenant, vous pouvez avoir un coup d'oeil à la Constante Q transformer, Cepstre et de Wigner(–Ville) de la distribution. Il y a aussi quelques articles sur la façon d'extraire la fréquence des changements de la phase de court le temps des spectres de Fourier, ce qui permet d'utiliser de très courtes tailles de fenêtres (pour haute résolution temporelle), car la fréquence peut être déterminée avec une précision de plusieurs 1000 fois plus grande que la résolution en fréquence de la sous-tendent la transformation de Fourier.

Toutes ces transformations s'adapter à la problématique de traitement audio beaucoup mieux que les transformations de Fourier. Pour améliorer les résultats des transformations de base ont un regard sur le concept de l'énergie d'une réaffectation.

6voto

bta Points 22525

Vous pouvez utiliser la transformée de Fourier de calculer le spectre de fréquence à partir d'un échantillon audio. À partir de cette sortie, vous pouvez utiliser les valeurs de la fréquence pour les particulier les notes de transformer cela en une liste de notes entendues lors de l'échantillon. Le choix de la plus forte des notes entendues par échantillon au cours d'une série d'échantillons devrait vous donner une vie décente carte des différentes notes utilisé, vous pouvez comparer les différentes échelles musicales pour obtenir une liste des échelles possibles qui contiennent la combinaison de notes.

Pour décider de l'échelle spécifique est utilisé, faire une remarque (no pun intended) les plus fréquemment entendu des notes. 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 aussi chercher les motifs tels que des accords, des arpègesou des progressions.

La taille de l'échantillon sera probablement important ici. Idéalement, chaque échantillon sera d'une seule note (de sorte que vous n'obtenez pas de deux accords dans le cas d'un échantillon). Si vous filtre et se concentrer sur les basses fréquences, vous pouvez être en mesure d'utiliser les pointes de volume ("clics") qui sont normalement associés avec des instruments de percussion afin de déterminer le tempo du morceau et "verrouiller" votre algorithme pour le rythme de la musique. Commencez avec des échantillons d'un demi-battement de la longueur et de l'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).

5voto

JAB Points 11053

Aussi loin que je peux dire de cet article, différentes touches ont chacun leur propre commune fréquences, il est probable analyse de l'échantillon audio pour détecter quels sont les notes et les accords. Après tout, vous pouvez avoir plusieurs clés qui ont la même configuration de dièses et les bémols, la différence étant la note la touche démarre et, par conséquent, les accords que ces touches, il semble donc que, souvent, le significative des notes et des accords apparaissent serait la seule véritable façon vous pouviez comprendre ce genre de chose. Je ne pense pas vraiment que vous pouvez obtenir un profane, l'explication de la réelle formules mathématiques sans laisser 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.

3voto

MRalwasser Points 4022

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

Faites une transformation de Fourier sur, disons, 4096 échantillons (la taille exacte dépend de vos exigences de résolution) sur une partie de l'échantillon qui contient la note. Déterminez le pic de puissance dans le spectre - c'est la fréquence de la note.

Les choses se resserrent si vous avez un accord, différents "instruments / effets" ou un modèle musical non homophonique.

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