Question

Je suis nouveau dans ce domaine - mais je dois effectuer une conversion WAV-MIDI en java. Y at-il un moyen de savoir quelles sont exactement les étapes impliquées dans la conversion WAV-MIDI? J'ai une idée très approximative comme vous devez; échantillonner le fichier wav, filtrer, utiliser FFT pour l'analyse spectrale, extraction de caractéristiques, puis d'écrire les caractéristiques extraites à MIDI. Mais je ne peux pas trouver des sources solides ou des papiers comme dans la façon de faire tout cela? Quelqu'un peut me donner des indices comme dans comment et où commencer? Y a-t-il des API Open Source disponible pour ce WAV-MIDI processus de conversion?

grâce Advance

Était-ce utile?

La solution

Il est un processus plus complexe que vous pourriez imaginer.

Ce problème de recherche est souvent appelée Transcription de la musique : l'acte de conversion d'une représentation à faible niveau de la musique (par exemple, la forme d'onde) dans une représentation de niveau supérieur tels que MIDI ou même partition .

La sophistication de votre solution dépendra de la complexité de vos données d'entrée. Des tonnes de documents de recherche portent sur la transcription de la musique uniquement sur le piano ou la batterie monophonique ... parce qu'ils sont faciles à retranscrire. (Relativement.) Violon est plus difficile. La voix est encore plus difficile. Violon, plus la voix, plus le piano est beaucoup plus difficile. Une symphonie est presque impossible. Vous obtenez l'image.

Les éléments de base de la transcription de la musique impliquent l'une des zones de chevauchement suivantes:

  1. estimation de pas (multi)
  2. reconnaissance de l'instrument, la modélisation de timbres
  3. Détection de rythme
  4. note début / détection de décalage
  5. form / modélisation de la structure

Recherche de documents sur "la transcription de la musique" sur Google Scholar ou de la procédure ISMIR: http://www.ismir.net . Si vous êtes plus intéressé par l'un des sous-thèmes ci-dessus, je vous renvoie encore. Bonne chance.

EDIT: Cela étant dit, il existe des solutions existantes que nous pouvons tous trouver sur le web. Ne hésitez pas à les essayer. Mais comme vous le faites, les évaluer d'un œil critique et de l'oreille. Quels types de signaux audio provoquerait la transcription à l'échec?

EDIT 2: Ah, vous ne faites que cela pour piano. D'accord, cela est faisable. Transcription de la musique a avancé au point où il peut retranscrire assez bien le piano monophonique. Un concerto de Rachmaninov se pose encore des problèmes.

Nos recommandations dépendent de votre objectif final. Vous déclarez " besoin pour effectuer ... dans Java ." Il semble donc que vous voulez juste quelque chose à travailler, peu importe la façon dont il vous arrive. Dans ce cas, je suis d'accord à 100% avec les autres: utiliser quelque chose qui existe.

C'est en fait une question intéressante; toutes les bibliothèques MIR que je connais sont généralement C / C ++ / Python / Matlab. Mais pas Java. A une The Echo Nest API Java, mais je ne pense pas que ce soit la transcription au niveau de la note. http://developer.echonest.com . (Edit:... Il Finalité transcription de notes de niveau Les données renvoyées comprend pas, le timbre, battre, tatum, et plus mais je trouve la polyphonie est toujours un problème)

Oh, Marsyas est basé sur Java. Cool. Je pensais que c'était juste C ++. Je recommande http://marsyas.info/ cela. Il est développé par George Tzanetakis, professeur au MIR. Il fait une analyse au niveau du signal et devrait être une bonne option.

Maintenant, si cela est une expérience d'apprentissage amusant, je pense que vous pouvez utiliser les utilitaires de manipulation du son en Java pour expérimenter avec le signal WAV et voir ce qui sort.

EDIT: Cette page décrit le logiciel MIR mieux que moi: Les outils que nous utilisons

Pour Matlab, vous pouvez être intéressé par le MIR Boîte à outils

Voici une belle page de jeux de données communes: MIR datasets

Autres conseils

est une entreprise très importante pour être nouveau dans le domaine, à moins que vous voulez dire que vous êtes familiarisé avec l'analyse du signal et détection de caractéristiques en général et que vous voulez regarder plus précisément dans la transcription automatique.

Il n'y a pas d'API pour WAV à la conversion MIDI. Vamp est un cadre pour les plugins d'extraction de caractéristiques, mais pour faire la transcription automatique, vous devez utiliser tous la fonctionnalité des plugins existants, ainsi que la mise en œuvre des fonctionnalités qui existe dans aucun d'eux encore.

Parcourez les descriptions des plug-ins sur la page de téléchargement vamp , toutes les descriptions que vous faites cOMPRENDRE ne sont sujets que vous devriez commencer à rechercher si vous voulez le faire.

Si vous n'avez pas besoin d'automatiser cette tâche (c.-à-pour un site Web où les gens peuvent réimporter MP3 et obtenir des fichiers MIDI), alors vous devriez envisager d'utiliser un outil comme Melodyne qui est déjà assez bon pour aller ça. Comme Steve a noté, cela est une tâche très difficile à accomplir, et même les meilleurs algorithmes et solutions présentes au moment ne sont pas fiables à 100%.

Donc, si vous êtes en train de faire le travail en studio et ont besoin de faire quelques conversions, il vous sera probablement économiser un peu de temps (et beaucoup de maux de tête) d'utiliser un outil déjà conçu pour cette tâche.

Dolphin, désolé d'être brusquerie, mais vous avez complètement sous-estimé le problème. Qu'est-ce que vous voulez réaliser - une transcription sonore complète piano impliquant tous les paramètres qui ont été utilisés pendant la lecture aurait besoin d'une énorme quantité de recherches avec des gens qui ont travaillé dans le domaine depuis de nombreuses années. Même un groupe de titulaires d'un doctorat dans le traitement du signal devrait investir beaucoup de travail à venir, même à ce que vous voulez dire. Transcription de la musique a besoin des décennies de travail pour travailler à mi-chemin même fiable. Je vous suggère de choisir un autre problème que vous pouvez gérer mieux que cela.

Ceci est un champ qui est encore très en cours de développement, mais, il y a quelques algorithmes (expérimental) disponibles.

Vous pouvez installer et utiliser Sonic annotateurs quelques plugins vamp.

Par exemple:

./sonic-annotator file.wav -d vamp:qm-vamp-plugins:qm-transcription:transcription -w midi

./sonic-annotator file.wav -d vamp:silvet:silvet:notes -w midi

./sonic-annotator file.wav -d vamp:ua-vamp-plugins:mf0ua:mf0ua -w midi
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top