網友 Tiberius 的 LAME 使用/參數說明
2000/11/19刊出
本頁瀏覽次數:


這一篇是由網友 Tiberius 撰寫,以下是原文:

LAME: Lame Ain't MP3 Encoder
RazorLame: Frontend for LAME

使用 RazorLame



 

因為 LAME 是一個文字模式的程式,直接執行並不方便,下一次指令又只能夠壓縮一個檔案,因此使用前導程式輔助可以說是必要的事情。

RazorLame 的介面簡單明瞭,方便使用,要設定的地方也並不多;在 Options -> General 之中,指定 LAME 執行檔的位置,然後就可以在其他的頁面調節各種壓縮的參數。如果想試試一些實驗性(尚未正式公布)的參數,或者懶得慢慢檢查每一頁的設定,可以直接在 Options -> Advanced 中把寫好的參數填入 Custom Options 中,並選取 Only use custom options 即可。

Options -> Advanced 裡面,有一個 Delete source file after encoding 的選項,選取之後,編碼完成的 WAV 檔會被自動刪除;蠻方便的。

這裡是 RazorLame 設定對照 LAME 參數的表格,可以對照以下的參數說明查閱各項設定值的資料。

General 頁面
-bBitrate-mMode
Advanced 頁面
-h -f --voiceOptimization-pInclude CRC-Checksums
-oCopy-cCopyrighted
VBR 頁面
-vEnable Variable Bitrate (VBR)-BMaximum VBR Bitrate
-VQuality-tDisable writing of the VBR tag
-FStrictly enforce minimum bitrate--abrUse ABR instead of VBR, Target bitrate for ABR
Expert 頁面
--athonly --noathATH Control-dAllow block types to differ between channels
-kDisable all filtering--noresDisable bit reservoir
--noshortDisable short blocks--strictly-enforce-isoComply as much as possible to ISO MPEG spec
Audio Processing 頁面
--highpassHighpass filtering frequency--highpass-widthWidth of Highpass filter
--lowpassLowpass filtering frequency--lowpass-widthWidth of Lowpass filter
--resampleOutput sampling frequency


LAME 參數說明

以下的中文解釋,是直接翻譯 LAME 3.87 的線上說明得來的,都只是一些概念性的解說;個別參數的詳細說明翻譯部分參照 Scorpio 網友在數位音訊處理討論區所貼的 LAME 常用參數用法 這一篇文章,在這裡要對他表達謝意。

以下斜體的部分,表示可以帶入後面說明的其他選項,而說明中粗體字的部分就是這些多重選項的預設值。

LAME 命令行格式: lame [選項] <輸入檔名> [<輸出檔名>]

檔案輸入選項
-r 指定輸入檔案是 Raw PCM 格式 (.PCM 檔案)。
-x 強迫來源檔案的位元組順序 (byte-order) 調換(壓縮跨平台的檔案時使用)。
如果壓縮出來的檔案是雜音,可以試試看這一個選項。
-s sfreq 指定來源檔案的取樣頻率(單位為 KHz),預設為 44.1 KHz。
只有在輸入檔案為 PCM 格式時才需要使用,其餘情形會自動從檔頭判斷。
--mp1nput 輸入的檔案是 MP1 格式(利用內建的 mpglib 解碼成 Wave 檔案,下同)。
--mp2input 輸入的檔案是 MP2 格式。
--mp3input 輸入的檔案是 MP3 格式。
--ogginput 輸入的檔案是 Ogg Vorbis 格式。

動作模式選項
-m mode mode : (s) Stereo (j) Joint Stereo (f) Force ms_stereo (m) Mono

當使用的 VBR 品質為 4-9 或者 CBR <= 160 Kbps 時,預設為 Joint Stereo。
其餘時則預設為 Stereo。

Stereo: 單純雙聲道立體聲模式,在此種壓縮模式中,LAME 將不會計算雙聲道之間的資料相關性,但是會協調分配雙聲道的資料流量,自動分配較多的 Bit 給複雜的聲道使用。
Joint Stereo: 在這個壓縮模式下,LAME 會利用雙聲道之間的資料相關性進行演算。左右聲道資料類似時,會利用 M/S (Mid/Side) 編碼技術,計算中央聲道 (L+R) 和兩側聲道差異 (L-R) 的值,並且會分配較多的 Bit 給中央聲道,增加資料記錄頻寬。
不當的使用 Joint Stereo 模式可以造成人耳可辨的壓縮失真,太多在 Stereo <-> Joint Stereo 之間的切換也不好聽。為了決定何時要在兩種模式之間切換,LAME 使用了比 ISO 文件複雜許多的演算法進行判別,因此可以放心使用 Joint Stereo 模式。
Force: 強迫所有的 frame 全部使用 M/S Joint Stereo 編碼,速度可以增快很多,但是不建議使用。
Mono: 單聲道編碼模式。
-a 將立體聲檔案混音成單聲道後編碼。
混音的演算法是將左右聲道加總後,衰減 6dB。

這個選項只有在輸入檔案為 PCM 格式時才需要,其他情形會從檔頭自動判斷。
要將立體聲的 PCM 檔案編碼成單聲道時,可以使用 "-m s -a",對於 WAV 或 AIFF 檔案,不管是立體聲或是單聲道輸入, 使用 "-m m" 都會編碼成單聲道模式。
-d 允許各聲道有不同的編碼區塊模式 (block type)
-S 不要印出執行進度和 VBR Bitrate 使用率圖表
--disptime seconds 每隔 seconds 秒印出一次執行進度
--ogg 編碼成 Ogg Vorbis 檔案
--freeformat 編碼成 Free-Format 格式的檔案。
下了此參數後,可以使用 -b 參數,指定壓縮成任何 8 以上的整數 Bitrate,但是大部分的 Player 均不支援這種格式的播放。

支援的 Player 列表:
FreeAmp: 440 Kbps max
in_mpg123: 560 Kbps max
l3dec: 310 Kbps max
LAME: 560 Kbps max
--decode 輸入 MPEG 或 OGG 檔案,解碼成 Wave 檔。
-t 解碼成 Wave 檔案時,不寫入檔頭資訊。
--comp arg 自動調整 Bitrate,盡量接近 arg 的壓縮百分比率。
--scale arg 將輸入的聲音資料,放大 arg 倍之後編碼。
--athonly 只使用 ATH (Absolute Threshold of Hearing) 作遮罩運算。
這個選項使 LAME 忽略掉心理音響學模型 (Psycho-acoustic Model) 的輸出結果,只採用絕對聽覺底限作壓縮的判斷。
在高 Bitrate 的情形下或許可以增進音質,或者是拿來進行實驗。
--noath 不使用 ATH 進行遮罩運算,只使用心理音響模型。
--athlower arg 將 ATH 的底限降低 arg dB
--raise-smr arg 0 <= arg <= 1

調節 SMR 參數。
--short 使用短區塊。
--noshort 不使用短區塊。
--voice (實驗性)人聲編碼模式。
--preset type type : phone, phon+, lw, mw-eu, mw-us, sw, fm, voice, radio, tape, hifi, cd, stereo

使用一些預設的編碼參數,可以輸入 --preset help 獲得詳細資料。

固定 Bitrate 模式 (CBR) 選項
-h 高品質模式,啟動某些可以增進品質的運算,但是會降低一些速度(建議使用)。
這個選項在 VBR 壓縮模式中是預設開啟的。
-f 快速模式,但會降低品質(預設)。
雜音成型 (Noise Shaping) 將會被關閉,但是心理音響模型還是會被用來計算 Bit 分配和 Pre-Echo 偵測。
-b bitrate 指定壓縮的 Bitrate。可以使用的 Bitrate 如下:

MPEG Layer 1 (32K, 44.1K, 48K): 32 40 48 56 64 80 96 112 128 160 192 224 256 320
MPEG Layer 2 (16K, 22.05K, 24K): 8 16 24 32 40 48 56 64 80 96 112 128 144 160
預設值 MPEG1 為 128Kbps,MPEG2 為 80Kbps。
不管做哪一種設定,為了節省空間,被判斷為靜音的部分,會自動採用最小的 Bitrate。

平均 Bitrate 模式 (ABR) 選項
--abr bitrate 不指定品質,而指定想要的平均 Bitrate,LAME 會自動使用不同的 frame 大小。 bitrate 許可的範圍是 4-310,可以使用這個範圍內的任一個整數。
同時可以使用 -b 和 -B 指定變動範圍的上下限,像是 lame --abr 123 -b 64 -B 192 a.wav a.mp3 將會限制可以使用的 frame 大小範圍在 64-192 Kbits 之間。

使用 -B 是不建議的。 一個 128Kbps 的 MP3 資料流,因為可以使用 Bit Reservoir,所以有一些 frame 其實可以使用到與 320Kbps frame 相同大小的空間。 VBR 並不使用 Bit Reservoir,因此需要允許使用 320Kbps 大小的 frame 才能達到與 CBR 相同的彈性。

可變 Bitrate 模式 (VBR) 選項
-v 使用 VBR 模式。
--vbr-old 使用舊的 VBR 壓縮演算法。
--vbr-new 使用新的 VBR 壓縮演算法(預設)。
-V quality 指定 VBR 的壓縮品質,範圍為 0-9 (數字越小品質越高),預設值為 4
-b bitrate 指定 Bitrate 變動的下限,預設為 32 Kbps。
-B bitrate 指定 Bitrate 變動的上限,預設為 320 Kbps。
-F 強迫遵守 -b 的限制,適合無法解碼低 Bitrate 的 MP3 隨身聽使用。
不啟動這一個選項,當輸入為類比靜音(強度低於 ATH)時,將會忽略最低 Bitrate 的限制,使用壓縮格式中的最低 Bitrate。
-t 不寫入 Xing VBR 檔頭,會造成時間總長顯示不正確以及搜尋功能失效等問題。
--nohist 壓縮檔案時,不顯示 VBR Bitrate 使用率圖表。

MP3 檔頭/資料流選項
-c 標記檔案為有版權 (copyrighted)。
-o 標記檔案為非原始檔 (non-original)。
-p 錯誤保護,會在每個 frame 佔用 16bit 進行 CRC 編碼(可能減損音質)。
--nores 不使用 Bit Reservoir 功能(會嚴重減損 CBR 音質)。

濾波器選項
-k 保留住所有頻率。
壓縮時,為了把資料流量保留給最重要的頻段,提高壓縮出來的品質,LAME 會自動隨著所選用的 Bitrate 指定高低通濾波器的數值。 如果把頻寬設定的比預設值還要大的話,可能會造成無法預期的鳴響以及失真,小心使用!
--lowpass freq 設定低通濾波器的起始點為 freq KHz
高於這個頻率的聲音會被截除。
--lowpass-width freq 設定低通濾波器的寬度,預設為 15% 的 --lowpass 頻率。
--highpass freq 設定高通濾波起始點為 freq KHz
低於這個頻率的聲音會被截除。
--highpass-width freq 設定高通濾波器的寬度,預設為 15% 的 --highpass 頻率。
--resample freq 輸出檔案的取樣頻率。
--cwlimit freq 計算音色到指定的頻率。


LAME 內建設定 (--preset) 參考表

phonephon+lwmw-eumw-usswfmvoiceradiotapehificdstudio
--resample811111116113224
--highpass0.1250.1
--lowpass3.44447.541512151818
--lowpass-width0000000000.90.9
--noshortyesyesnononononoyesnonononono
-mm-mm-mm-mm-mm-mm-mj-mm-mj-mj-mj-ms-ms
-h-h-h
-b16242424402411256128128160192256
VBR 模式時增加的參數:
-V6433333433210
-b81616162416804096112128192160
-B2432565611256256112256256320320320

舉例:如果輸入 lame --preset hifi a.wav,則效果跟 lame --lowpass 18 --lowpass-width 0.9 -mj -h -b 160 完全相同。