liebharc/homr

homr is an Optical Music Recognition (OMR) software designed to transform camera pictures of sheet music into machine-readable MusicXML format.

homr – 楽譜画像をMusicXMLに変換するAI光学楽譜認識

機能

  • 楽譜の写真やPDFを、音楽ソフト(例:MuseScore)で読み込めるデジタル形式のMusicXMLファイルに変換します。
  • 変換はコマンドラインツール(homr <画像>)でローカルに実行されます。出力ファイルは入力画像と同じ場所に保存されます。

仕組み

  1. セグメンテーション – UNetスタイルのニューラルネットワーク(oemerプロジェクトから借用)が画像をスキャンし、基本要素(五線、符頭、符幹、休符、音部記号、小節線など)を識別します。各要素のバウンディングボックスを出力します。
  2. 五線の再構築 – 検出された要素を使用して「五線アンカー」(音部記号、小節線)を見つけ、五線間の距離(ユニットサイズ)を推定します。これにより、斜めの写真や間隔が不均一な場合でも五線を再構築できます。ブレースやブラケットも検出され、大譜表(ピアノ)や複数の声部を統合できます。
  3. 記号認識 – 各五線は歪み補正(遠近補正)され、トランスフォーマーモデル(Polyphonic‑TrOMRベース)に入力されます。トランスフォーマーは音符の長さ、音高、変化記号、休符、連符、いくつかのアーティキュレーション記号のシーケンスを予測します。また、各記号のおおよその画像上の位置も出力し、MusicXMLにコメントとして保存されます。
  4. MusicXML書き出し – 記号シーケンスは、MuseScore、Sibelius、その他の楽譜作成ソフトで開ける標準的なMusicXMLファイルに変換されます。

始め方

  • Python 3.11/3.12が必要です。
  • uv(最速)またはPoetryでインストールします。CPU推論でのuv例:
    uvx --from 'homr[cpu]' homr path/to/score.png
    
  • GPU高速化の場合は、cuda(NVIDIA)またはrocm(AMD)に置き換えます。
  • 複数画像を一度に処理:homr img1.png img2.png → img1.musicxml、img2.musicxmlを生成。
  • 外部ツールrelieurで複数のMusicXMLファイルを結合できます。

デモとリソース

現在の制限

  • ト音記号とヘ音記号の音高とリズムに焦点を当てています。
  • 強弱記号、いくつかの記号以外のアーティキュレーション、ダブルシャープ/フラット、その他の高度な記譜記号は扱いません。

技術的なハイライト

  • 2段階パイプライン(セグメンテーション→トランスフォーマー)は最先端のOMR研究を反映しています。
  • oemerの事前学習済みUNetモデルとPolyphonic‑TrOMRのトランスフォーマーモデルを使用。
  • MusicXMLの各音符に位置コメント(<!-- imgpos: x, y -->)を追加し、後処理を容易にします。

誰が使うべきか

  • 印刷された楽譜をすばやくデジタル化したいミュージシャンやアーキビスト。
  • 音楽関連の機械学習パイプラインを試す研究者。
  • 楽譜を入力として取り込むアプリ(練習アプリ、音楽検索エンジンなど)を開発する開発者。

引用 学術研究でhomrを使用する場合は、READMEに記載されている元のoemerプロジェクトとPolyphonic‑TrOMRプロジェクトを引用してください。


要約 – homrは、最新のディープラーニング(UNet+トランスフォーマー)を適用して楽譜画像を編集可能なMusicXMLファイルに変換するオープンソースのPythonツールで、簡単なコマンドラインでCPUまたはGPU上で実行できます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト