訂正: 歌詞のMP3への埋め込みツール

歌詞のMP3への埋め込みツール」を投稿してすぐ後、自分が大きな考え違いをしていたことに気がついた。

MP3への歌詞埋め込みには、Lyrics3と、ID3v2の二つの方法があるようだ。そもそも、MP3のメタデータ埋め込み形式にはID3v1とID3v2がある。名前が与える印象とは違い、この二者に互換性はない。古い前者がアドホックな、限定された機能しかない方法なのに対し、新しい後者は、より広範なデータに、より柔軟に適応できる。埋め込み位置も、前者がファイルの末尾なのに対し、後者はファイルの先頭である。Lyrics3形式は、ID3v1の一部ではないが、アプローチとしてはID3v1と同じくアドホックな方法で、埋め込み位置もファイルの末尾からID3v1についで二番目である。ID3v2はその枠組みの中で埋め込み可能な「フレーム」の一つとして歌詞情報がある。この歌詞情報には、タイムスタンプ情報も含む同期歌詞(通称SYLT)と、含まない非同期歌詞(同じくUSLT)がある。言うまでもなく、SYLTはカラオケなどの用途に最適である。

さて、昨日の記事で、Lyrics Editorに関して以下のように書いたが:

日本語によるLyrics Editorに関する説明があったので、喜び勇んでLyrics Editorをインストールしてみた。確かに、日本語による歌詞も埋め込める。コンパニオン・ソフトのWinampプラグインでそれが期待したように表示される。一見めでたい。しかし、自分の目的には合わない。

Windows Media Player 9でその埋め込んだはずの歌詞が表示されない。調べてみると、歌詞埋め込みのフォーマットは複数あり、このLyrics Editorは、それの新しいLyrics3 ver.2.0という形式のみサポートしている。この、「のみ」が問題で、古いバージョンのLyrics3については全く関知しないようなのだ。すなわち、Lyrics3 ver.2.0 による歌詞情報がなく、Lyrics3による歌詞情報だけ存在するようなMP3ファイルに関しては、Lyrics Editorも、Winampプラグインも、あたかも存在しないがごとく、それを完全に無視してしまう。

この理由付けはおそらく正しくない。 WMP9で表示されないのは、それがID3v2による歌詞データのみを表示するから、ということなのだと思う。ちなみに、Lyrics EditorがID3v2ではなく、ID3v1の楽曲データを表示するのは、Lyrics3データとともどもID3v1データがファイルの末尾にあり、Lyrics3データを読み込むついでにID3v1データも読み込めるから、という単純な理由だと思われる。

WMP9で歌詞情報が表示されることが必須条件だとすると、ID3v2での歌詞埋め込みをサポートしているエディタを探せばよいということになる。SYLT Lyrics Plugin for Winampというのがその一つだが、いざ使ってみると、これまた問題が。詳しくは、末尾に作者宛てに出したメールを引用しておくので、それを見て頂くとして、大きく問題は二点。

まず、この作者、わざわざフランス語での説明ページまで用意しているくらいなのに、フランス語には必須のアクセント付き文字(áàâöç等)を含む歌詞をちゃんと扱ってくれない!(だめじゃん!)次に、既に歌詞情報が埋め込まれているMP3を読み込むときに、タイムスタンプをちゃんと読んでないようなのだ。

う~む、というわけで、いまだにWMP9でちゃんと表示されるような形で、フランス語の歌詞を埋め込むことのできるツールには出会えてない。

ところで、外部マイクを利用した録音が可能ということでポイントの高いiAudio U3を狙っているのだが(現在2GBが最大容量だが、より高容量のが出るのではないか、と待っている)、これの歌詞埋め込みはどういう形式で行われるのであろう?

U3にはjetAudioというWindows用デジタル・メディア管理ツールが付属するが、これにはLyric Makerなるツールが付属していて、これが歌詞編集を担当するようだ。Lyrics3とSYLTをサポートするように読めるが、U3もjetAudioも手元にないので検証のしようがない。

そこで、K5 Lyrics Editorを使い、あらかじめ用意されているU3用の設定を用いてASCII文字のみからなる歌詞を埋め込んでみた。これを WMP9で再生してみると、音は再生されるが、歌詞は表示されない。次に、上述のSYLTプラグインを含むWinampで再生すると、音はちゃんと再生される。しかし、SYLTプラグインによる歌詞表示は、複数行が一行にまとめられている上に文字化けしている。もっとも、このSYLTプラグインそのものの動作も怪しいので(上述)、どこに問題があるのか、今ひとつ特定できないのだが。

もう、何がなんだかわけわからない。PC上でも(しかもできれば標準のWMPで)、また、ポータブル・オーディオ・プレーヤ上でも(特にU3上で)、正しく表示されるような形で歌詞を埋め込めるものとはなから決めつけていたわけだが、どうもその前提そのものが怪しいような気がしてきた。

なお、ID3関係の規格についてはID3.org上に開発者向けのページがある。ID3のタグを扱うライブラリとしては、オープン・ソースのid3libが知られているようで、それを利用した各種ツールがある。

付記:

SYLT Lyrics Plugin for Winampの作者に送ったメールから:

  • Does it handle accented characters, such as áàâö correctly? I thought I did not need to worry about it, because you seem to be proficient in French and are willing to advertise your software to French-speaking people. However, after I input accented characters with your plugin, when I play the same MP3, the accented characters appear garbled. Not only that, Windows Media Player 9 (WMP9) sometimes thinks the file is corrupted and would not play it.
  • While on the topic of characters, which character encoding does your plugin use, ISO-8859-1 or Unicode? (It would be great if you let us choose which, when we write the lyrics in.)
  • I have another SYLT editor for embedding Japanese text (I am Japanese). It does what it is advertised to do, and WMP9 seems to be fine with what it produces.
    Suppose I edited an MP3 file with that editor, and embeded text ASCII charaters only as lyrics. This file plays exactly as it is supposed to on WMP9. When I try to edit this MP3 file in your plugin, however, the time stamp information does not seem to be read in correctly. This is obvious because some time stamps are read in as [00:00.000], when they were clearly not so in the original.

広告
カテゴリー: Computers and Internet パーマリンク

訂正: 歌詞のMP3への埋め込みツール への7件のフィードバック

  1. Takafumi より:

    ざっくりと見たのですが、Lyrics3のスペックによれば、初期のものが ISO-8859-1、Lyrics3 V2.00は"The data in a field can consist of ASCII characters in the range 01 to 254 according to the standard"なんて書かれてるので、それ以外のものは多分だめなんじゃないでしょうか?Lyrics3 V2.00にしたって、エンコーディング情報が保存されないので、壊れる可能性もありますね。たとえば、タグを書き込んだ人は iso-8859-1だと思って書いたが、読み込んでる人はiso-8859-6だと思って読み込む、など。
     
    とは言うものの、おそらくはエンコーディングなんてこと何にも考えてないでしょう。単にシステムデフォルトエンコーディングで動いてるのではないかと。日本語がなんとなく通るのも、単なる gabage in gabage out じゃないでしょうか?
     
    仮にフィールドの読み書きで文字が壊れないとしても、歌詞表示に使われるフォントがそのエンコーディングに対応していないとだめです。iso-8859-1文字列なのに、フォントがshift-jisであればアクセント文字は出ません。
     
    すべて、Windows の標準的なAPIで処理されてるなら、お持ちのWindows 2000のシステムロケールを Latin-1 言語を使う国のどこかに設定すれば(たとえばアメリカなど)、システムデフォルトエンコーディング(いわゆるWindows のコードページ)が windows-1252 (iso-8859-1相当)になりますから、それに依存している処理はうまく動くはずです。たぶん入力も表示もうまくいくんじゃないかと思いますが。それで壊れるようなら、特定のエンコーディングを前提とした処理があったり、エンコーディングがハードコードされたりしていて、本当にストリングが壊れるのでしょう。
     
    日本語環境と共存したいのであれば、文字処理をUnicodeで行い、Fontも Unicode対応のものを使う必要があると思います。いずれにしろ "The data in a field can consist of ASCII characters in the range 01 to 254 according to the standard. "と書かれているので、コードポイントに00 や FFが現れる文字は、仕様上は扱えないと思います。たとえば、Windows-1252でもÿ (U+00FF / Latin Small Letter Y with Diaeresis)なんかは扱えないことになります。
     
    ID3V2だと、Synchronised lyrics/text の仕様の中にEncoding情報を記録するところがあり、Unicodeを指定できますから、仕様上は今回の問題は解決するはずです。
     

  2. Yasuro より:

    おお、専門家歓迎降臨!コメントどうもありがとう。
    残念ながらよくわからないところもあるのだけれど、僕の理解が正しいのであれば、日本語・英語・フランス語を全て、一つの方法で統一的に扱うことを目標に据えるのなら:
    – 日本語が扱えないという理由でLyrics3 はアウト(なんとなくLyrics3も少なくとも新しい規格ではUnicodeが扱えると思い込んでた。実にありがたい指摘。)。したがって、ID3v2による埋め込みしか消去法で残らない。
    – で、ID3v2で埋め込みをする際も、明示的に文字エンコーディングを指定してないようなツールだと、Windowsのロケール設定のために思うように動作しない可能性があり、しかるべきロケールに変更するとうまくいく可能性がある。フォントの設定にも注意。
    …てな理解でよろしいでしょうか?
    ID3v2だとUnicodeに統一することで仕様上問題ないのは理解できるのだけれど、日本語・フランス語の双方に関して問題なく動作してくれるツールが残念ながらいまだに見つからないのよ。何か知ってる?
    もっと問題なのは、ポータブル・プレーヤ側の方で、Windows Mobileを採用しているようなモバイル・デバイスでもハイエンドの方でなければ、Unicodeを直接採用しているとは思えないのだけど、どうなんだろう。MP3プレーヤは、韓国製のものがポピュラーだけれど(iAudioも韓国Cowon社の製品)、そういったプレーヤでは、どう扱っているのだろう?bg* 君の言うとおり、ユーザのロケール設定に依存して、たまたまうまく行ってるように見える、ということなんだろうか。…実にありがちな気もするけど。:)

  3. Takafumi より:

    Lyrics3でもID3v2でも、仕様を無視したつくりになっていれば、動きはロケール依存だと思われます。Lyrics3の場合、フィールドの文字はiso-8859-1として解釈すべきですが、実際は日本語が通るソフトがあるということは、そういったソフトはその仕様に従っていないということになります。何もエンコーディングについて考えていないプログラムなら、普通文字列処理や表示はロケール依存です。そういったソフトはロケールをうまくあわせてあげると動く可能性があります。つまり、日本語ロケールのWindowsで見れば日本語が扱え、FrenchロケールのWindowsならフランス語が扱えるのではないかと。ちゃんとUnicode対応していれば、ロケールに依存せずすべての対応文字が扱えるはずです。
     
    ID3V2は仕様的には多言語対応しているので、プレイヤーや歌詞を埋め込むソフトが、きちんとそれを実装していれば大丈夫なんですが、実際のところどうなんでしょうかね?エンコーディング情報のバイトなんて、見てなかったりするんじゃないでしょうか?
     
    ポータブルプレイヤーに関しては、やはりフルセットのUnicodeフォントをちゃんと積んでいるかどうかがポイントじゃないかと。内部的にきちんとUnicode処理していても、フォントがサブセットだと、グリフのないコードポイントはWhite Squareなんかに化ける可能性あります。日本で売ってるものなので、日本語+Latin1くらいのグリフをもつUnicode フォントのサブセットなんかが入ってるかもしれません。そうだと仮定すると、たとえばアラビア語やヘブライ語なんかは表示できません(今回は関係ないですが。) フォントも複数フレイバーもったりすると馬鹿に出来ないサイズになりますからねぇ。
     
    ソフトウエアプレイヤーに関してはいまのところ心当たりないです。内部がちゃんと動作しているなら、表示フォントを選べるとか、歌詞のランゲージ情報にもとづいて、フォントを置き換えてくれるようなプレイヤーがあればうまくいきそうですね。サンプルmp3ファイルとかあります?もし見かけたらお知らせしますよ。
     

  4. Yasuro より:

    お~~~、何度もコメントどうもありがとう。(^^)
     
    K5 Lyrics EditorはたぶんちゃんとUnicodeで日本語歌詞をID3v2で埋め込むことが出来ていると思う。WMPでもちゃんと表示される。で、問題はUnicodeだろうとISO-8859-1だろうと、アクセント付き文字を含むフランス語をID3v2で埋め込むことに成功したことがないことなのよ。なので、サンプルそのものが作成できない。探してみても他人の作ったサンプルも見つかってない。まいっちんぐ。(T-T)
    K5 Lyrics Editorの作者はそれにちゃんと対応するきはゼロの模様(http://kkkkk.net/?key=bbs.thread&thread=0312)。この記事で挙げたSYLT Lyrics Plugin for Winampの作者からは問い合わせに対して返事がないし、これはもう自作するしかないのかなぁ、とちょっと思い始めてるよ。
    ところで、上の掲示板でK5 Lyrics Editorの作者は、U3は独自形式で、ID3v2のUSLTフレームを使っているらしい。そうすると、PC用には、同期歌詞用の本来のSYLTフレームにUSLTフレームとは別に書き込めば、原理的には同一MP3ファイルで、PC上での再生と、U3上での再生が両立できるのかな。PC上のプレーヤでは、USLTフレームとSYLTフレームが並存するときは、SYLTフレームを優先してくれないと成立しないけど。

  5. Unknown より:

    Amberdigital Branch,Southern Stars Enterprises Co is specializing in the development and manufacturing of advertising displays, advertising player and LCD displays. Established in 1996, we have explored and developed the international market with professionalism. We have built a widespread marketing network, and set up a capable management team dedicated to provide beyond-expectation services to our customers.

    amberdigital Contact Us
    Southern Stars Enterprises Co (Hong Kong Office)
    Add:3 Fl, No.2, Lane 2, Kam Tsin Tsuen, Sheung Shui, Hong Kong
    Tel:+852 2681 4099
    Fax:+852 2681 4586
    Southern Stars Enterprises Co (Shenzhen Office)
    Add:DE, 16/F, Building 2, Nanguo Tower, Sungang Road, Shenzhen, China
    Tel:+86 755 2592 9100
    Fax:+86 755 2592 7171
    E-mail:sstar@netvigator.com
    website:www.amberdigital.com.hk
    alibaba:amberdigital.en.alibaba.com[aaegeffdcgbcgh]

  6. Unknown より:

    Hi,Do you need advertising displays, digital signages, advertising player and LCD displays? Please go Here:www.amberdigital.com.hk(Amberdigital).we have explored and developed the international market with professionalism. We have built a widespread marketing network, and set up a capable management team dedicated to provide beyond-expectation services to our customers.
    amberdigital Contact Us
    website:www.amberdigital.com.hk
    alibaba:amberdigital.en.alibaba.com[geaeaffhcebghd]

  7. Unknown より:

    Hi,Do you have used LCDs, second hand LCDs, used flat screens and used LCD monitors? Please go here:www.sstar-hk.com(Southern Stars).We are constantly buying re-usable LCD panels and working for LCD recycling.The re-usable panels go through strictly designed process of categorizing, checking, testing, repairing and refurbishing before they are re-used to make remanufactured LCD displays and TV sets.Due to our recent breakthrough in testing and repairing technology of LCD, we can improve the value for your LCD panels.
    website:www.sstar-hk.com[ibdb

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中