次のページ 前のページ 目次へ

10. CD-ROM からのエンコード

音声入力からエンコードする際と同様に、CD からエンコードする場合でも 2 つの処理段階を経ます。まず、CD から音声データを抽出し、WAV 形式のファ イルへ変換します。そして、WAV ファイルを MP3 に変換します。

基本的には、コンソールベースと X ベースの 2 タイプのエンコーダがありま す。双方とも同じ仕事をしますが、X ベースのほうが使いやすいでしょう(そ してきれいに見えるでしょう)。

もう一度、エンコードを始める前に、システムに充分なディスクの空き容量が あるかを確かめてください。

10.1 コマンドラインでのエンコード

著者は 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");

or
$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 は今までに挙げたソフトウェアと同様の動作をしますが、 シェルスクリプトで書かれいて使いやすくなっています :)


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) 終了
?

10.2 GUI ベースのエンコーダ

GUI ベースのエンコーダは、コンソールベースのエンコーダにある機能のすべ てを GUI で包んでいます。そして、使いやすいユーザインターフェイスも持っ ています。Grip と RipperX は使い方が似ており、双方とも CD からひとつあ るいは複数の曲を選択して変換できます。アルバムと曲の情報をサーバから取 得して手で入力する手間を省ける、CDDB もサポートしています。

10.3 エンコーダの性能

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


次のページ 前のページ 目次へ