音声入力からエンコードする際と同様に、CD からエンコードする場合でも 2 つの処理段階を経ます。まず、CD から音声データを抽出し、WAV 形式のファ イルへ変換します。そして、WAV ファイルを MP3 に変換します。
基本的には、コンソールベースと X ベースの 2 タイプのエンコーダがありま す。双方とも同じ仕事をしますが、X ベースのほうが使いやすいでしょう(そ してきれいに見えるでしょう)。
もう一度、エンコードを始める前に、システムに充分なディスクの空き容量が あるかを確かめてください。
著者は CD からトラックをリップして(吸い出して)エンコードする、非常に単純な Perl スクリプトを書きました。
#!/usr/bin/perl if ($ARGV[0] ne "") { $count = 1; do { $cdcap = system("cdparanoia", $count, "/mp3/cdda.wav"); $track = "$ARGV[1]/track".$count.".mp3"; $enc = system("bladeenc /mp3/cdda.wav $track -br 256000"); $count++; } until $count > $ARGV[0]; exit; } else { print "Usage cdriper [no of tracks] [destination directory]\n\n"; }
確認 : 上のスクリプトは非常に初歩的で、エラー確認や CDDB 検索のような 技がありません。皆さんがお暇なときに改良してください。 :)
ポイントになる行はこれです :
$cdcap = system("cdparanoia", $count, "/mp3/cdda.wav");
この行は CD リッパーである Cdparanoia を呼び出しています。 Cdparanoia は CD の音声データを WAV フォーマットへ変換します。
著者は Cdparanoia を使っていますが、 CDDA2WAV を使いたいならコマンドラインは次のようになります:
$cdcap = system("cdda2wav", $count, "/mp3/cdda.wav");
目につくオプションはリップするトラック数を表す $count で、次が出力する WAV ファイルのパスです。著者の例では、このパスは MP3 用の SCSI ドライ ブにある、tmp ディレクトリになっています。
各トラックごとにリップとエンコードをせずに済むように、そして Cdparanoia のバッチモードを使わず CD を吸い出せるように、著者はこの Perl スクリプトを書きました。Cdparanoia をバッチモードで動かすと CD 全 体を吸い出し、600MB 以上の空き容量を必要とします。しかし、このスクリプ トを使えば、使用するディスクの容量を削減できます。
Lame や午後のこ〜だを使いたいのなら、 エンコーダの行を書き換えてください:
$enc = system("lame /mp3/cdda.wav $track -b 256");
$enc = system("gogo /mp3/cdda.wav $track -b 256");
以下に、エンコーダそれぞれのコマンドラインオプションを載せます。
Bladeenc
BladeEnc 0.91 (c) Tord Jansson Homepage: http://bladeenc.mp3.no =============================================================================== BladeEnc is free software, distributed under the Lesser General Public License. See the file COPYING, BladeEnc's homepage or www.fsf.org for more details. Usage: bladeenc [global switches] input1 [output1 [switches]] input2 ... General switches: -[kbit], -br [kbit] MP3 ビットレートの設定。 デフォルトは 128kbps (モノラルでは 64kbps) -crc MP3 ファイルにチェックサムを付加する -delete, -del エンコードがうまくいったら元の音声ファイルを消す -private, -p 出力ファイルにプライベートフラグを設定する -copyright, -c 出力ファイルに著作権フラグを設定する -copy 出力ファイルのオリジナルフラグを消去する -mono, -dm 左右のチャンネルを混ぜてモノラル MP3 を生成する -leftmono, -lm 左のチャンネルのみのモノラル MP3 を生成する -rightmono, -rm 右のチャンネルのみのモノラル MP3 を生成する -swap 左右のチャンネルを入れ替える -rawfreq=[freq] RAW ファイルのサンプリング周波数を指定する。 デフォルトは 44100kHz -rawbits=[bits] RAW ファイルの量子化ビット数を指定する。 デフォルトは 16 ビット -rawmono RAW ファイルがステレオではなくモノラルだと指定する -rawstereo RAW ファイルがステレオだと指定する(デフォルト) -rawsigned RAW ファイルが符号付きと指定する(デフォルト) -rawunsigned RAW ファイルが符号なしと指定する -rawbyteorder=[order]RAW ファイルのバイトオーダーを指定する。 リトルエンディアンあるいはビッグエンディアン。 -rawchannels=[1/2] RAW ファイルのチャンネル数を指定する。 -rawmono, -rawstereo と同等である。 Global only switches: -quit, -q エンコード後にキーを押さなくても終了する -outdir=[dir] 指定したディレクトリに MP3 ファイルを保存する -quiet 画面出力の停止 -nocfg 設定ファイルを無視する -prio=[prio] BladeEnc の優先度を設定する。 HIGHEST, HIGHER, NORMAL, LOWER, LOWEST(デフォルト), IDLE が指定できる -refresh=[rate] 表示の更新周期。1=高速, 2=標準 -progress=[0-8] 経過表示の有無。0=Off, 1=標準 入出力ファイルとして標準入出力も使用できる。
Lame
LAME version 3.50 (www.sulaco.org/mp3) GPSYCHO: GPL psycho-acoustic model version 0.74. USAGE : lame [options] <infile> [outfile] <infile>, <outfile> は "-" (標準入出力)も使用できる OPTIONS : -m mode (s)tereo, (j)oint, (f)orce or (m)ono (デフォルト j) force = 全フレームに ms_stereo を強制し、高速で 特別なマスキングモデルを使用する。 -b <bitrate> ビットレートを設定する。デフォルトは 128kbps (VBR では最小ビットレートの指定になる) -s sfreq 入力のサンプリング周波数。デフォルトは 44.1kHz --resample sfreq 出力のサンプリング周波数。デフォルトは入力のサンプリング周波数 --mp3input 入力が MP3 ファイルだと指定する --voice 実験的なボイスモード -v 可変ビットレート (VBR) を指定する -V n VBR の音質を指定する。デフォルトは n=4 0= 良い音質だがファイルが大きくなる 9= ファイルが小さくなる -t Xing VBR 情報タグを無効にする --nohist VBR ヒストグラムを表示しない -h 音質を向上させる(かもしれない) -f 高速モード (音質が悪い) -k sfb=21 カットオフを無効にする(訳注:高音域も残す) -d 各チャンネルでブロック形式が異なることを許す --athonly マスキングに ATH のみを使用する -r 入力として raw pcm を使用する -x 入力のバイトオーダーを逆にする -a ステレオ音声をモノラルへ変換してモノラルエンコードを行う -e emp デエンファシス n/5/c (古いオプション) -p エラー保護として、各フレームに 16bit のチェックサムを付加する。 (チェックサムは正確に計算される) -c 著作権ありの印をつける -o オリジナルではないとの印をつける -S VBR ヒストグラムなどの高度な画面表示を行わない 以下のオプションを指定すると ID3 タグを付加する --tt <title> 曲名(最大 30 文字) --ta <artist> アーティスト名(最大 30 文字) --tl <album> アルバム名(最大 30 文字) --ty <year> 曲・アルバムの製作年(最大 4 文字) --tc <comment> 追加情報(最大 30 文字) MPEG1 サンプリング周波数 (kHz): 32 44.1 48 ビットレート (kbps): 32 48 56 64 80 96 112 128 160 192 224 256 320 MPEG2 サンプリング周波数 (kHz): 16 22.05 24 ビットレート (kbs): 8 16 24 32 40 48 56 64 80 96 112 128 144 160
午後のこ〜だ
午後のこ〜だ ver. 2.30Final (Apr 13 2000) Copyright (C) 1999, 2000 PEN@海猫 と へるみ 酒居敬一さん, うるりさん, Noisyuさん, 計さんに多大なる感謝 午後のこ〜だはLAME3.29betaを元にLGPLに基づいて公開されたソフトです 使い方 gogo inputPCM [outputPCM] [options] inputPCM は wavファイルを指定 inputPCMに'stdin'を指定すると標準入力モードになる outputPCM は省略可能 使用可能なオプション一覧 -b kbps/-br bps ビットレート[単位 kpbs/bps] -silent 途中経過非表示[未指定時は表示] -m {s,m,j} 出力形式 s:ステレオ, m:モノラル, j:jointステレオ -nopsy 心理音響モード無効(未指定時は有効) -off {3dn,mmx,kni(sse),e3dn} WAVEヘッダを解析しないで自分で設定する場合 -offset bytes 読み飛ばすヘッダサイズ -8bit 8bit-PCM [未指定時 16bit-PCM] -mono mono-PCM [未指定時 stereo-PCM] -bswap 16bitPCMのlow, high byte交換 -s kHz 入力WAVの周波数変換指定[単位 kHz] -cpu n 実装されているCPUの数(未指定時は自動検出) -d kHz 出力MP3の周波数変換指定[単位 kHz] -emp {n,c,5} de-emphasis設定 -lpf {on,off} 16kHフィルタ設定(省略時は128kbps以下なら有効:160kbps以上なら無効) -delete エンコード終了後ファイル削除 -i 上書き確認 -o dir 出力ディレクトリ -riff {wave, rmp} RIFF/WAVE または RIFF/RMP 形式出力 -test ベンチマークモード -lang {sjis,eucjp,eng,ger} 言語の選択
[訳注 : 翻訳の時点で最新の、「午後のこ〜だ」日本語版へルプです。 ]
RipEnc は今までに挙げたソフトウェアと同様の動作をしますが、 シェルスクリプトで書かれいて使いやすくなっています :)
RipEnc version 0.7, Copyright (C) 1999 Michael J. Parmeley <mjparme@asde.com>, RipEnc comes with ABSOLUTELY NO WARRANTY RipEnc は完全に無保証のソフトウェアです。 現在、バックグラウンドで動いているエンコードプロセスはありません。 encode.log ファイルは 982607 バイトです。 <詳細は 'd', エンコードログ表示は 'v', ログ消去は 'del' を入力してください。> 1) 作業用ディレクトリの変更....................[/megajukebox/tmp] 2) エンコーダの選択............................[lame] 3) リッパーの選択..............................[cdparanoia] 4) ID3 タグ編集ツールの選択....................[none] 5) 手動入力か CDDB による自動入力か............[manual] 6) CDA 用の環境変数 XMCD_LIBDIR の設定.........[/var/X11R6/lib/xmcd] 7) ファイル名変換の設定........................[artist-name_of_song.mp3] 8) CD 全体の吸出し?............................[no] 9) 小容量ハードディスク用オプションの設定......[no] 10) CD-ROM デバイスの選択......................[/dev/cdrom] 11) MP3 のビットレート設定.....................[256] 12) 作業ディレクトリのファイル一覧を出力 13) スタート 14) このソフトウェアについて 15) 終了 ?
GUI ベースのエンコーダは、コンソールベースのエンコーダにある機能のすべ てを GUI で包んでいます。そして、使いやすいユーザインターフェイスも持っ ています。Grip と RipperX は使い方が似ており、双方とも CD からひとつあ るいは複数の曲を選択して変換できます。アルバムと曲の情報をサーバから取 得して手で入力する手間を省ける、CDDB もサポートしています。
エンコーダの節で、BladeEnc, Lame そして午後のこ〜だの、3 つのエンコー ダについて述べました。これらのエンコーダ間の主な違いは、エンコード時の 性能です(とはいえ、前述したコマンドラインオプションにも違いがあります)。
ちょっとした例を挙げます。CD から曲を抽出し、異なるエンコーダを使用し てエンコードしました。すべてのエンコーダは同一のシステム条件で動作させ、 ステレオの MP3 ファイルを作成しました。
[dj@megajukebox]$ ls -l cdda.wav -rw-rw-r-- 1 dj dj 59823164 Feb 10 00:56 cdda.wav [dj@megajukebox]$ bladeenc cdda.wav -br 256 BladeEnc 0.91 (c) Tord Jansson Homepage: http://bladeenc.mp3.no =============================================================================== BladeEnc is free software, distributed under the Lesser General Public License. See the file COPYING, BladeEnc's homepage or www.fsf.org for more details. Files to encode: 1 Encoding: ../test.wav Input: 44.1 kHz, 16 bit, stereo. Output: 128 kBit, stereo. Completed. Encoding time: 00:05:58 (0.78X) All operations completed. Total encoding time: 00:05:58 -------------------------------------------------------------------------------- [dj@megajukebox]$ lame cdda.wav -b 256 LAME version 3.50 (www.sulaco.org/mp3) GPSYCHO: GPL psycho-acoustic model version 0.74. Encoding ../test.wav to ../test.wav.mp3 Encoding as 44.1 kHz 128 kbps j-stereo MPEG1 LayerIII file Frame | CPU/estimated | time/estimated | play/CPU | ETA 10756/ 10756(100%)| 0:02:28/ 0:02:28| 0:02:29/ 0:02:29| 1.9074| 0:00:00 -------------------------------------------------------------------------------- [dj@megajukebox]$ gogo cdda.wav -m s -b 256 GOGO-no-coda ver. 2.24 (Feb 12 2000) Copyright (C) 1999 PEN@MarineCat and shigeo Special thanks to Keiichi SAKAI, URURI, Noisyu and Kei MPEG 1, layer 3 stereo inp sampling-freq=44.1kHz out sampling-freq=44.1kHz bitrate=256kbps inp sampling-freq=44.1kHz out sampling-freq=44.1kHz bitrate=128kbps input file `../test.wav' output file `../test.mp3' { 10751/ 10755} 100.0% ( 2.94x) re:[00:00:00.03] to:[00:01:35.42] End of encoding time= 95.430sec
Bladeenc や Lame よりも、午後のこ〜だの方がはるかに優れたエンコードア ルゴリズムを使用していると分かりました。