Frage

Ich bin neu in diesem Bereich - aber ich brauche eine WAV-to-MIDI-Konvertierung in Java auszuführen. Gibt es eine Möglichkeit zu wissen, was genau sind die Schritte, die bei WAV-to-MIDI-Konvertierung? Ich habe eine sehr grobe Vorstellung wie in Sie müssen; abtasten der WAV-Datei, filtern, die Verwendung FFT zur Spektralanalyse, Merkmalsextraktion und schreibt dann die extrahierten Merkmale auf MIDI. Aber ich kann nicht solide Quellen oder Papiere finden, wie in, wie alles zu tun, dass? Kann mir jemand Hinweise geben, wie und wo Sie anfangen sollen? Gibt es Open-Source-APIs für diesen WAV-to-MIDI-Umwandlungsprozess zur Verfügung?

Erweitert durch

War es hilfreich?

Lösung

Es ist ein komplizierter Prozess, als Sie sich vorstellen können.

Dieses Forschungs Problem wird oft als Musik Transkription : die Tat eine Low-Level-Darstellung von Musik konvertieren (zB Wellenform) in eine übergeordneten Darstellung wie MIDI oder sogar Noten .

Die Komplexität Ihrer Lösung hängt von der Komplexität Ihrer Eingangsdaten abhängen. Tonnen von Forschungsarbeiten Adresse Musiktranskription nur auf monophones Klavier oder Schlagzeug ... weil sie leicht zu transkribieren sind. (Relativ). Violine ist härter. Stimme ist noch schwieriger. Violine und Stimme und Klavier ist viel schwieriger. Eine Symphonie ist nahezu unmöglich. Sie erhalten das Bild.

Die Grundelemente der Musik Transkription beinhalten eine der folgenden Überlappungsbereiche:

  1. (multi) Pitch-Schätzungs
  2. Instrumentenerkennung, timbral Modellierung
  3. Rhythmuserkennung
  4. note Beginn / Offset-Erkennung
  5. Form / Strukturmodellierung

Nach Papiere auf „Musik Transkription“ in Google Scholar oder von den IZMIR Verfahren: http://www.ismir.net . Wenn Sie mehr Interesse an einer der oben genannten Unterthemen sind, kann ich Ihnen weiter zeigen. Viel Glück.

EDIT: That being said, gibt es bestehende Lösungen, dass wir alle finden im Internet. Fühlen Sie sich frei, sie zu versuchen. Aber wie Sie, werten sie mit einem kritischen Auge und Ohr. Welche Arten von Audiosignalen würde Transkription führen zum Scheitern verurteilt?

EDIT 2: Ah, Sie tun dies nur für Klavier. Okay, das ist machbar. Musik Transkription hat einen Punkt erreicht, wo es ziemlich gut monophones Klavier transkribieren kann. Ein Rachmaninov Konzert wird noch Probleme.

Unsere Empfehlungen sind abhängig von Ihrem Endziel. Sie Zustand " Notwendigkeit ausführen ... in Java ." So klingt es wie Sie nur etwas zu arbeiten wollen, unabhängig davon, wie es Ihnen dort ankommt. In diesem Fall stimme ich zu 100% mit anderen: Verwendung etwas, das existiert.

Das ist eigentlich eine interessante Frage; alle der MIR-Bibliotheken Ich weiß, sind in der Regel C / C ++ / Python / Matlab. Aber nicht Java. Die EchoNest hat eine Java-API, aber ich glaube nicht, dass Notiz-Ebene der Transkription der Fall ist. http://developer.echonest.com . (Edit: Es hat Note-Ebene Transkription Die zurückgegebenen Daten umfassen Tonhöhe, Klangfarbe, Beat, Tatum und mehr Aber ich finde Polyphonie noch ein Problem...)

Oh, Marsyas ist Java-basiert. Cool. Ich dachte, es war nur C ++. http://marsyas.info/ Ich empfehle dies. Es wird von George Tzanetakis, Professor in MIR entwickelt. Es tut Signal-Level-Analyse und sollte eine gute Option sein.

Nun, wenn dies für eine Spaß Lernerfahrung ist, glaube ich Ihnen die Sound-Manipulation Dienstprogramme in Java verwenden können, mit dem WAV Signal zu experimentieren und sehen, was dabei herauskommt.

EDIT: Diese Seite beschreibt MIR Software besser als ich kann: Die Werkzeuge, die wir verwenden

Für Matlab, die Sie interessieren könnten in der MIR Toolbox

Hier ist ein schönes Seite gemeinsamen Datensätze: ICH Datensätze

Andere Tipps

Dies ist ein sehr großes Unternehmen für neu in dem Gebiet zu sein, es sei denn, du meinst du mit Signalanalyse und Merkmalserfassung im Allgemeinen vertraut sind und wollen insbesondere in automatische Transkription suchen.

Es gibt keine API für WAV to MIDI-Konvertierung. Vamp ist ein Framework für Plugins Merkmalsextraktion, aber die automatische Transkription zu tun, würden Sie brauchen, um all zu verwenden die Funktionalität des vorhandenen Plugins plus implementieren Funktionalität, die noch in keinem von ihnen vorhanden ist.

Blättern Sie durch die Beschreibungen des Plugins auf der Vamp Download-Seite , alle Beschreibungen Sie tun nicht verstehen, sind Themen, die Sie forschen beginnen sollten, wenn Sie dies tun wollen.

Wenn Sie diese Aufgabe nicht brauchen zu automatisieren (dh für eine Website, wo die Menschen MP3 hochladen und bekommen MIDI-Dateien zurück), dann sollten Sie ein Tool wie Melodyne , die bereits ganz zu gehen das ist gut. Wie Steve erwähnt, ist dies eine sehr schwierige Aufgabe zu erfüllen, und selbst die besten Algorithmen und Lösungen im Moment vorhanden sind nicht 100% zuverlässig.

Wenn Sie also nur die Studioarbeit und Notwendigkeit tun einige Umwandlungen zu tun, wird es sparen Sie wahrscheinlich ein wenig Zeit (und viele Kopfschmerzen), ein Werkzeug zu verwenden, schon für diese Aufgabe entwickelt.

Dolphin, sorry schroff sein, aber Sie haben das Problem vollständig unterschätzt. Was Sie erreichen wollen - eine vollständige Klavierklang Transkription alle Parameter beteiligt, die verwendet wurden während des Spielens mit den Menschen eine enorme Menge an Forschung benötigen würde, die im Bereich seit vielen Jahren gearbeitet haben. Auch würde eine Gruppe von PhDs in der Signalverarbeitung hat eine Menge Arbeit zu investieren, um auch nur annähernd zu dem, was Sie meinen. Musik Transkription hat Jahrzehnte der Arbeit noch Arbeit auf halber Strecke zuverlässig benötigt. Ich würde vorschlagen, dass Sie ein anderes Problem holen, die Sie besser als diese verwalten können.

Dies ist ein Feld, das noch stark in der Entwicklung, doch gibt es einige (experimentell) Algorithmen zur Verfügung.

Sie können sonic annotator installieren und ein paar Vamp-Plugins verwenden.

Zum Beispiel:

./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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top