内蔵歌詞まとめ

音楽ファイル内蔵歌詞について、開発していく中で分かったことについて簡単に触れておきます。
多くの音楽ファイルは、ファイルの中に歌詞を内蔵することができます。内蔵歌詞は大抵の場合、非同期歌詞(つまり、ただのテキスト)となっていますが、同期歌詞を内蔵する場合もあります。歌詞データは音楽ファイルの中にタグ(タグフィールド)として埋め込まれています。
ところで、一口にタグと言っても様々なフォーマットが存在します。これは、音楽ファイル固有の場合もありますし、異なる音楽ファイル間で共通して用いられる場合もあります。タグのフォーマットとファイル形式の対応を以下に示します。

  • ID3:MP3標準のタグフォーマット。ID3v1とID3v2があるが、通常はID3v2を使用する。
    対応形式: MP3(.mp3), AAC(.aac)
  • Lyrics3: MP3のタグフォーマット。ID3と互換性は無い。v1とv2がある。”Shiang-shiang’s Lyrics Displayer”というWinamp の歌詞表示プラグインが埋め込むタグが元となっている…らしい。
    対応形式: MP3(.mp3)
  • Vorbis Comment: Vorbis音楽ファイル標準のタグフォーマット。
    対応形式: Ogg Vorbis(.ogg), Flac(.flac)
  • iTunes MP4: AppleのソフトウェアがM4Aファイルに付加するタグフォーマット。
    対応形式: AAC(.m4a)
  • ASF (Windows Media): Windows Media形式で使用されるタグフォーマット。
    対応形式: ASF(.asf), WMA(.wma)
  • APE tag: Monkey’s Audio音楽ファイルで使用されるタグフォーマット。様々な音楽ファイルに内蔵されている場合がある。
    対応形式: Monkey’s Audio(.ape/.mac), MP3(.mp3), WavPack(.wv)
  • RIFF: 共通コンテナフォーマット。この構造を持つファイル形式は、.wavや.aviなどがある。本来は様々なデータを入れる汎用フォーマットだが、音楽ファイルはWAVE形式が一般的。
    対応形式: Wave(.wav)(PCM音源の他、MP3等が格納される場合もある)

これらのタグフォーマットは、各タグフィールド毎に識別子(ID, フィールド名)を持っています。この識別子はタグフォーマット毎にバラバラです。フォーマット間の識別子の対応付けについては、音楽情報データベースの大手であるMusicBrainz.orgTag Mappingを参考にするのが良いと思います。これが正式というわけではないですが、特にこだわりが無い限りはこれに従うのが無難です。各種アプリケーションやライブラリも、これを基準にして作られている可能性があります。それ以外には、Mp3tagのTag field mappingsなども参考になるでしょう。
これらを踏まえた上で、各タグフォーマットについて内蔵歌詞の識別子を以下に示します。

  • ID3v2: USLT(非同期, ID3v2.2はULT), SYLT(同期, ID3v2.2はSLT)
    [ID3v1は無し]
  • Lyrics3v2: LYR (同期)
    [Lyrics3v1は識別子無し]
  • Vorbis Comment: LYRICS (非同期)
  • iTunes MP4: ©lyr (非同期)
  • ASF: WM/Lyrics (非同期)
  • APE tag: Lyrics (非同期)
  • RIFF: ILYC (非同期)
    [公式のものではなく、主に日本のユーザ間で用いられていた模様]

これらに加え、アプリケーションが独自に識別子を与えて、タグフィールドを定義する場合があります。これらは、形式問わず様々な音楽ファイルに内蔵される可能性があります。とりあえず認識しているアプリケーション及び識別子には、以下のような物があります。(間違っているかもしれませんが…。)

現在、私が把握している音楽ファイル内蔵歌詞のタグフィールド(つまり、Medolyで表示可能な内蔵歌詞)については、以上になります。とりあえず、これだけ対応しておけば読めないものはほとんど無いだろう、と思っているのですが、アプリケーションが独自に付与するタグについては把握できないので、それについては個別に対応していくしかありません。

もしここに書かれていない内蔵歌詞がありましたら、ご連絡ください。Medolyは”Media Player for Lyrics”を掲げているので、対応可能な範囲は全て対応したいと思っています。
余談ですが、Medolyでは全ての音楽ファイルについて上記の識別子(非同期のみ)の存在をチェックします。そのため、Vorbis CommentにUSLTタグが含まれたり、多少イレギュラーなパターンも対応できるはずです。これは、作りが雑な音楽フォーマット変換ツールが、変換前のタグの識別子をそのまま残してしまうような状況を想定しているためです。