Keith Howard測試了在Chord Electronics DAC,尤其是M Scaler里面發(fā)現(xiàn)的Rob Watts超長濾波器背后的設計理念。
這是一個有趣的歷史巧合,1948 年既是哥倫比亞唱片公司宣布黑膠誕生的年份,也是Claude Shannon的著名論文通信數(shù)學理論 [1] 的發(fā)表年份,該論文描述了信號采樣的數(shù)學基礎,從而描述了數(shù)字音頻,F(xiàn)在已經(jīng)公認Shannon實際上并不是第一個研究該領域的人。其他人,包括英語數(shù)學家Edmund Whittaker早先已經(jīng)闡明了全部或部分理論。但是Shannon的論文真正開啟了信息論領域并鋪平了道路 – 等待必要的技術進步 - 各種連續(xù)信號的數(shù)字化,而不僅僅是音頻波形。
很少有發(fā)燒友了解這個數(shù)學領域或其對音頻信號的潛在應用,直到1972年開始,BBC開始用13位Nicam PCM 數(shù)字音頻鏈路取代其信號傳送器的音頻固定電話,該鏈路以32kHz采樣率進行壓擴(壓縮傳輸并隨后在接收時擴展)。第一個是從Broadcasting House到位于North Kent的Wrotham信號傳送器,于當年9月14日開始運行,然后通過網(wǎng)絡逐步擴展。在1970 年代后期,第一批質量不錯的數(shù)字錄音機被開發(fā)出來供Denon和Decca等先鋒唱片公司使用。隨后在1982/3 年,CD 出現(xiàn)了 — 這是第一個數(shù)字音頻音樂載體。
鑒于CD在歐洲上市已經(jīng)35年了,您可能會認為大多數(shù)發(fā)燒友現(xiàn)在已經(jīng)牢牢掌握了采樣理論的基礎知識,但實際上它仍然被廣泛誤解。如果Chord Electronics的數(shù)字設計顧問Rob Watts是正確的,那么這里面不僅包括音頻愛好者,還有音頻專業(yè)人士。多年來,Watts 一直反對在高過采樣DAC中使用相對較短(有時非常短)的數(shù)字濾波器的傳統(tǒng)音頻行業(yè)做法。隨著技術的發(fā)展,他的濾波器變得越來越長。他說,每增加一次濾波器長度,音質就會提高。
Watts長期尋求實現(xiàn)足夠長濾波的濾波器,在7月的倫敦CamJam秀上,Chord推出了最新的Electronics M Scaler(參見Box-out),一種數(shù)字輸入、數(shù)字輸出上采樣器,首次配有超過一百萬個filter taps,即采用的線性相位FIR(有限脈沖響應)插值濾波器有超過一百萬個系數(shù):準確地說是1,015,808。為了正確看待這個數(shù)字,大多數(shù)過采樣DAC使用的濾波器長度最多為幾百個taps(系數(shù))。甚至Dave作為Chord當前最好的獨立DAC,“僅”使用 164,000 個filter taps。
要了解Watts對更長插值濾波器的不懈追求 — 每一步都已拉開他與公認的行業(yè)實踐之間的差距 — 這需要回到基本原理:即Shannon的采樣理論,特別是“sinc”函數(shù)。
圖1. sinc(x)函數(shù)的中心部分
Sinc(x)是函數(shù)sin(x)/x的數(shù)學簡寫,它看起來(在其中心部分)如圖1所示。x軸(水平軸)被標記為“采樣間隔”的原因很快就會變得顯而易見。Shannon在他著名的論文中表明,任何帶限連續(xù)信號 — 即任何對其最大頻率有嚴格限制的模擬信號 — 都可以準確地描述為時間間隔sinc(x) 的總和波形。
不僅如此,如果對信號進行采樣,即如果以固定間隔至少兩倍于最高信號頻率的速率測量其幅度,則每個采樣幅度表示以該采樣點為中心的相關sinc(x)波形。在所有其他采樣點,該值特定的sinc(x) 函數(shù)為零,就像以彼此為中心的sinc(x) 函數(shù)的采樣值在這里為零一樣。因此,如上所述對波形進行采樣可以提取所有必要的信息來重建它,并完全準確地這樣做。
這就是模數(shù)轉換過程,這是完全可行的。我們必須添加的所有內(nèi)容確保在實踐中實現(xiàn)幅度測量的量化,以便每個樣本值可以用若干個有限的長度來表示。
相比之下,波形重建過程 — 數(shù)模轉換 — 就沒有那么簡單了。在理想的世界中,這將通過為每個采樣點生成適當幅度的脈沖并將規(guī)則間隔的脈沖序列通過理想的低通濾波器來實現(xiàn),其通帶上邊緣設置為采樣率的一半。這種濾波器的脈沖響應是sinc函數(shù),因此每個脈沖都會生成一個具有必要幅度的sinc波形,并且一系列sinc函數(shù)將相加以重新創(chuàng)建原始波形。
不僅如此,如果對信號進行采樣,即如果以固定間隔以至少兩倍于最高信號頻率的速率測量其幅度,則每個采樣幅度表示以該采樣點為中心的相關sinc(x)波形。在所有其他采樣點,該值特定的sinc(x) 函數(shù)為零,就像以彼此為中心的sinc(x) 函數(shù)的值采樣一樣點在這里為零。因此,如上所述對波形進行采樣可以提取所有必要的信息重建它,并完全準確地這樣做。
這就是模數(shù)轉換過程,而且是完全可行的。為了使其在實踐中可實現(xiàn),我們必須添加的只是幅度測量的量化,以便每個樣本值可以由多個有限長度表示。
相比之下,波形重建過程 — 數(shù)模轉換 — 就沒有那么簡單了。在理想的世界中,這將通過為每個采樣點生成適當幅度的脈沖并將規(guī)則間隔的脈沖序列通過理想的低通濾波器來實現(xiàn),其通帶上邊緣設置為采樣率的一半。這種濾波器的脈沖響應是sinc函數(shù),因此每個脈沖都會生成一個具有必要幅度的sinc波形,并且一系列sinc函數(shù)將相加以重新創(chuàng)建原始波形。
圖 2. sinc(x) 函數(shù)的求和 - 每個信號樣本一個 - 構建出采樣點之間的波形
這在圖2中進行了說明,其中顯示了六個不同幅度的連續(xù)sinc函數(shù)及其總和(黑色軌跡)。每個sinc函數(shù)對其他采樣點的總信號幅度沒有任何貢獻,但對采樣點之間的波形有貢獻。人們假設采樣點之間的波形是不可知的,這是對采樣的一個常見誤解,事實并非如此 — 前提是輸入信號是帶寬受限的,并且采樣速度至少是Shanon采樣過程要求的最高分量頻率的兩倍。在那種情況下,可以明確地重建采樣點之間的波形。重要的是,波形不僅取決于附近的樣本值,還最終取決于整個采樣信號的樣本模式。
在實踐中,這種理論上的DAC方案是不可行的,原因有二。首先,理想的低通濾波器在通帶邊緣具有無限滾降率, 這僅存在于抽象中 — 在現(xiàn)實世界中,濾波器的滾降率總是有限的,它只能近似。其次,即使完美的低通濾波器不是夢想,這種方法也會提供不足的信噪比,因為每個脈沖中包含的能量很小。
在現(xiàn)實世界的DAC中,必須做到兩個妥協(xié)。首先每個樣本的幅度不表示為脈沖,而是表示為在整個采樣周期內(nèi)保持的階段。這種“采樣和保持”過程消除了信噪比問題,但會導致不平坦的頻率響應逐漸向奈奎斯特頻率(采樣率的一半)滾降。修復微不足道:滾降可以并且通常是通過以下方式糾正均衡。我已經(jīng)提到的第二個妥協(xié)。由于無法實現(xiàn)理想的低通濾波器,因此必須替換滾降速率較慢的濾波器 — 這樣就無法提供sinc(x) 脈沖響應。
習慣性地解決最后一個問題的方式就是忽略它。模擬輸出濾波器(或在過采樣系統(tǒng),數(shù)字插值濾波器)被認為是足夠的,如果它達到足夠好的頻域性能,即足夠平坦的通帶響應和足夠的衰減出現(xiàn)在奈奎斯特頻率之上的圖像頻率。圖3顯示了頻率響應一個示例插值濾波器(使用著名的Parks-McClellan等波紋逼近法)用于具有以下規(guī)格的44.1kHz數(shù)據(jù)的4倍過采樣:
通帶上限頻率 20kHz
通帶紋波 0.01dB
阻帶低頻 24kHz
阻帶衰減 100dB
生成的FIR濾波器具有 215 個系數(shù)(taps),并且由于它是線性相位,因此具有時間對稱的脈沖響應。奈奎斯特頻率 (22.05kHz) 的衰減約為10dB。濾波器脈沖響應如圖4所示,覆蓋了圖1的sinc函數(shù),但此處跨越更寬范圍的采樣間隔以適應濾波器系數(shù)的數(shù)量。圖5重復了圖4的數(shù)據(jù),但以分貝幅度標度表示。
從這兩個圖中可以清楚地看出,插值濾波器 — 盡管它滿足代表性頻域標準 — 具有與 sinc(x) 函數(shù)完全不同的脈沖響應,而不僅僅是因為它更短。
圖5. 圖4的再現(xiàn)版,但這次使用分貝幅度刻度
圖5強調(diào)了一個重要的點:sinc(x)函數(shù)的包絡 — 對于x值從負無窮大到正無窮大的有限值 — 隨時間緩慢衰減。在距其中心峰值150個采樣間隔處,包絡僅衰減了50dB多一點。顯而易見的問題是:它必須衰減多少才能使其對樣本間波形的貢獻變得微不足道?
這不是一個能直接回答的問題,但如果我們說100dB,為了使0dBFS(滿量程)樣本的包絡幅度低于16位本底噪聲,我們可以輕松計算出需要哪些同步函數(shù)的摘取。同步函數(shù)的包絡僅由sin(x)/x的分母確定,因此它表現(xiàn)為1/x,其中x = Nπ(弧度角),這里的N是遠離中心峰值的采樣間隔數(shù)。包絡從其峰值1/x = 0.000001下降100dB,相當于N = 31,831。這中央峰的任一側都需要樣本長度,因此sinc(x)摘取的總長度是其兩倍。換句話說,對于44.1kHz采樣率,所需的sinc函數(shù)摘錄的總長度為1.443秒 — 非常接近Chord的M Scaler提供的濾波器長度。
簡而言之,這解釋了Watts對前所未有的長插值濾波器的追求,他使用所謂的窗函數(shù)插值技術設計了這些濾波器。正如前一段所說的,這涉及從sinc 函數(shù)的中心提取一個數(shù)據(jù)塊,但為了獲得最佳結果,這個過程需要比簡單的sinc函數(shù)值的“提升”和余數(shù)的截斷更微妙。如果對提取的sinc函數(shù)進行加窗處理(即成形)以避免在任一端突然截斷,則會獲得更好的結果。Watt的WTA (Watts Time Alignment) 加窗算法是一項嚴密保護的秘密,隨著濾波器長度的增加,它不得不進行改進,但它的名字表明了 Watts 的主要設計標準:保持準確的瞬態(tài)時序。
據(jù)我所知,沒有其他設計師沿用Watts的方法?紤]到Watts幾十年來一直走在孤獨的道路上,你可以想象這樣做是一項艱巨的任務。但如果有人想嘗試 — 特別是考慮到Chord的數(shù)字產(chǎn)品廣受好評 — 他們會怎么做?
首先要做的是說服自己Watts的方法是正確的。做到這一點最簡單的方法自然是聆聽Chord 的產(chǎn)品,最好是選擇它們來繪制增加濾波器長度的過程。但還有另一種方法,它比購買一套 Chord設備便宜得多,而且比對FPGA進行編程的主要步驟要容易得多。那是在軟件中離線執(zhí)行sinc插值。
10多年前,我第一次編寫了一個軟件實用程序來執(zhí)行此操作 — 與FPGA編程相比,這絕對是輕而易舉的事情。問題是該程序需要很長時間才能運行比短音頻文件更長的文件,因為它需要計算 (U-1) × N2 sin(x)/x的值,其中U是過采樣因子,N是文件中的樣本數(shù)。這是針對每個頻道的。但就像我說的,它很容易操作,而且很便宜,它允許您生成和收聽使用全正弦插值過采樣的文件,在這方面它甚至比M Scaler 更好。獲得文件后,可以將其用作參考,用于試聽使用不同設計的有限長度插值濾波器生成的其他文件。
這里向您展示一個示例,我使用短(0.98 秒)單聲道、44.1kHz/16位WAV 文件運行代碼,該文件包含在大鍵琴上演奏的單個音符。對于4倍過采樣,處理(使用64位浮點運算并生成24位輸出WAV文件)耗時295 秒 — 超過300倍實時 — 在我老化的臺式計算機的單個處理器內(nèi)核上運行。
圖6疊加了原始文件(紅色軌跡)和過采樣文件(藍色軌跡)的頻譜,顯示 (a) 通過通帶時兩者重疊,并且 (b) sinc插值確實會導致22.05kHz的磚墻低通濾波,高于該頻率的本底噪聲是由于抖動造成的。(原始文件使用4096點FFT進行分析,插值文件使用16,384點FFT 進行分析,以確保頻譜具有相同的頻率分辨率。)
圖 6. 在豎琴和弦上演奏的單個音符的簡短錄音頻譜。紅色軌跡是 44.1kHz/16-bit 原始文件,藍色軌跡使用全正弦插值生成的4倍過采樣版本
過去我曾建議,雖然以前從未發(fā)布過,但可以使用重量級數(shù)字運算的人可能會使用它來創(chuàng)建一個易于訪問的sinc插值音樂文件緩存,這正是為了開發(fā)改進的插值濾波器。這可能不是一種可能會讓你登上《時代》雜志封面的行為慈善事業(yè) — 但發(fā)燒友可能會永遠尊敬你的名字。有人對此感興趣嗎?
參考文獻
1) Shannon, C E. 《A Mathematical Theory of Communication》, Bell System Technical Journal (1948).
圖片
Chord Electronics M Scaler
我有一種感覺,M Scaler將被證明是2018年最重要的,也可能是最有爭議的產(chǎn)品之一。它肯定會引起那些已經(jīng)發(fā)現(xiàn)Rob Watts的DAC設計更勝一籌的人的興趣。
M Scaler所做的就是將Chord Blu MkII升頻CD轉盤的過采樣技術, 以不到一半的價格封裝在40.5×235×236mm(hwd)、2.55kg的盒子中。 數(shù)字輸入可通過兩個BNC插座上的同軸S/PDIF 獲得,光纖S/PDIF可通過兩個Toslink插座和通過B型連接器的USB實現(xiàn),以適應各種數(shù)字源。輸出通過352.8/384kHz的單BNC、176.4/192kHz的光學S/PDIF或通過705.6/768kHz的雙BNC插座與Qutest、Hugo TT2或Dave搭配使用以獲得完整性能。
M Scaler中的關鍵組件是Xilinx XC7A200T FPGA(現(xiàn)場可編程門陣列)芯片,它提供740個DSP內(nèi)核。Watts最新的濾波器架構(也用于Hugo TT2)采用了528個以4096倍采樣頻率運行的內(nèi)核,包含50萬行控制代碼并在計算中使用56位分辨率。提供直通選項以允許對輸入和輸出進行即時比較,并通過增益校正確保電平?jīng)]有差異。[過采樣可能會導致插值樣本值超過0dBFS(滿量程),需要降低增益以適應它們。] 對512,000 taps的初始測試給出了Watts所描述的與Dave的164,000 taps相比“完全出乎意料”的改進幅度, 因此目標被提高到超過一百萬次taps。在705.6/768kHz輸出采樣率 (16×44.1/48kHz) 下,這意味著當M Scaler對第一個樣本執(zhí)行計算時,延遲(輸入和輸出之間的延遲)約為0.6秒。因為當音頻伴隨視頻時這種延遲會導致令人無法接受的口型同步問題,M Scaler提供了一個視頻輸入,它使用非對稱插值濾波器來將延遲減少到可接受的0.1秒。
由此獲得的音質優(yōu)勢是什么?Watts說,更長的濾波器提高了瞬態(tài)準確度,使樂器音色更清晰,低音收緊,并“戲劇性地”展開了聲場。“在你聽過 M Scaler 之后”,他說,“很難再聽得下Hugo TT2或Dave。”他對更多濾波器taps的渴望現(xiàn)在得到滿足了嗎?并沒有:“我的直覺是我們需要更進一步發(fā)展。”