FreeBSD/Linux 上で waveから mp3 を作成し、mp3 のタグを編集する

TechRacho をデーモン君だらけにしようとしている榊原です.

テープから wav にした,古い曲があったので,iPhone で聞けるようにしてみました.例によって,FreeBSD 上で全て行ないます.

wav → mp3 変換

テープから録画したデータは,wave でした.まずは,mp3 にしなければなりません.GOGO のこーだ,などもありますが,ffmpeg を選んでおくと,今後動画変換をしたくなった時にも便利です.ffmpeg の場合,LAME を利用します.昔から定評のある mp3 encoder ですね.

今回は,wav のファイル名が全て曲名になっていました.なので,mp3 というディレクトリを作成し,以下のようなコマンドで一括変換しました.

  % for HOGE in `ls *.wav`
    do 
    ffmpeg -i $HOGE mp3/`basename $HOGE .wav`.mp3 
    done

これで,mp3 ディレクトリの中に mp3 に変換されたファイルが入りますね.

ID3 タグを設定する

ここが一番面倒です.

ID3 タグ編集ツールの選定

mp3 の ID3 タグは,バージョンが ID3v1.1 から ID3v2.4 まで,様々存在します.さらに,文字コードに関する仕様が決まっているわけでもありません.なので,自分でどのバージョンを利用し,どの文字コードを選ぶのかを決定する必要があります.

僕は前述の通り,普段 iTunes を使って mp3 を作成しています.更に,普段利用のラップトップは,Windows なので,エクスプローラでちゃんとタイトルなどが見えることが大事です.

昔は,mp3info というコマンドが ID3 を編集するのに手頃なコマンドラインツールだったのですが,ID3v1.1 までしか対応していません.調べたところ,id3v2 というソフトウェアがあるようです.これは,v2.3 くらいまでのタグ編集が可能なツールのようです.いつもの通り,ports で入れます.

  % sudo portupgrade -N audio/id3v2 (注)

注:FreeBSD 9 くらいから,portupgrade ではなく,pkg コマンドが推奨されているので,pkg が利用できる人は,ちゃんとそちらを使って下さい.

文字コードの選定

前述の通り,ID3 タグには,仕様として文字コードが指定されていません.なので,UTF8|16|32 だろうと,ISO-2022-JP だろうと,EUC-JP だろうと,何を使っても構いません.が,自分が使っているソフトウェアが対応していなければ意味がないので,確認してみました.

まず,僕が所有している,iTunes で作成した既存の mp3 の結果は以下の通りです.ちなみに,東京事変の「秘密」という曲の mp3 です.

% id3v2 -l 01\ 秘密.mp3
id3v2 tag info for 01 秘密.mp3:
TT2 (Title/songname/content description): XF
TP1 (Lead performer(s)/Soloist(s)): q,
TCM (Composer):
TAL (Album/Movie/Show title): ':
TRK (Track number/Position in set): 1/11
TPA (Part of a set): 1/1
TYE (Year): 2006
TCO (Content type): Rock (17)
COM (Comments): (iTunPGAP)[eng]: 0
TEN (Encoded by): iTunes 10.5.2.11
COM (Comments): (iTunNORM)[eng]:  00001E1E 000014E7 0001122C 00009CCD 00023C3E 0002E1F5 00008CB0 00008B8D 0002FCE5 0002A27D
COM (Comments): (iTunSMPB)[eng]:  00000000 00000210 00000A14 00000000009C975C 00000000 00552B44 00000000 00000000 00000000 00000000 00000000 00000000
COM (Comments): (iTunes_CDDB_IDs)[eng]: 11++
UFI (Unique file identifier): http://www.cddb.com/id3/taginfo1.html, 56 bytes
01 秘密.mp3: No ID3v1 tag

…さっぱり読めません.調べてみると,UTF16 のようです.一応,この mp3のタグは,エクスプローラでも表示されています.

次に,エクスプローラで ID3 タグを直接書き込んでから,id3v2 タグと nkfを利用して文字コードを確認してみました.

% id3v2 -l test.mp3 | nkf --guess
Shift_JIS (LF)

…Shift JIS ですか…

一応,iTunes に読み込ませてみたら,表示できるようです.

んーーー.UTF16 か Shift JIS か…

僕は,コマンドラインなどで,nkf 併用程度でぱっと名前が確認できた方が嬉しいので,今回は Shift JIS を選択することにしました.

先ほど作成した,mp3 ディレクトリに移動して,以下のようなコマンドで一括登録しました.

  % for HOGE in `ls *.mp3`
  do
  id3v2 -a `echo "レベッカ" | nkf -s` -A `echo "レベッカベスト" | nkf -s` -t `basename $HOGE .mp3 | nkf -s` $HOGE
  done

オプションはそれぞれ,-a がアーティスト,-A がアルバム名,-t が曲名を設定するものになっています.テープからおこしているので,アルバム名なんて分かりません.なので,今回は適当に設定しています.

ここまでやって,iPhone に持っていってみたら,ばっちりタイトルなどが表示されました!ヤッタネ!

参考URL:
http://refuge06.blog54.fc2.com/blog-entry-634.html
細かく、ID3 について記述してあります。

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

榊原 寛

1980 年埼玉県生まれ。BPS COO。慶應義塾志木高校からそのまま慶應義塾大学湘南藤沢キャンパスへ。コンピュータの勉強がしたかったので、学部1年より徳田英幸研究室へ。無線ネットワークに関する研究、ユビキタスネットワークに関する研究、センサネットワークに関する研究、仮想ネットワークに関する研究等を行い、2010年慶應義塾大学政策・メディア研究科後記博士課程単位取得退学。 IPA 未踏事業 2006年度、2007年度開発責任者。日本学術振興会特別研究員(DC2) 2008年度。技術が実際に役に立つ現場に行きたく、BPSへ。BPSでは、主に電子書籍に関する事業に従事。マンガEPUBビューアや WebKit を利用した EPUB3 の日本語縦書きビューアプロジェクトを推進。全国中小企業団体中央会によるグローバル技術連携・創業支援補助金(創業枠)及び東京都中小企業振興公社「新製品・新技術助成事業 助成金」を MangaReborn 事業にて申請・獲得。電子書籍に関する次なるソリューションについて日々試行錯誤。慶應義塾大学環境情報学部非常勤講師兼任中。慶應義塾大学 SFC 研究所所員。W3C AC Representative。
http://techracho/bpsinc.jp/skk/ , http://www.ht.sfc.keio.ac.jp/~skk/

榊原 寛の書いた記事

BPSアドベントカレンダー

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ