音声入力からエンコードする際と同様に、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 よりも、午後のこ〜だの方がはるかに優れたエンコードア ルゴリズムを使用していると分かりました。