背景
前の記事の最後に書いた宿題、「手持ちのタブ譜を写真に撮って、MuseScoreの楽譜として清書できるのか」の実行編。ギター雑誌やコード本のタブ譜を、練習用にMuseScoreへ取り込みたい。題材は本に載っていたFirst Loveのアレンジ譜にした。
楽譜の画像を楽譜データに変換する技術はOMR(光学楽譜認識)と呼ばれる。つまり、文字のOCRの楽譜版だ。ただタブ譜、それも歌詞付きとなると既製ツールの守備範囲が薄い。
既製の文字認識では数字が拾えなかった
まずmacOS内蔵の文字認識を試したが、タブ譜のフレット数字はページ全体で2個しか拾えなかった。この文字認識は、孤立した1〜2文字が極端に苦手らしい。タブ譜の数字は線の上にぽつぽつ置かれているので、まさに苦手の形をしている。
そこでAIと、タブ譜専用の読み取りツールをPythonで自作することにした。
譜線を消して、数字を集めて、まとめてラベル
流れはこうだ。まず写真から譜線を検出して消し、残った数字の断片を切り出す。似た形どうしを自動でグループ化して、各グループの代表だけ自分が「これは3」「これは0」とラベルを付ける。あとは全部の数字が自動で分類される。1文字ずつ読まずに、形の仲間分けで一気に片付ける方式だ。
本の写真ならではの敵もいた。ページの傾きと、本の綴じ側の湾曲。譜線を消す処理が数字を上下に分断する問題もあった。このあたりの対策を1つずつ積んで、最終的に小節線・コード名・歌詞の位置まで拾えるようになった。
権利の線引きを設計に組み込んだ
うたかたの取り込みと同じく、作る前に著作権の整理をした。今回は線引きをツールの設計そのものに組み込んでいる。
AIは出版譜の書き起こしを代行しない。AIの担当はツールの構築と構造の診断まで。変換の実行と、できた楽譜を本と突き合わせて直す校正は自分がやる。歌詞の正解データも、自分が手元の本からテキストに打ち込む。自分用なので私的複製の範囲だ。歌詞やフレットの中身はAIとのチャットに出さず、手元のファイルだけに流れるようにした。
結果
1曲まるごと、49小節がエラーなしで変換できた。コードも歌詞も入った状態でMuseScoreに開ける。音の長さの校正やセクション記号の追加など、耳と手で仕上げる作業は残っているが、ゼロから打ち込むのに比べれば大きな前進だと思う。
感想
歌詞付きのタブ譜を読み込んでみたが、なかなか苦労することがわかった。普通に元のタブ譜を使えばいいのだけど、これはこれでどんなソフトや技術があるのかが勉強になるのでよい。2曲目以降がほぼ自動でインポートできたらいいな。