背景

うたかたを作ってすぐの宿題が、曲を増やすことだった。パブリックドメインの唱歌だけでは弾き語りのレパートリーにならない。J-POPや洋楽を入れたい。ただ歌詞には著作権があるし、1曲ずつ手で打ち込むのは面倒だ。

法律の線引きをAIと整理した

作業を始める前に、どこまでやってよいのかをAIと整理した。

  • 手持ちの楽譜やコード本からの手入力、購入した譜面のスマホ撮影は、自分用なら私的複製の範囲
  • コード譜サイトを機械的にスクレイピングするのはだめ
  • 作ったファイルを公開・配布するのもだめ。だからうたかたはローカル運用を続ける
  • 歌詞やメロディを含まない「コード進行と構成」だけなら、進行自体の著作物性が薄いのでほぼ自由

そしてもうひとつ、AI側の制約がある。AI自身は既存曲の歌詞を出力できない。これも複製にあたるからだ。そこで役割分担を決めた。AIは歌詞に触れない変換ツールを作る。歌詞そのものは、自分が正規のソースから流し込む。

紙の譜面をテキストに変換する

コード本の譜面は「歌詞の行の上にコードの行が載っている」形式が多い。これを、コードが歌詞の中に [C] のように埋まったうたかたの形式へ変換するツールを作った。コードが歌詞のどの文字の上にあるかを、桁の位置から計算して埋め込む。全角文字は2桁として数える、というあたりが地味に大事だった。

PDFも直接読めるようにした。購入した譜面にはパスワードがかかっていることがあるが、これは購入時に渡されたパスワードを使って開くだけ(保護の回避ではない)。譜面によってはコードと歌詞の行順が逆に抽出されるので、どちらの並びかを多数決で自動判定する処理も入れた。

画像しかない譜面はOCRで

古い譜面のPDFには、文字情報がなく実質画像というものもある。ここはmacOSに入っている文字認識(OCR)を使い、単語ごとの座標を取って、位置関係から元の桁揃えを組み立て直すことにした。

OCRはコードネームをよく読み間違える。C#m7がCHm7になったりする。よくある誤読のパターンを修復する辞書を持たせて、実物を通すたびに育てている。それでもコードが密集した譜面では間違いが残るので、最後は目視で確かめる前提だ。

一括で入れたら、確認が大変だった

昔から書きためていた持ち歌メモがあったので、そこから16曲を一気に取り込んだ。ここで学んだのは、変換した譜面は結局1曲ずつ目で確かめないと使えない、ということだった。全曲に「未検閲」というタグを付けて、確認が済んだら外す運用にしたのだが、たまった未検閲を消化するのにかなりの時間をとられた。

自分の手入力メモは公共の譜面より精度が低く、直す量も多い。以後は一括をやめて、「1曲インポートしたら、その場で確認して登録」に切り替えた。収録は35曲を超えて、本番のレパートリー帳らしくなってきた。

感想

各曲を確認して変なところを直すのは、結構手間だった。自分で手入力した情報を元にすると精度が下がるな、というのも発見で、公共の譜面ならわりと精度が高い。一括で入れたから面倒になったわけで、今後は1曲ずつインポートして確認する方が楽だと思う。