August 01, 2009

iTunesとLameで高音質MP3ファイルの作成

テーマ:Mac
よく言われていることですが、iTunesのMP3エンコーダーのアルゴリズムは良質なものではなく、CDから取り込んでMP3化すると音質が荒れてしまいます。MP3だからしかたがないと諦めるにはまだ早いです。
世の中にはすばらしいMP3エンコーダーが沢山あります。
今回紹介するLameもそのうちの一つ。

lame
まずはGoogle CodeからiTunes Lameをダウンロードします。
http://code.google.com/p/blacktree-itunes-lame/downloads/list

解凍してできたiTunes-LAME.appを/Applicationsディレクトリに移動させます。
次にiTunes-LAME.appを右クリックし、パッケージの内容を見るメニューを選択し、Contents/Resourcesの中のImport with LAME....scptというファイルのエイリアスを作ります。
次にエイリアスファイルは~/Library/iTunes/Scriptsにコピーします。

Picture 1
これだけでiTunesのスクリプトメニューからimport with LAMEのメニューを選択する事ができるようになります。
ただし、このままではiTunes-Lameの真のスピードを体感する事はできません。なぜなら、iTunes LameはMacがインテルCPUになる以前のPPC用のアプリケーションであるからです。
これをインテル化するにはコマンドラインバージョンのLameの最新版を組み込む必要があります。

Lameの最新版は以下からダウンロードできます。
http://www.rarewares.org/mp3.php
lame
次にlameというIntel対応の実行ファイルをPPC用のものと入れ替えます。

lame
先ほどと同様にiTunes-LAME.appを右クリックし、パッケージの内容を見るメニューを選択します。Contents/Resourcesを開くと上の写真のような構成を見る事ができます。この中のlameというファイルを先ほどダウンロードしてきたlameの最新版と入れ替えれば完了です。

iTunes-LAMEで最初にされているオプションは「--alt-preset standard」となっているので、そのまま変換すると、VBR の可変ビットレートとなります。曲の終盤で無音部分が多い隠しトラックなどでは劇的に容量を節約できます。可変ビットレートは情報の量に応じてビットレートを可変させてくれる優れものです。一般的には可変のほうが高音質を稼げるようです。
http://ja.wikipedia.org/wiki/%E5%8F%AF%E5%A4%89%E3%83%93%E3%83%83%E3%83%88%E3%83%AC%E3%83%BC%E3%83%88
lameには様々なMP3のエンコーディングオプションが存在するので、下記をご参照ください。

ヘルプオプション

--help, --usage lameのヘルプを表示.ファイルに出力したい場合は,DOSプロンプトで
lame --help > lame_help.txt
のようにすればファイルに出力できる.(標準出力)
--longhelp lameの詳細なヘルプを表示する.
-? lameの詳細なヘルプを表示する.moreが無効.
--? lameの詳細なヘルプを表示する.moreが有効.
--preset help --presetオプションのヘルプを表示.
--version, --license lameのライセンスに関する文章を表示する.


入力オプション

-r 入力データをraw PCM形式とする.
-x 入力データを強制的にバイトスワップ(little-endian <=> big-endian)する.Red Book規格準拠の音楽CDのデータ形式はbig-endian,Windows wav形式はlittle-endianとなっている.CDexのオンザフライエンコードなどを行なう場合にこのオプションが必要となる.
-s sfreq 入力データのサンプリング周波数sfreq(kHz)を指定.(44.1)
このオプションはraw PCMデータにのみ必要となる.他の形式の場合は入力ファイルのヘッダ情報から決定される.
--bitwidth w 入力データのビット幅wを指定.(16)
このオプションはraw PCMデータにのみ必要となる.他の形式の場合は入力ファイルのヘッダ情報から決定される.
--mp1input 入力データをMPEG Layer I(mp1)とみなす.入力ファイルの拡張子が「.mp1」または「.mpg」の場合,LAMEは自動的にMPEG Layer Iファイルとみなすが,標準入力もしくは拡張子の異なるMPEG Layer Iファイルを入力する場合にはこのオプションが必要となる.
--mp2input 入力データをMPEG Layer II(mp2)とみなす.入力ファイルの拡張子が「.mp2」の場合LAMEは自動的にMPEG Layer IIファイルとみなすが,標準入力もしくは拡張子の異なるMPEG Layer IIファイルを入力する場合にはこのオプションが必要となる.
--mp3input 入力データをMPEG Layer III(mp3)とみなす.入力ファイルの拡張子が「.mp3」の場合LAMEは自動的にMPEG Layer IIIファイルとみなすが,標準入力もしくは拡張子の異なるMPEG Layer IIIファイルを入力する場合にはこのオプションが必要となる.
--nogap <file1> <file2> <...> 指定したファイル群をギャップレスで(曲間の空白時間なしで)エンコードする.
--nogapout <dir> --nogapの出力ディレクトリを指定する.
--nogaptags ギャップレスエンコードでVBRタグの利用を許可する.


演算オプション

-m <mode>
s:(シンプル)ステレオ
チャンネル間の相関性を利用せずにエンコードを行う.ただし,片方のチャンネルが無音もしくはエンコードの容易な情報である場合にもう片方のチャンネルにより多くのビットを割り当てる,といった処理は行われる.
j:M/Sジョイントステレオ
(シンプル)ステレオとM/Sステレオを適切に切替えてエンコードを行う.M/Sステレオはステレオ表現の一種で,左右の和信号"mid"(L+R)と差信号"side"(L-R)を使ってステレオを表現する.従ってステレオ分離があまり行われていないような信号の場合,ステレオ表現に必要な情報量が削減されるため,(同ビットレートに対する)品質が向上する.M/Sステレオモードでのエンコードは,場合によっては不自然な音声データを生成してしまうことがあるが,LAMEでは,ステレオとM/SステレオのスイッチングにはISOのドキュメントよりもはるかに精巧なアルゴリズムを使用しており,M/Sジョイントステレオモードの使用は問題ないとしている.
f:強制M/Sステレオ
全フレームで強制的にM/Sステレオを使用する.ジョイントステレオに比べてわずかに高速になるが,全フレームで殆どステレオ分離が行われていないようなデータ以外には,このモードを使うべきではない.
d:二重音声
2つのチャンネルで全く独立にエンコードを行い,互いのチャンネルには半分ずつビットが割り当てられる.このモードは多国語対応を想定して設計されており,通常のステレオ音声に対して使用すると品質を低下させることになる.このモードはまだ正式にサポートされていない.
m:モノラル
モノラル音声としてエンコードする.対象データがステレオ音声の場合は,downmix処理によりモノラル音声へ変換される.downmixは左右チャンネルのレベルをそれぞれ半分にし足し合わせることで計算される.
a:自動(M/Sジョイントステレオ)
-a ステレオからモノラルへ音声を変換する(downmix).downmixは左右チャンネルのレベルをそれぞれ半分にし足し合わせることで計算される.このオプションは入力がステレオraw PCMデータのときのみ必要となる(LAMEが入力ファイルのチャンネル数を決定できないため).実際にステレオPCMデータをエンコードするには"lame -m s -a"として実行する.wavファイル,aiffファイルをモノラルエンコードする場合には,"-m m"オプションを使えば入力がステレオでもモノラルでもモノラル音声データが出力される.
--freeformat CBRで8Kbps~640Kbpsの任意ビットレート指定が可能となる.
例:--freeformat -b 640
なお,150Kbpsなどのビットレート指定も可能である.ただし対応しているデコーダでしか再生できない.
FreeAmp:440kbpsまで
in_mpg123:560kbpsまで
l3dec:310kbpsまで
LAME:560kbpsまで
MAD:640kbpsまで
--decode デコードオプション.入力にmp3ファイル,出力にwavファイルを指定する.-tオプションをつけるとwavヘッダを取り除き,元々のendianのraw PCMとして出力される.バイトの並び順を変更する(little endian <-> big endian)には-xオプションを使う.
-t 出力ファイルにタグ情報を書き込まない.タグ情報にはエンコードの設定など,幾つかの情報が書き込まれており,VBRに対応したプレイヤーではこの情報を元にしてVBRファイルの正確なシーク,再生時間の計算を可能としている.--decode指定時に-tオプションをつけると出力のwavヘッダを取り除き,元々のendianのraw PCMとして出力される.バイトオーダーを変更する(little endian <-> big endian)には-xオプションを使う.
--comp <arg> ビットレートの代わりに圧縮比率を指定する.例えば<arg>を20とした場合,1/20のデータサイズに圧縮される.
--scale <arg> (浮動小数点データに変換された)PCMデータをarg倍する.したがってargが1より大きい場合音量が増え,1より小さければ音量が減る.ほとんどのデコーダーは32768以上のデコード値を切り捨てるので注意.
--scale-l <arg> --scaleの処理を,左チャンネルに対して行なう.
--scale-r <arg> --scaleの処理を,右チャンネルに対して行なう.
--replaygain-accurate より正確にリプレイゲイン情報を計算する.ただし処理が遅い.リプレイゲインは,曲によってまちまちである音量を予め分析しておき,その情報を元にして自動的に音量を揃えて再生するための仕組みである.
--clipdetect クリッピングが生じるかどうかを調べ,適切なメッセージを表示する.また,LAMEタグに音量ピーク値を保存する.
--preset medium VBRプリセット.ビットレートは大体150~180kbps程度となる.-V 4 と同じ.
--preset standard VBRプリセット.ビットレートは大体170~210kbps程度となる.-V 2 と同じ.
--preset extreme VBRプリセット.ビットレートは大体200~240kbps程度となる.-V 0 と同じ.
--preset fast <type> 高速なアルゴリズム(--vbr-new)を使用したVBRプリセット.<type>はmedium, standard, extremeから選択する.
--r3mix VBRプリセット.-V 3 --vbr-new と同じ.
--preset insane CBRプリセット.-b 320 と同じ.
--preset cbr <bitrate> CBRプリセット.<bitrate>のビットレートでエンコードする.-b <bitrate> と同じ.指定可能なビットレート
--preset <type> ABRプリセット.typeは
phone(ABR 16kbps/モノラル),phon+, lw, mw-eu, sw(ABR 24kbps/モノラル), mw-us(ABR 40kbps/モノラル), voice(ABR 56kbps/モノラル),fm,radio, tape(ABR 112kbps),hifi(ABR 160kbps),cd(ABR 192kbps),studio(ABR 256kbps)から選択する.
--preset <bitrate> ABRプリセット.<bitrate>を平均ビットレートとしてエンコードする.--abr <bitrate> と同じ.


表示オプション

--disptime <arg> arg秒毎に進行状況を表示.
-S 進行状況,VBRヒストグラムを表示しない.
--nohist VBRヒストグラムを表示しない.
--silent 進行状況,VBRヒストグラムを表示しない.
--quiet 進行状況,VBRヒストグラムを表示しない.
--brief ブロックタイプの情報を表示する.
--verbose 適用されている心理音響モデルの情報など,様々な情報を表示する.--verboseなどの情報は標準出力ではなく標準エラー出力で表示されている.例えば--preset standardの詳細情報をヒストグラムなしでファイルに出力したい場合には
lame --preset standard --verbose --nohist ファイル名 2> standard.txt
とすればよい.


音質/速度オプション

-q <arg> argは0-9で指定.-q 0 は最高音質,最低速度.-q 9 は最低音質,最高速度.
-h -q 2 と同じ.高音質設定.
-f -q 7, -q 8と同じ.高速設定.殆どの心理音響モデルを無視するため低音質であり,推奨されない.


CBRオプション(デフォルト)

--cbr 強制的に固定ビットレートを使う.
-b <bitrate> ビットレート(kbps)を指定する.(MPEG-1:128kbps,MPEG-2:64kbps)
指定可能なビットレート
可変ビットレートの場合,-bオプションは最小ビットレートを指定するオプションとなる.ただし無音状態の場合は,ビットの浪費を防ぐため最小のフレームサイズとなる.


ABRオプション

--abr <bitrate> 指定したビットレート(kbps)を目標値としてABRエンコードを行なう.指定可能なビットレート範囲は8-320[kbps]であり,この範囲内であればどんな整数でも指定できる.また,-bおよび-Bオプションと組み合わせることにより最小ビットレート,最大ビットレートを制限することができる.
例:lame --abr 123 -b 64 -B 192


VBRオプション

-v VBR(可変ビットレート)を使う.(--vbr-oldで)
--vbr-old 古いアルゴリズムのVBR処理を使う.VBRモードにはデフォルトで--vbr-oldが適用される.--vbr-oldは最もよくテストされたアルゴリズムであり,非常に高品質のVBRデータを生成するが,処理スピードがあまり速くない.
--vbr-new 新しいアルゴリズムのVBR処理を使う.--vbr-newは--vbr-oldに比べて非常に高速な処理となる.(倍以上)
--vbr-mtrh --vbr-newと同様の処理.Mark Taylor氏とRobert Hegemann氏によるオプションのためこの名が付いている.
-V n エンコードモードをVBRにすると共に,0-9でVBRのクオリティーを指定する.0は高音質大容量,9は低音質小容量.(n=4)
-b <bitrate> 最小ビットレート(kbps)を指定する.(32)
指定可能なビットレート
ただし無音状態の場合は,ビットの浪費を防ぐため最小のフレームサイズとなる.
-B <bitrate> 最大ビットレート(kbps)を指定する.(320)
MAS3503チップを搭載したmp3ハードウェアプレーヤーを使う場合,最大ビットレートを224kbps以下にセットする必要がある.
-F 低ビットレート再生をサポートしていないプレイヤーのため,-bオプションで厳密に最小ビットレートを指定する.このオプションを指定しない場合,無音状態のときに最低ビットレートが無視される.
-t 出力ファイルにタグ情報を書き込まない.タグ情報にはエンコードの設定など,幾つかの情報が書き込まれており,VBRに対応したプレイヤーではこの情報を元にしてVBRファイルの正確なシーク,再生時間の計算を可能としている.--decode指定時に-tオプションをつけると出力のwavヘッダを取り除き,元々のendianのraw PCMとして出力される.バイトオーダーを変更する(little endian <-> big endian)には-xオプションを使う.
-T LAMEタグを強制的に書込む.


ATH(Absolute Threshold of Hearing)
関係のオプション

--noath ATHマスキングを考慮しない.通常は人間の聴覚ではATHしきい値以下の音は聴き取れない.
--athshort ショートブロックで心理音響モデルを無視し,ATHマスキングのみを利用する.
--athonly 心理音響モデルを無視し,ATHマスキングのみを利用する.非常に高ビットレートのエンコードやATHのテストには有効かもしれない.
--athtype n ATHカーブのタイプを0-4の中から選択する.閾値の低い順に1, 2, 3, 0 となるが,1は過剰にセンシティブであり,ビットを浪費する.4の場合はVBRのクオリティやCBR/ABRのビットレートに応じて適切なパラメータを選択する.
--athlower x ATHをx[dB]下げる.通常は人間の聴覚ではATH以下のレベルの音は聴き取れないが,非常に小さいレベルで録音された音楽に対しては有用かもしれない.
--athaa-type n ATH自動調整タイプを1-3から指定する.それ以外は無調整.
--athaa-loudapprox n ラウドネスの近似方法を選択する.n=1:フラット近似(トータルエネルギー)n=2:等ラウドネス曲線で近似
--athaa-sensitivity x ATH自動調整のためのオフセットを調整する.[dB]


心理音響モデル関係のオプション

--short ショートブロックを使用する.(デフォルト)
--noshort 全フレームにおいてロングブロックのみを使ってエンコードする.非常に低ビットレートのエンコードの場合には音質が向上するが,深刻なプリエコーを生じる場合がある.
--allshort ショートブロックのみを使用する.ロングブロックは使用しない.
--cwlimit <freq> freq[kHz]までの調性を計算する.(8.8717)
--temporal-masking n n=0:継時マスキングを利用しない.n=1:継時マスキングを利用する.
--notemp 継時マスキングを利用しない.
--nspsytune Naoki Shibata氏による心理音響モデル「nspsytune」を使う.
--nssafejoint 音質が劣化しないときだけM/Sステレオを使う.
--nsmsfix <arg> M/Sステレオへの切替え閾値を調整する.0より大きい数値で指定.数値が低いほどM/Sステレオを使う割合が減る.
--interch x チャンネル間マスキング(inter-channel masking)比の設定.チャンネル間マスキングは,どちらかのチャンネルで大きな音が鳴るともう片方の音が聞きづらくなるという現象であり,--interchオプションはこのマスキングを利用することで情報量を削減する.チャンネル間マスキングは片方のチャンネルの音が骨を通してもう片方のチャンネルに伝わるのが原因であり,周波数などにもよるが,あるチャンネルマスク量の-20dBから-30dB(0.001)程度のマスキング効果をもう片方のチャンネルに及ぼすと言われる.従ってxとしては0.001やその半分の0.0005,またはそれ以下の値を指定するのがよい.
--ns-bass x ロングブロックのsfb 0-6,ショートブロックのsfb 0-5のマスキング閾値調整を行なう.-8 - 8 [dB](バス)
--ns-alto x ロングブロックのsfb 7-13,ショートブロックのsfb 6-10のマスキング閾値調整を行なう.-8 - 8 [dB](アルト)
--ns-treble x ロングブロックのsfb 14-21,ショートブロックのsfb 11-12のマスキング閾値調整を行なう.-8 - 8 [dB](ソプラノ)
--ns-sfb21 x --ns-trebleのsfb 21の値を変更する.[dB]


実験的なスイッチ

-X n[,m] 量子化を行なう際の評価基準を選択する.0-7で指定.nはロングブロック,mはショートブロックに適用される.mを省略した場合はm=nとして処理される.
-Y mp3は仕様上,sfb(スケールファクタバンド)21のスケールファクタが省略されている.この影響で,VBRで高周波成分をエンコードする場合には多くのビットを浪費する.-Yオプションは,CBRのようにsfb21での処理をカットすることでこのようなビットの浪費を抑える.また,--ns-sfb21オプションによってsfb21のマスキング閾値を引き上げるという手段もある.
-Z -


MP3ヘッダ/ストリームオプション

-e <emp> データにデエンファシスが必要かどうか.ただし,殆どのデコーダはこのフラグを無視するので別ソフトでデエンファシスをかけ,-eオプションなしでエンコードするのがよい.
n:デエンファシスの必要なし
5:0/15 μsec
c:citt j.17
-c 著作権のあるデータとしてマークする.
-o データがオリジナルではなくコピーであることをマークする.
-p 全フレームに16ビットのCRCチェックサムを書き込み,転送エラーを検知可能にする.ただし,エンコードに使うべきビットを使用するため生成されるデータのクオリティは低下する.
--nores ビットリザーバは,フレーム間で余った/足りないデータ領域を共有することで全体の音質を維持する仕組みである. --noresオプションを付加するとビットリザーバを使わず,各々のフレームが独立となる.この場合,生成されるデータの音質は低下する.
--strictly-enforce-ISO ISO MPEG規格に厳密に準拠する. LAMEからデフォルトで出力されるmp3データは, mp3の仕様を一部無視したものになっている(意味のない制限など).このオプションをつけた場合,高ビットレートのエンコードの際に多くのビットを浪費することになるが,ISO規格との互換性が強化され,ハードウェアmp3プレイヤーでの再生に有効となる可能性がある.


フィルタオプション

-k 周波数フィルタを使用しない.LAMEは通常,自動的に適切な周波数フィルタをかける.これは高周波数データの計算のために,低周波数や他の重要な周波数のビットが取り上げられてしまうためである.このオプションはこのフィルタを全て禁止する.(非推奨)
--lowpass <freq> ローパスフィルタの遮断周波数を指定.(kHz)
--lowpass-width <freq> ローパスフィルタの減衰幅を指定.(kHz)(遮断周波数の15%)
--highpass <freq> ハイパスフィルタの遮断周波数を指定.(kHz)
--highpass-width <freq> ハイパスフィルタの減衰幅を指定.(kHz)(遮断周波数の15%)
--resample <sfreq> 出力データのサンプリング周波数(kHz)を指定.(エンコード時のみ)(圧縮比率による)


エンコード処理に関するオプション

--priority <type> Windows用のオプション.プロセスの優先度を指定する.
0,1:優先度低 (IDLE_PRIORITY_CLASS)
2:優先度ノーマル (NORMAL_PRIORITY_CLASS)
3,4:優先度高 (HIGH_PRIORITY_CLASS)
パラメータ指定をせずに--priorityオプションを使った場合,優先度は0となる.
--noasm <instructions> MMX(mmx)/3D now!(3dnow)/SSE(sse)への最適化をしない.Cyrix/Viaプロセッサ上でLAMEを動かす際に問題が生じる場合にはMMXの最適化をとめることで解決できる可能性がある.


ID3タグオプション

--tt <title> タイトル
--ta <artist> アーティスト
--tl <album> アルバム
--ty <year>
--tc <comment> コメント
--tn <track> トラック番号(1-255)
--tg <genre> ジャンル(番号か名前)
--add-id3v2 強制的にID3v2タグを埋め込む.
--id3v1-only ID3v1タグのみを埋め込む.
--id3v2-only ID3v2タグのみを埋め込む.
--space-id3v1 スペースでID3v1タグを埋める.
--pad-id3v2 128バイトのデータでID3v2タグを埋める.
--genre-list ジャンルリストをアルファベット順に表示.
--ignore-tag-errors ID3タグの入力に関するエラーを無視する.


指定可能なサンプリング周波数/ビットレート

MPEG-1 layer III
サンプリング周波数(kHz):32/48/44.1
ビットレート(kbps):32/40/48/56/64/80/96/112/128/160/192/224/256/320
MPEG-2 layer III
サンプリング周波数(kHz):16/24/22.05
ビットレート(kbps):8/16/24/32/40/48/56/64/80/96/112/128/144/160
MPEG-2.5 layer III
サンプリング周波数(kHz):8/12/11.025
ビットレート(kbps):/8/16/24/32/40/48/56/64/80/96/112/128/144/160


VBRプリセットのパラメータ(一部)

クオリティ vbr- interch safe
joint
Y nsmsfix その他
-V 9 old 0.0008 - - -
-V 8 old 0.0007 - - -
-V 7 old 0.0006 - - -
-V 6 old 0.0004 - - -
-V 5 old 0.0002 - - -
--preset fast medium new - 1.62 -
-V 4, --preset medium old - 1.62 -
--r3mix new - 1.5 -
-V 3 old - 1.5 -
--preset fast standard new - - 1.38 最小96kbps
-V 2, --preset standard old - - 1.38 最小96kbps
-V 1 old - - 1 最小112kbps
--preset fast extreme new - - 0.85 最小128kbps
-V 0, --preset extreme old - - 0.85 最小128kbps
(心理音響モデル:nspsytune)


ABR/CBRプリセットのパラメータ(一部)

ビットレート interch safe
joint
nsmsfix
8kbps 0.0012 - -
16kbps 0.001 - -
24kbps 0.001 - -
32kbps 0.001 - -
40kbps 0.0009 - -
48kbps 0.0009 - -
56kbps 0.0008 - -
64kbps 0.0008 - -
80kbps 0.0007 - -
96kbps 0.0006 - -
112kbps 0.0005 - -
128kbps 0.0002 - -
160kbps - 1.64
192kbps - 1.38
224kbps - 1.1
256kbps - 0.85
320kbps, --preset insane - 0.6
(心理音響モデル:nspsytune)


内部スイッチ

--tune n
--ms-sparsing n
--psymodel n
--ms-sparse-low n
--ms-sparse-high n
--shortthreshold x,y
--vbr-smooth n
--maskingadjust n
--maskingadjustshort n
--athcurve n
--no-preset-tune
--substep n
--sbgain n
--sfscale


参考http://www001.upp.so-net.ne.jp/yama-k/codec/lame3.95option.html
コメント欄は閉じてますが、ご意見ご感想はtwitterまでお願いします。http://twitter.com/akihik0ma
CUBASE 6 通常版 CUBASE 6 通常版

スタインバーグジャパン 2011-03-18
売り上げランキング : 1006

Amazonで詳しく見る

Amebaおすすめキーワード

    アメーバに会員登録して、ブログをつくろう! powered by Ameba (アメーバ)|ブログを中心とした登録無料サイト