Music OCR

Qu’est-ce que l’OMR ?

On appelle OMR l’ « Optical Music Recognition », issu du terme OCR (« Optical Character Recognition »), c’est-à-dire reconnaissance optique de caractères, dont il est une certaine forme d’extension.

Le but de l’OMR est donc de retranscrire des partitions papier scannées, en un format musical quel qu’il soit (MIDI, ou préférablement MusicXML).
Mais la problématique de l’OMR est néanmoins assez différente de celle de l’OCR.

L’OCR se base sur des caractères lus horizontalement et ligne par ligne, ce qui constitue la dimension verticale de la reconnaissance. Les caractères peuvent varier selon l’alphabet utilisé (qui est généralement un paramètre d’entrée du système), la police de caractères, leur taille, leur espacement, et plus ou moins leur irrégularité de hauteur ou de frappe si on a affaire à du texte dactylographié.

Mais l’OMR va déjà plus loin dans la dimension verticale dans la mesure où cet axe sert aussi à déterminer la hauteur d’une note donnée, par rapport à la position à laquelle elle se situe sur la portée.
La verticalité est également mise en œuvre par les accords dont les notes doivent absolument être jouées ensemble.

Petites différences, grosses conséquences…

Une autre divergence notable est que les divers graphèmes d’un texte sont relativement différents alors que les notes (qui constituent l’essentiel de la partition – mais pas uniquement –) sont souvent très similaires. Et leurs différences graphiquement minimes peuvent avoir des conséquences majeures susceptibles de mettre en péril la cohérence de la partition reconstituée.

Par exemple une noire pointée a une fois et demi la durée d’une noire, or ce qui les diffère est seulement un petit point (de prolongation) qui la suit.
Si celui-ci n’est pas reconnu il manquera un demi-temps dans une mesure, et celle-ci étant inconsistante, il faudra appliquer une correction manuelle pour la rétablir.

Des représentations multiples d’une même note

Il existe ensuite de multiples représentations d’une même note.
Par exemple, le symbole individuel d’une croche est différent de celui de deux croches liées de même hauteur (hampes reliées par une barre – la ligature – horizontale dans ce cas) , encore différent de deux croches liées de hauteur différente (hampes reliées par une ligature oblique) :

Idem pour une double croche, la situation pouvant être encore pire si elle figure dans une croche pointée-double, car la 2e barre est tronquée…

Sans compter que la hampe de la croche peut pointer vers le haut ou vers le bas, et avoir une longueur variable.

Rien qu’avec les exemple cités, on peut arriver à 8 représentations différentes d’une croche.

La chose est encore complexifiée par le fait que lorsque les croches sont reliées par une ligature oblique, celle-ci peut aller soit vers le bas, soit vers le haut avec un angle indéterminé….

Enfin, parfois la note peut être écrite en « petites notes » (appoggiatures), tout en conservant la même durée …. (les appoggiatures doivent généralement être jouées hors tempo).

Des symboles fondamentaux conditionnant entièrement la partition

Par ailleurs certains symboles comme la clef ou l’armure conditionnent la hauteur de l’ensemble des notes de la partition. Il est donc indispensable qu’ils soient parfaitement reconnus.

Des ambiguïtés logiques

Par exemple sur la figure suivante :

on a l’impression que la main droite commence en même temps que la main gauche puisqu’il n’y a pas de silences préalables sur la portée du haut. En fait la mesure est jouée en arpège, et c’est une alternance main gauche/main droite qui a été écrite sur deux portées car le mouvement est ascendant et nécessite donc que la main gauche soit écrite sur la portée de la main droite.

Des difficultés liées à l’impression

On voit également sur l’exemple suivant, que les double croches peuvent ‘baver’, les lignes peuvent être proches, parfois pas bien parallèles, voire même se confondre totalement:

Des notes, mais pas seulement…

On a parlé essentiellement des symboles de notes jusqu’à présent, mais les partitions intègrent de nombreux autres symboles, comme les numéros de mesure, les nuances, les doigtés, les paroles, le tempo, etc…
Et la position de ces éléments textuels est importante puisqu’elle doit être associée aux bonnes parties musicales…

On a donc pu appréhender toute la complexité que représente la reconnaissance d’une partition par un OMR…

Comment marche l’OMR ?

La reconnaissance optique de musique étant complexe, on décompose généralement le problème en plusieurs étapes successives :

  • L’identification des lignes de la portée
  • L’identification des graphèmes musicaux
  • La classification des symboles musicaux
  • L’analyse sémantique musicale

Identification des lignes de la portée

L’opération (nommée projection horizontale), consiste à compter pour chaque ligne scannée horizontalement, le nombre de pixels noirs.

Cela permet de tracer un histogramme horizontal dont les pics correspondent aux lignes de la portée.

Le traitement nécessite que la page soit tout à fait bien placée horizontalement sur le scanner car si elle est légèrement en oblique, cela peut tout à fait fausser les résultats.

Exemple avec l’extrait suivant parfaitement placé sur le scanner :

La projection horizontale donne le résultat suivant :

faisant clairement apparaître là où sont les lignes de la portée.

A noter que cette technique ne fonctionne pas pour identifier les lignes supplémentaires des notes allant au-delà ou en-deçà de la portée, et qui devront être identifiées séparément.

Identification des graphèmes musicaux

Une fois les lignes identifiées, on peut passer à l’identification des graphèmes musicaux.

Un des moyens consiste à supprimer les lignes en les remplaçant par des pixels blancs sauf si l’on détecte d’autres pixels noirs à proximité (au dessus ou au dessous de la ligne), auquel cas on considèrera que c’est un graphème à cheval sur une ligne.

Cela peut introduire des espaces à des endroits où les graphèmes se confondent ou touchent les lignes de la portée. Les symboles graphiques seront alors ‘incomplets’.

Exemple :

Après suppression des lignes sur la partie (a) , on obtient la partie (b) :

Sur (b), on voit que le Mi b est ébréché sur la partie haute de sa tête, et la tête de la clef de Fa est considérée comme un graphème distinct du corps de la clef de Fa.

Il faut donc reconstituer les morceaux épars qui correspondront à un même symbole musical.

Une des techniques consiste à relier entre eux deux graphèmes dont le rectangle englobant avait une frontière commune avec la ligne supprimée. Dans ce cas, cela permet d’obtenir la figure (c) suivante :

Une autre approche consiste à ne pas supprimer les lignes afin de ne pas fragmenter les graphèmes, mais on se heutera à d’autres difficultés lors de classification des symboles musicaux, les lignes pouvant gêner ou rendre plus difficile la détection.

Classification des symboles musicaux

Comme il est trop difficile d’essayer d’identifier des symboles complets, on essaie plutôt d’identifier des sous-symboles aussi appelés primitives (ex têtes de notes, hampes, altérations, etc …).

Pour cela on peut utiliser des techniques comme le ‘template matching’ qui consiste à localiser dans une image une primitive en faisant « glisser » son motif de référence sur l’image jusqu’à le « reconnaître ».

A partir du moment où on a détecté des primitives, il faut construire des « classifications de symboles musicaux » à partir de celles-ci, c’est à dire retrouver les symboles musicaux (ou les groupes de symboles musicaux) qui contiennent les primitives identifiées.

A partir de l’extrait précédent, cela permet d’arriver à déterminer les classifications suivantes entourées d’un rectangle :

A partir de ce moment, les vrais symboles musicaux sont identifiés graphiquements, mais on ne sait pas encore quelle est leur valeur musicale.

Analyse sémantique musicale

Cette dernière étape consiste à extraire la sémantique des classifications musicales précédemment établies et à la stocker dans un format musical de sortie.

On doit en particulier interpréter correctement les symboles selon leur contexte global.

Par exemple, connaissant la position d’une note sur une ligne de la portée, sa hauteur dépend non seulement de la clef utilisée, mais de l’armure associée à la mesure.

Autre exemple, le nombre de temps associé à une blanche dépend de la signature rythmique de la mesure. Elle peut valoir 2 temps en 4/4 ou 1 temps en 2/2.

La génération dans un format donné partira souvent d’une représentation interne arborescente et sera plus ou moins complexe en fonction du format de sortie. Par exemple si le format de sortie est le MIDI, les paroles, les symboles de phrasé, etc… seront ignorés, alors qu’ils seront restitués pour un format MusicXML.

Il y a encore du travail ….

L’OMR donne aujourd’hui des résultats corrects avec un sous-ensemble des symboles musicaux qu’il est possible de trouver dans une partition classique, allant jusqu’au début XXe.

Mais de nombreuses partitions regorgent de notations difficiles à interpréter correctement. En voici un petit florilège ….

  • Plusieurs notes non alignées à la verticale, non reliées par une même queue, non de même durée et constituant un accord:

  • Note ayant plusieurs hampes de durées différentes

  • Note doublée avec des durées différentes..

  • Note avec une tête dont la durée ne correspond pas à la queue

  • Ligne de glissendo interrompue par une clef:

  • Ligne pointillée verticale :

  • Octava particulièrement sinueuse…

  • Accords en ‘pyramide’…

  • Ligne de phrasé sinueuse….

  • Ligne de phrasé rompue…

  • symboles recouverts par un crescendo, clef de sol au milieu d’un triolet …

  • Trémolos avec ou sans hampes ….

  • trille interrompue

  • et se terminant la ligne suivante:

  • triolets marqués avec des traits horizontaux ou obliques…

  • Triolets marqués seulement les premières fois…

  • Triolets sous-entendus compte-tenu de la signature rythmique…

  • Résonance harmonique

Il arrive même parfois que la reconnaissance textuelle soit possible (il serait possible de réimprimer la partition à l’identique), mais que la vraie compréhension musicale soit incorrecte. Tout simplement car dans certains cas elle n’est pas écrite.

Un exemple pourrait en être un extrait du concerto pour la main gauche de Ravel, où à la première page, l’accord de ré (entouré en bleu) n’est pas frappé, mais seulement ‘enfoncé’ après l’accord mi-sol-la pour résonner à partir de ses harmoniques issus des deux accords précédents, lorsque la pédale est relevée.

Cette information n’est pas écrite ni symbolisée sur la partition, mais c’est pourtant comme cela que ça doit être restitué si la partition est par exemple jouée par un Disklavier.

L’OMR a encore de beaux jours devant elle….

_________

Article librement adapté de « The Challenge of Optical Music Recognition » par DAVID BAINBRIDGE et TIM BELL

6 commentaires :

  1. Effectivement, tout ceci est très intéressant….

  2. Quand est il des accords Jazz ?
    Sauriez-vous si il a un bon comparatif d’OMR sur la toile ?

  3. ou peut on trouver un OMR gratuit svp?

  4. Très intéressant. Merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *