2006年1月12日

以電腦為音響數位訊源

早就想寫這篇東西,沒想到一拖整年。趁現在稍微空閒,趕緊記下,也留為日後改進的依據。

以電腦為數位訊源的想法,是由於「電腦」這玩意基本上就是為了數位訊號而存在的。它與一般音響器材最大的不同,在於可程式化的能力,這使得所有聲音的播放、重製、等化或者是其他種種數學上可能的處理都能夠執行。如此想來,它會比單純的器材多出無限的可能,並且大幅度的減低以數十萬計的無謂花費。

舉個簡單的例子:之前提過,高級音響的世界充滿無數的迷思、神話。比如 upsample 這玩意。一般 CD 是以 44.1 KHz, 16bit 的取樣頻率製作,而在訊號處理中有個基本的理論,就是不可能以 upsample 的方式變出更多的資訊,或換句話說,就是不會提高解碼後音樂的品質。因為更多的資訊在取樣時就已經失去了。

而高階的 CD player 經常都有 upsample 的能力,而且數字相當離譜,價格也相對高貴。這件事基本上沒用也就不提了,upsample 有什麼難呢?軟體輕鬆就可以做到了。在電腦上許多播放軟體都可以直接執行這功能,而這種程度的運算在現在的 CPU 來說,根本毫不費力。

而另一個更強的層面是:電腦可以播放的媒體種類與來源,遠遠大於任何音響器材。網路、MP3、WMA、MPEG 4、quicktime、realaudio,太多了,這才是真正的整合威力。

推薦的話說完,該說到實際面:如何把電腦變成數位訊源?

此處要強調,講「數位」訊源是有原因的。電腦基本上不適合直接輸出聲音。要搞到輸出很好的聲音不是不可能,但是現階段適合的器材不存在,稍微可以的也太過昂貴,所以不考慮這條路,直接讓它專注做最擅長的事:數位訊號的輸入、處理與輸出即可。

先講硬體面:

Windows XP or 2000 以上的平台有個麻煩的事情:作業系統會把輸入的訊號自動 resample 到 AC97 的規格以配合 AC97 的音效卡,也就是 48 KHz,而且是在 user 不知情的情況下做的。有個軟體叫 foobar2000 ,他是我最推薦的音樂播放軟體,以後有空再來介紹。它可以幫作業系統先 resample 好,再送給作業系統。因為用了較好(較暴力)的演算法,所以會比作業系統自己做的好。但是我們是發燒友啊,這種沒必要的 resample 只會毀掉原本很好的聲音罷了,基本上只要是有 resample 就是不能接受的。

部份音效卡可以避開這件事情, DearHoney 數位音樂工作室 那邊有很多相關的介紹,在此不提,總之只要可以不過 resample 「直通」輸出的音效卡,都可以符合需求,而且許多價格不高。

我們不用音效卡的類比輸出,而採用數位輸出,也就是 S/PDIF 光纖或是同軸輸出就可以了。高階的還有用平衡式 XLR 連結線的 AES/EBU 輸出,不過很貴。就我目前所知,在這裡用哪種規格其實對最後的聲音沒有影響,所以可以不管。我自己用的是 M-Audio 的 Transit,它是 USB 介面,其實 USB Audio 的規格不是很適合嚴格的聲音要求,不過因為它桌上型或是筆記型電腦都可以用,很方便,所以我選擇這個。

數位輸出搞定以後,下一步是重頭戲:數位類比轉換。這裡必需把數位訊號換成類比的聲音輸出,在此以後就是一般的音響知識了。但在這一步,我們會面對一個數位訊源中的大迷思:所謂的 jitter,時基誤差。這裡要澄清,所謂 jitter 並不是把資料傳錯,只是可接受範圍內的誤差罷了。就像我們在網路上把檔案傳來傳去,傳好幾次也還是同個檔,不會傳到錯掉。所以在聲音還是數位訊號的時候, jitter 這問題根本不用管。有些發燒友買了昂貴的專業用音效卡,但其實如果只用數位輸出的話,千元以下的只要直通也是一樣效果。一條才30公分然後要價數萬元的數位線,材質用什麼純銀啦,神奇的高純度什麼什麼光纖啦,簡單一句話,都是狗屁啦。打開自己的電腦看看,IDE 傳輸線一條才多少錢?我們一天到晚在硬碟上把檔案動來動去,可有傳輸錯誤過?數位訊號哪有那麼難傳!

jitter 真正有影響的地方是 DAC,也就是數位類比轉換的地方。因為 DAC 是被動元件,它會按照輸入的 clock 訊號來做出類比訊號,所以如果輸入的 clock 並不準確,類比輸出就不忠實。之前有很多接在 DAC 之前的 de-jitter 產品,基本上都是把訊號先存在一個暫存區,然後用好一點的 clock 把訊號重新輸出,亦即 buffer (緩衝區)的觀念。但這其實有問題,因為傳輸的訊號轉換本身就會產生誤差,所以這東西不應該在 DAC 外頭,應該在 DAC 裡頭就做掉。這問題其實也不只這麼單純,Dan Lavry 有篇文章講這個,不過我還沒時間看。現階段只要簡單的追尋一個條件:具有高品質內部緩衝、reclock 的DAC,即可解決 jitter 問題。在 DAC 之前,根本不需要考慮 jitter。

而從 DAC 輸出的訊號,就已經可以進擴大機,最後輸出到喇叭發出聲音了。在這之後,我們面對的東西就跟數位訊號無關,而僅僅是傳統的音響問題。

硬體面說完了,下一篇要來講軟體面。不知道會 delay 多久... :p

p.s. 本篇可能存在謬誤,歡迎指正。

8 則留言 :

  1. 經過我和我朋友..我們兩位錄音工程出身的人鑑定後...你的文章沒有問題.

    回覆刪除
  2. 受到專業背書的感覺蠻爽的 :D

    回覆刪除
  3. 作者已經移除這則留言。

    回覆刪除
  4. 不要都假設別人不懂,這樣嗆的會有點沒方向喔。Crystal Lock 在 Lavry 那邊公開的資訊我是看完了,也許我有誤解,但我讀出的意思是,他是用自己的 clock 去重做原先訊號的 clock。在 lock 的過程中,會需要對他自己的 clock 以 1ns (好像是)做微調,以跟上太慢或太快進來的訊源。

    所以基本上,仔細看懂我的意思後,就可以看出你寫的東西是無的放矢。jitter 對聲音當然有影響,當然不易處理,但誤差可以校正,而不是永遠的破壞/失落,這也是我一直強調的。我說的不用管,是指不論前頭誤差如何,只要在容許範圍內,經過有類似設計的 DAC 之後,你得到的就是 DAC 本身的誤差,而不是前頭傳輸過程中產生的誤差。誤差跟傳"錯"是完全不同的。

    你所說像樣點的訊源,若誤差比 crystal lock 做出來的小,那當然聲音可以比較好。而當然從你武斷亂嗆的發言來看,也很可能是心理因素。

    Anyway,要指教的話,我會比較歡迎有料的發言喔。

    回覆刪除
  5. 作者已經移除這則留言。

    回覆刪除
  6. 作者已經移除這則留言。

    回覆刪除
  7. 你post的東西我就是看過啊。我為了這還去K CD的編碼規格,還有 spdif 格式,著實搞了好一陣子。你讀我文章意思難道是用光纖傳跟同軸傳「沒差」?如果後頭 DAC 是直接參考輸出聲音,那當然不同傳法會造成差異啊。我寫的明明是只要在後頭可以鎖定到訊號,重做,那前頭誤差就可以不計。如果說是這點有問題,那歡迎你提出囉。

    你一直在講 jitter 跟輸出息息相關,有沒發現我也一直提到?我文章寫那麼清楚說 DAC 是被動的,jitter 會影響聲音,拜託你讀一下,然後再開砲嗆人,不然真的浪費打字時間。

    然後 lavry blue 有沒聽過?有沒比過光纖跟同軸?當然都有啊。blind test 也搞過啊。聲音有沒差?當然也有啊。但很一致的是,如果 crystal lock 或者另台有 buffer - reclock 機制的 DAC 打開,那至少這幾個人都聽不出 jitter 程度不同的訊號來源有什麼不同。而自己(可能很粗淺)的 survey 也感覺這樣合理,才會寫出的。

    So,在控制變因、blind test 的前提下,如果您的金耳可以輕鬆分辨,那代表我可能什麼地方忽略了,歡迎你點出原因,叫人家「自己回去讀書」並不是負責任的說法,反而有點像是虛張聲勢。

    最後向您聲明,這是我的blog,而我不喜歡你的語氣。若下篇沒有平和討論的可能,我會刪除您全部意見。或許你會說我講不過就刪文之類的,那也隨你,但這是我的決定。

    回覆刪除
  8. 在 DAC 之前,根本不需要考慮 jitter。
    -------------------------------
    先別說轉盤的電源模組跟線路佈局都會造成的jitter,
    高級廠機連設計轉盤時會考慮機箱的諧震點,
    因為連一點輕微的震動都會造成jitter,
    而影響最後da後的音質

    數位訊號不會改變嗎?
    http://cynicalaudio.blogspot.com/

    回覆刪除