Music fingerprint
全く同じアルバムの同じ曲でもユーザーによってアーティスト名や曲名表記が微妙に異なってる。例えば、Tommy february⁶ を Tommy february6 等と表記したりと。(この場合は残念ながら間違った表記の方が圧倒的多数。。。) Last.fm ではそれらが別々のアーティストと認識されて、ランキングや、このアーティストを聴いてればこれらのアーティストもお勧めというようなデータが正しく生成されないという事になる。
音楽データのアーティスト名やタイトルが正しくないのは、iTunes 等のメディアライブラリー/プレイヤーソフトが利用する CDDB の情報が間違ってる事に起因する。僕は iTunes を使ってるので CDDB は自動的に Gracenote だが、そのままで正しい事はまず無い。大文字小文字の表記方が統一されてないのは当たり前、featuring artist の表記もバラバラ。Latin文字系だけど英語圏じゃないアーティスト名やタイトルはアクセント記号が付いた文字が多いけど、それらが勝手に普通のアルファベットに直されてたりして間違ってるのはもうダサすぎる。Iceland とか特に。
データベースの更新を多数決によって確定する MusicBrainz のデータを使うと、基本的にそのアーティストのファンが納得するアーティスト/タイトル表記になる。自分が持ってる音楽データのタイトルが間違ってるかどうかをどうやって判断するか。ここでようやく出てくるのが表題の fingerprint。AAC でも mp3 でも wave でもビットレートやコーデックに関係なく、同じ曲からはいつでも同じ fingerprint が計算によって生成される。人間が指紋だけである程度特定されるのと同じように、音楽も Music fingerprint (指紋)だけで識別できると言う訳だ。
しかし、指紋と紐付けされた個人情報が無ければそれが誰の指紋かまでたどれないのは音楽も同様。MusicBrainz が fingerprint とその音楽情報を結びつけてるデータも持っており、それを tagger と呼ばれるソフトから利用する。tagger を使うと、自分の音楽ライブラリーのすべての曲に fingerprint を生成し、そこから MusicBrainz db で曲を特定して、自分のライブラリーのアーティスト名やアルバム名、曲タイトルなどを修正してくれる。tagger は何種類かあるが、僕は Jaikoz という有料のソフトを Mac で使ってる。Apple lossless でも AAC でも、iTunes が扱えるフォーマットは Jaikoz でも扱えてる。
新しくリリースされた曲やマイナーな曲等、世の中で誰も fingerprint を生成した事の無い場合がある。その場合は、Analyze して MusicIP server に fingerprint を登録する作業が必要。Jaikoz もオプションでこれに対応してるが、MacOS X のコマンドラインから利用出来る genpuid を使ってる。genpuid も Apple lossless 等の iTunes が扱うコーデックは全部扱える。新しい fingerprint は analyze してから1日くらい経たないと利用可能にならないが、利用可能になると Jaikoz で fingerprint が見えるようになる。MusicIP server に登録されたばかりの fingerprint は、MusicBrainz 内ではまだその fingerprint とタイトル情報とが紐付けされてないはず。この場合は Jaikoz から紐付け情報を自分で登録すると他の人もそれを利用できる。
genpuid の使用例。m3lib はキャッシュで、どんな名前でもどこに置いても良い。
/Applications/MusicIP/genpuid \ -logex \ -m3lib=/Volumes/iTunes/cache.m3lib \ -xml \ -r \ /Volumes/iTunes/iTunes\ Music/Kate\ Voegele/ > kate_voegele.xml
Music fingerprint の種類は MusicBrainz が利用する MusicIP 以外にも Last.fm 独自のとか他にもいくつかある。Last.fm 独自の fingerprint が具体的にどう使われるのかよく理解してないが、将来的にはユーザーの tag が間違ってても、scrobble されるときには正しい tag に修正してくれるという方向になるはず。。