>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Java

Comment convertir des partitions en code et XML avec Audiveris

Si vous avez déjà essayé de scanner d'anciennes partitions et de les lire sur un synthétiseur ou de les ouvrir dans un éditeur de musique comme MuseScore, vous savez probablement à quel point le processus peut être douloureux. L'OCR standard comme Tesseract est impuissant ici : les caractères de texte sont liés à une portée de cinq lignes, tandis que les durées de notes, les accords, les silences et les indications动态 forment une structure graphique bidimensionnelle.

C'est là que l'OMR — Reconnaissance Optique de la Musique — entre en scène. Il n'y a pas beaucoup de projets dans ce domaine, et les systèmes open source matures se comptent sur les doigts d'une main. Audiveris est peut-être le moteur de reconnaissance musicale open source le plus connu, activement développé depuis de nombreuses années.

Le principal défi de la reconnaissance musicale

Les développeurs d'Audiveris reconnaissent honnêtement dans la documentation un fait important : atteindre une précision de 100% dans la reconnaissance musicale par des moyens purement algorithmiques est pratiquement impossible. Les vrais scans provenant d'archives comme IMSLP souffrent souvent de plis sur le papier, d'inclinaison, d'encre délavée et de polices non standard des éditeurs du XIXe siècle. Si une erreur s'introduit dans la signature de la clé au début d'une ligne, toute la décodification ultérieure se transforme en cacophonie.

Par conséquent, le concept derrière Audiveris repose sur deux composants étroitement liés :

  • Moteur de calcul (OMR Engine)
  • Éditeur graphique intégré (OMR Editor)

D'abord, le moteur effectue la reconnaissance, puis un humain intervient. Dans l'interface du programme, vous pouvez corriger l'inclinaison, réparer les symboles reconnus ou ajuster les paramètres de l'algorithme à la volée, sans retraiter l'ensemble du document.

Comment fonctionne le moteur de reconnaissance

L'architecture d'Audiveris peut être décrite comme hybride. Les créateurs ne se sont pas appuyés aveuglément uniquement sur l'analyse informatique classique ni uniquement sur l'apprentissage profond. Pour chaque type d'élément de notation musicale, ils ont sélectionné leur propre méthode :

  1. Les lignes de portée et la grille sont détectées à l'aide d'algorithmes spécialisés de détection de lignes droites.
  2. Les hampes de notes (trait reliant les notes eighth et sixteenth) sont reconnues par morphologie mathématique des images.
  3. Les éléments textuels comme les titres, les indications de tempo et les paroles sont transmis à un moteur OCR externe.
  4. Les têtes de notes sont identifiées par correspondance de modèles.
  5. Tous les autres symboles de taille fixe sont traités par un réseau de neurones.

Le résultat est enregistré dans un format XML interne avec l'extension .omr ou exporté vers MusicXML 4.0 standard. Ce format est compris par pratiquement tous les logiciels modernes de notation musicale : Finale, Sibelius, Dorico et MuseScore.

Attention aux noms de domaine

Un détail intéressant du README du dépôt : les auteurs mettent spécifiquement en garde les utilisateurs contre un faux site web audiveris.com.

Le vrai projet vit sur GitHub et son site GitHub Pages associé. Un site avec le domaine .com imite la ressource officielle mais redirige les gens vers des services tiers avec des cryptomonnaies et des paris. Faites attention si vous décidez de télécharger une distribution prête à l'emploi.

Comment compiler et exécuter le projet

Le code est écrit en Java et compilé avec Gradle. Vous aurez besoin de JDK 17 ou plus récent et de Git pour travailler avec.

Le projet utilise un schéma de branches classique :

  • La branche master ne contient que des versions stables.
  • Tout le développement actif se fait dans la branche development.

Clonez le dépôt et compilez le projet depuis la branche de développement :

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

Une fois la compilation terminée, vous pouvez exécuter l'application directement via Gradle :

./gradlew run

Si vous ne prévoyez pas de modifier le code lui-même et que vous voulez simplement convertir des partitions, les développeurs fournissent des installateurs prêts à l'emploi pour Windows (.msi), Linux (.deb et Flatpak sur Flathub) et macOS (.dmg). Ils incluent déjà l'environnement d'exécution Java requis, vous n'aurez donc pas besoin de configurer l'environnement manuellement.

Pourquoi c'est important pour les développeurs

Audiveris est intéressant non seulement pour les musiciens. Si vous développez des services pour travailler avec du contenu média, des archives numériques ou des programmes éducatifs, ce projet offre quelques excellentes opportunités :

  • Utilisez l'API Java. Vous pouvez intégrer Audiveris comme une bibliothèque dans votre projet et automatiser le traitement des PDF de partitions sur un serveur.
  • Accédez à la structure du document original. Le format .omr contient des informations détaillées sur la géométrie des éléments reconnus, ce qui est pratique pour l'analyse ou l'entraînement de vos propres modèles.

La courbe d'apprentissage ici est tout à fait raisonnable, et le code sous licence AGPLv3 fournit un bon exemple de comment construire des systèmes complexes de traitement d'images hybrides.

Conclusion

Si vous êtes confronté à la tâche de numériser des archives de partitions ou d'intégrer la reconnaissance de partitions dans votre application, il n'est plus nécessaire de regarder les outils propriétaires coûtant des centaines de dollars. Audiveris démontre une approche pragmatique de l'OMR : combiner des algorithmes automatiques avec une correction manuelle pratique offre d'excellents résultats pratiques.

Projets similaires