2006年1月13日

以電腦為音響數位訊源 - 軟體篇

趁著還有勁,再衝一篇。

先從檔案格式談起。CD中的資料是沒有壓縮的,他很忠實的記錄了所有的聲音資料,好處是播放簡單,硬體的 decoder 實作較容易。缺點是佔儲存空間大,而且要一直換片,也無法像 mp3 般組合出跨專輯的播放清單,以及大量的隨機選曲等等。光碟機的聲音偏大,也是個問題。

至於MP3,以及所有的 WMA, Real Audio, Apple 的 quicktime 等等格式,則正好相反。為了節省空間,他們採用破壞式壓縮,所謂破壞,就是說資料在壓縮的過程中減少了、失去了,這些格式的優劣,就是如何在運算複雜度、所佔空間大小、以及消失的資料影響聽感最小中取得平衡。由於格式眾多,一般的 mp3 player 等等不容易全部支援,但好處是可以組合出很長的歌單,不受物理的每張每張專輯限制。最大的天限是:由於為了減小檔案而採用破壞性壓縮,所以只要重播的方式稍微好些,聲音的效果就會出現極為明顯的落差。

而在我這幾篇東西所敘述的系統,可以如照妖鏡般分辨出破壞壓縮與原本聲音之間的差距。

有沒有辦法在兩者之間取得平衡呢?有的,就是所謂的 lossless compression,無失真壓縮。就好像一般的 zip 或是 rar 壓縮檔,解壓縮以後,仍然可以獲得跟原本檔案一模一樣的東西。這些壓縮也是,體積雖然減小了,但是該有的東西仍然不少。

目前較為常用的 lossless 壓縮,大概是 FLAC 以及 Monkey's Audio 。兩者都不錯,不過 FLAC 的支援比較好,發展的腳步也蠻密集的。一般來說,把 CD 直接複製下來大概要佔六百多到七百 MB 左右的空間,壓縮後,依照不同的壓縮比率,大概可以壓到兩三百 MB 左右,相對於 mp3 的三四十 MB,仍然有段差距,不過至少比原來的小了一半左右。採用這種方式,就不需要換 CD,所有的音樂都在硬碟中,到時候直接像 mp3 一樣選起來播放就可以了。如此在方便性與品質方面都沒有妥協。40GB 的硬碟保守估計就可以放一百多張 CD,如此計算下來,以目前的硬碟大小,其實成本不高。

再來談播放軟體。在 Windows 平台上,要推薦的只有唯一選擇: foobar2000 ,上文所提的 FLAC 或是 Monkey's Audio,它都可以直接播放,所以我打算只介紹這套東西大概的用法即可。首先從網頁下載、安裝,安裝時可以選擇讓它關連到所有可以播放的檔案類型,以後比較方便。

以下點小圖可看大圖
download

install_1

install_2

裝好了以後開始設定。假定你的系統是如上文所述的搭配,那麼直接採用預設值即可。播放時按加減號可以調聲音的大小。在關連好的檔案上點兩下,或者是直接拉到視窗裡頭都可以,使用上很簡單。它的功能很強,不過進階的功能若不熟悉,其實不怎麼好懂,這裡就不贅述。簡單提幾個:它可以自由的做各種音樂格式間的互相轉換,也可以做 resampler (SSRC), equalizer (等化器) 等等。最棒的是它跟後文所述的 CD 擷取方式可以完全的整合,所以目前它是我在 Windows 下播音樂的唯一選擇。

最後要說的是抓音軌,也就是把聲音從 CD 上擷取下來,存放到硬碟中。為何要抓音軌呢?這跟 CD 的先天設計有關。要讀 CD 其實不是容易的事情,不然聯發科也不會賺這麼多錢。CD 與硬碟存資料方式不同,資料在 CD 上是以相同的密度排列的,由於 CD 內圈與外圈的圓周長差很多,若想像你是個小人,用一定的速度走在 CD 上,走裡圈的時候很快就走完一圈,走外圈的時候就要走比較久。這走路就等於是放音,在放音樂的時候,內圈跟外圈需要不同的轉速,所以 CD ROM 的轉速其實一直在變動,而且是依照訊號讀進來的間隔是否正確,來做連續的動態調整。而播音其實是即時的動作,所以解碼時,若是有些訊號讀得不正確,為了不影響到放音,也只好補一些零照樣送出去。這造成 CD 播放時,或多或少總是有些訊號不一致,這在稍微老舊有刮痕的 CD 上會更明顯。

所以為了克服這問題,我們可以用軟體來抓音軌,對於訊號不良的部位,反覆多讀取幾次,確定是正確以後,再存放到硬碟中,日後由硬碟直接播放。硬碟緩衝區大,資料傳輸快,在輸出像 CD 這樣的資料流量時,基本上根本不會出錯。就數位訊源的角度來看,他是比 CD 好上許多的儲存媒體。

然而實際上要把 CD 擷取與壓縮,其實是不容易的。之後要介紹雖然超級強大但是也超級不 user friendly 的無敵抓音軌程式: Exact Audio Copy 。這玩意真的不好用,不過還好我們現在要的只是正確的抓取音軌,而不是弄一份跟原先的 CD 完全一模一樣的拷貝,所以問題會稍微簡單一些。詳細的使用方法,我想會佔掉一整篇文章,所以下回再述了。

2 則留言 :

  1. 基本上我不相信loseless compression,
    我不相信完全沒有任何的frequency沒被犧牲掉
    然後還能縮小檔案
    這感覺就像我說我瘦好多喔
    可是脂肪還是一樣多

    回覆刪除
  2. loseless compression 不是騙局。
    就像一般常用的 WinZIP 一樣,壓縮過的資料可以完全復原到原貌,分毫不差。
    壓縮是一個專門的數學\資訊學科,但可以用一個簡單的例子說給普通人聽:
    假設,我有一段資料是AAAAA,則我可以將之記成A5,長度只有原來的兩成,但只要你知道我的記錄方式(encoding),你就能還原(decode)成AAAAA。
    所謂的無失真壓縮就是這樣的道理。

    回覆刪除