>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
Java

Noten in Code und XML umwandeln mit Audiveris

Wenn Sie schon einmal versucht haben, alte Noten zu scannen und auf einem Synthesizer abzuspielen oder in einem Musik-Editor wie MuseScore zu öffnen, wissen Sie wahrscheinlich, wie mühsam dieser Prozess sein kann. Standard-OCR wie Tesseract ist hier machtlos: Textzeichen sind an ein System aus fünf Linien gebunden, während Notenwerte, Akkorde, Pausen und dynamische Zeichen eine zweidimensionale Graphstruktur bilden.

Hier kommt OMR — Optical Music Recognition — ins Spiel. In diesem Bereich gibt es nicht viele Projekte, und ausgereifte Open-Source-Systeme kann man an einer Hand abzählen. Audiveris ist wahrscheinlich die bekannteste Open-Source-Engine zur Musikerkennung, die seit vielen Jahren aktiv entwickelt wird.

Die größte Herausforderung bei der Notenerkennung

Die Entwickler von Audiveris gestehen in der Dokumentation ehrlich eine wichtige Tatsache ein: 100%ige Genauigkeit bei der Notenerkennung rein durch algorithmische Mittel zu erreichen, ist praktisch unmöglich. Echte Scans aus Archiven wie IMSLP leiden oft unter Papierknicken, Schiefstellung, verblasster Tinte und nicht standardmäßigen Schriftarten von Verlagen aus dem 19. Jahrhundert. Wenn ein Fehler in die Vorzeichen am Anfang einer Zeile eingeschleust wird, wird die gesamte nachfolgende Dekodierung zur Kakophonie.

Daher basiert das Konzept hinter Audiveris auf zwei eng miteinander verknüpften Komponenten:

  • Rechen-Engine (OMR Engine)
  • Integrierter grafischer Editor (OMR Editor)

Zuerst führt die Engine die Erkennung durch, und dann greift ein Mensch ein. In der Programmoberfläche können Sie Schiefstellungen korrigieren, erkannte Symbole reparieren oder Algorithmusparameter im laufenden Betrieb anpassen, ohne das gesamte Dokument erneut zu verarbeiten.

So funktioniert die Erkennungs-Engine

Die Architektur von Audiveris lässt sich als hybrid beschreiben. Die Entwickler verließen sich nicht blindlings ausschließlich auf klassische Computeranalyse oder ausschließlich auf Deep Learning. Für jeden Typ von Musiknotation-Element wählten sie ihre eigene Methode:

  1. Systemlinien und Raster werden mit spezialisierten Geraden-Detektionsalgorithmen erkannt.
  2. Notenbalken (Verbindungsstriche zwischen Achtel- und Sechzehntelnoten) werden durch mathematische Bildmorphologie erkannt.
  3. Textelemente wie Titel, Tempobezeichnungen und Liedtexte werden an eine externe OCR-Engine übergeben.
  4. Notenköpfe werden durch Template Matching identifiziert.
  5. Alle anderen Symbole mit fester Größe werden von einem neuronalen Netzwerk verarbeitet.

Das Ergebnis wird in einem internen XML-Format mit der .omr-Erweiterung gespeichert oder in das Standardformat MusicXML 4.0 exportiert. Dieses Format wird von praktisch jeder modernen Musiknotations-Software verstanden: Finale, Sibelius, Dorico und MuseScore.

Vorsicht bei Domain-Namen

Ein interessanter Detail aus der README des Repositories: Die Autoren warnen Benutzer ausdrücklich vor einer gefälschten Website audiveris.com.

Das echte Projekt lebt auf GitHub und der zugehörigen GitHub Pages-Site. Eine Site mit der .com-Domainzone ahmt die offizielle Ressource nach, leitet aber auf Drittanbieter-Services mit Kryptowährungen und Wetten weiter. Seien Sie vorsichtig, wenn Sie sich entscheiden, eine fertige Distribution herunterzuladen.

So erstellen und starten Sie das Projekt

Der Code ist in Java geschrieben und wird mit Gradle erstellt. Sie benötigen JDK 17 oder neuer und Git, um damit zu arbeiten.

Das Projekt verwendet ein klassisches Branching-Schema:

  • Der master-Branch enthält nur stabile Releases.
  • Gesamte aktive Entwicklung findet im development-Branch statt.

Klonen Sie das Repository und erstellen Sie das Projekt aus dem Entwicklungs-Branch:

git clone https://github.com/Audiveris/audiveris.git
cd audiveris
git checkout development
./gradlew build

Sobald der Build abgeschlossen ist, können Sie die Anwendung direkt über Gradle ausführen:

./gradlew run

Wenn Sie nicht vorhaben, den Code selbst zu modifizieren, und nur Noten konvertieren möchten, stellen die Entwickler fertige Installer für Windows (.msi), Linux (.deb und Flatpak auf Flathub) und macOS (.dmg) bereit. Diese enthalten bereits die erforderliche Java Runtime Environment, sodass Sie die Umgebung nicht manuell einrichten müssen.

Warum ist das für Entwickler interessant?

Audiveris ist nicht nur für Musiker interessant. Wenn Sie Dienste für die Arbeit mit Medieninhalten, digitalen Archiven oder Bildungsprogrammen entwickeln, bietet dieses Projekt einige großartige Möglichkeiten:

  • Nutzen Sie die Java-API. Sie können Audiveris als Bibliothek in Ihr Projekt integrieren und die Verarbeitung von Noten-PDFs auf einem Server automatisieren.
  • Zugang zur ursprünglichen Dokumentstruktur. Das .omr-Format enthält detaillierte Informationen über die Geometrie der erkannten Elemente, was für Analysen oder das Training eigener Modelle praktisch ist.

Die Lernkurve ist hier ziemlich moderat, und der unter AGPLv3 lizenzierte Code bietet ein gutes Beispiel dafür, wie man komplexe hybride Bildverarbeitungssysteme aufbaut.

Fazit

Wenn Sie vor der Aufgabe stehen, Notenarchive zu digitalisieren oder Notenerkennung in Ihre Anwendung einzubetten, ist es nicht mehr nötig, sich proprietäre Tools anzusehen, die Hunderte von Dollar kosten. Audiveris zeigt einen pragmatischen Ansatz für OMR: Die Kombination aus automatischen Algorithmen und komfortabler manueller Korrektur liefert ausgezeichnete praktische Ergebnisse.

Ähnliche Projekte