可重現的音訊等化器結果來自確定性的數學運算:相同的來源檔案結合相同的整數 dB 值、相同的解碼後取樣率,以及相同的濾波器階數,每次執行都會產生相同的 PCM16 WAV。音訊等化器透過套用 W3C Audio EQ Cookbook 中的 peaking biquad 方程式、將每一節的係數標準化,並以固定的低音、中音、高音順序串接三個節區,來實現這種確定性。由於整個管線中沒有任何部分會選擇隨機的捨入方式、隨機的濾波器狀態或隱藏的餘量,因此相同的輸入與相同的滑桿位置必定產生相同的處理後樣本、相同的原始峰值、相同的輸出峰值,以及相同的安全縮放比例。
會破壞這種可預測性的,是任何會在等化器執行前改變輸入或路徑的因素。重新匯出的檔案、不同的編解碼器、不同的瀏覽器解碼器,或不同的解碼後取樣率,都會餵給 biquad 不同的數字,因此處理後的結果就不再是逐位元組相同。可重現性因此是您、檔案與瀏覽器分頁之間的一項契約,而本文接下來將詳細說明如何維持這項契約。

是什麼讓等化器的結果可重複
本工具的可重現性建立在三個具體條件之上:相同的解碼後樣本輸入、相同的固定係數,以及相同的確定性管線。W3C Audio EQ Cookbook 中發布的 peaking biquad 方程式接受五個輸入(中心頻率、取樣率、Q 值、以 dB 表示的增益,以及濾波器類型),並回傳一組固定的係數。當 Q 鎖定為 1、增益為整數、中心頻率為 100 Hz、1,000 Hz 與 10,000 Hz(或在低取樣率時取解碼後取樣率的 45%,以低於 Nyquist 限制),唯一會改變的輸入就是您的 dB 值與解碼後的音訊本身。這種受限的作用面,正是輸出能保持穩定的原因。
接著,管線會以 a0 標準化每一個係數,逐聲道執行二階遞迴濾波器,並以固定順序串接三個節區。每個聲道保留相同的樣本框數,且每個接受的聲道都以相同的設定獨立進行濾波。濾波完成後,工具會量測所有處理後樣本與聲道中的絕對峰值。若該原始峰值為 0.99 或更低,結果會原樣寫入;若更高,則會以一個統一的縮放係數降低整個處理後結果,使最大振幅變為 0.99。這些步驟都不會引入隨機性,因此要得到不同的檔案,唯一的方法就是改變其中一項輸入。
決定輸出的控制項
等化器由三個控制項驅動,每一個都以支援可重現性的方式受到限制:
- Bass(低音) — 從 −12 到 +12 dB 的整數值,透過中心頻率為 100 Hz 的 peaking biquad 套用。
- Mid(中音) — 從 −12 到 +12 dB 的整數值,透過中心頻率為 1,000 Hz 的 peaking biquad 套用。
- Treble(高音) — 從 −12 到 +12 dB 的整數值,透過中心頻率為 10,000 Hz 的 peaking biquad 套用,在低取樣率時降至解碼後取樣率的 45%,以維持在 Nyquist 限制以下。
三個節區皆使用 Q 值 1,這是一個公開的產品選擇,而非從檔案推算出的值。Q 在頁面上無法調整,因此在相同 dB 值下的兩次執行必定計算出相同的係數。將三個控制項都設為 0 dB 會產生一條平直的路徑:工具複製解碼後的聲道樣本而不執行任何非零的濾波節區,且輸出峰值等於原始峰值,安全縮放比例等於 1。
由於增益為整數 dB 值,因此不存在「大致相同」的疑慮。從 −12 到 +12 之間的每個值都會對應到一組特定的係數。以 Bass +4、Mid −2、Treble +6 對同一個檔案執行兩次,必定以相同的順序使用相同的係數。
使用音訊等化器時如何重複得到相同的結果
- 選擇相同格式的同一個來源檔案。開啟音訊等化器並選擇原始可由瀏覽器解碼的音訊檔(MP3、WAV、M4A、AAC、Ogg、WebM,或在您目前的瀏覽器與作業系統支援該編解碼器時的 FLAC)。檔案必須在 50 MiB 的輸入上限以內,解碼後長度不超過五分鐘,包含一至八個聲道,使用 8,000 到 192,000 Hz 之間的取樣率,且聲道樣本總數低於 3,000 萬。
- 記下解碼後的取樣率。瀏覽器的 Web Audio 解碼器完成後,頁面會顯示解碼後的取樣率,而非來源容器中的取樣率。請記錄該數字,因為這是 biquad 計算時所使用的取樣率;任何未來若解碼後取樣率不同的重新執行,都不會產生相同的檔案。
- 將 Bass、Mid 與 Treble 設為整數 dB 值。使用 −12 到 +12 dB 之間的整數。維持與先前相同的組合;即使改變 1 dB,也會使係數與處理後的樣本產生偏移。
- 在本地套用等化器。點擊套用動作。三個 peaking biquad 會以 Bass、Mid、然後 Treble 的順序逐聲道執行。不會發生上傳;解碼、濾波與編碼都停留在目前的瀏覽器分頁內。
- 比較原始峰值、輸出峰值與安全縮放比例。下載前,請讀取三個回報的數值。在相同來源與相同設定下的重複執行,應顯示相同的原始峰值、相同的輸出峰值,以及相同的安全縮放比例(當原始峰值為 0.99 或以下時為 1,否則為 0.99 除以原始峰值)。
- 預覽,然後下載 WAV。使用您在意的那組喇叭或耳機聽過預覽後,再下載新的未壓縮 PCM16 WAV。下載連結每次都會重新產生,且前一個 Blob URL 會被撤銷,因此請務必取得最新的連結,而非使用過期的連結。
輸出中保留與變動的部分
輸出是由經過測試的共用編碼器所寫入的一個全新的 PCM16 WAV。某些屬性會在執行間保留,某些則會刻意捨棄,而了解其中的差異也是維持結果可重現的一部分。
| 屬性 | 下載的 WAV 中的行為 |
|---|---|
| 聲道數 | 與解碼後輸入相同(1 到 8)。 |
| 每聲道樣本框數 | 與解碼後輸入相同;每個聲道維持相同長度。 |
| 取樣率 | 為解碼後的取樣率,寫入 WAV 表頭中,而非來源容器的取樣率。 |
| 位元深度 | 16 位元有號 PCM,小端序,以框交錯。 |
| 原始編解碼器 / 位元率 | 捨棄。結果為未壓縮 PCM;沒有 MP3 或 AAC 位元率可供保留。 |
| 標籤、封面、章節、循環標記 | 捨棄。容器特定的中繼資料不會被帶過來。 |
| 逐樣本處理 | 三個串接的 peaking biquad,加上當原始峰值超過 0.99 時的統一安全縮放。 |
經驗證的 WAV 表頭會記錄實際的聲道數、取樣率、位元組率、區塊對齊、位元深度,以及完整的資料長度。由於表頭反映的是解碼後的數字,在相同設定與相同解碼後取樣率下的兩次執行,將在每個表頭欄位上保持一致。任何依賴來源容器的項目(位元率、ID3 標籤、嵌入的封面、章節標記)在任一次執行中都不會被保留。
結果仍然會不同的情況
即使 dB 值相同,若餵入 biquad 的解碼後樣本改變,輸出仍可能變動。最常見的原因包括:
- 不同的瀏覽器或作業系統。副檔名並非保證。M4A 或 MKV 容器可能包含某個瀏覽器無法解碼的編解碼器。當解碼失敗時,工具會回報錯誤且不會產生下載,因此部分結果無法冒充為重現的結果。
- 上游的取樣率轉換。若來源在送達工具之前已被重新取樣,頁面上顯示的解碼後取樣率將與先前執行記錄的取樣率不符,biquad 係數也會不同。
- 執行間對檔案的編輯。透過其他編輯器重新匯出、修剪頭尾,或重新壓縮檔案,都會改變解碼後的樣本,因此相同的滑桿位置將不會產生相同的 WAV。
- 來自其他工具的非整數 dB 值。本工具僅接受整數 dB 值,因此來自其他等化器的任何 +3.5 dB 之類的值都無法對應到此處的控制項。這會使係數與處理後的樣本產生改變。
限制也會保護執行。超過 50 MiB、解碼後超過五分鐘、落在 8,000–192,000 Hz 範圍外,或超過 3,000 萬聲道樣本的檔案,會在任何濾波發生前被拒絕,且工具絕不會悄悄截斷檔案末端。被拒絕的檔案不會產生過期的下載;只有以被接受的檔案重新執行才會產生輸出。
驗證重複的執行
可重現性只有在能被確認時才有用。三項檢查就足以確認數學運算產生了與先前執行相同的輸出:
- 比對回報的中心頻率、框數與取樣率。頁面會回報中心頻率(100 Hz、1,000 Hz,以及 10,000 Hz 或取樣率的 45%)、解碼後取樣率,以及每聲道的框數。這些是診斷數值,而非良好混音的保證;在第二次執行中比對一致,是輸入以相同方式處理的第一個訊號。
- 比對原始峰值、輸出峰值與安全縮放比例。原始峰值是縮放前所有處理後樣本與聲道中的絕對最大值。輸出峰值則是實際寫入的值(觸發縮放時為 0.99,否則等於原始峰值)。安全縮放比例是統一乘數,當原始峰值為 0.99 或以下時為 1,否則為 0.99 除以原始峰值。
- 比對 WAV 位元組。兩次執行都透過同一個經過測試的共用 PCM16 編碼器產生。在相同的 dB 設定、相同的解碼後樣本與相同的縮放下,產生的 WAV 檔案將逐位元組相符。如需第三方驗證,請使用校驗和工具。
舉例而言,若某次重複執行回報原始峰值 = 1.05 且輸出峰值 = 0.99,則安全縮放比例正好是 0.99 / 1.05 ≈ 0.9429,兩次執行中的每個處理後樣本都會乘以該相同的係數。在相同解碼後樣本上以相同設定進行的第三次執行,必須回報相同的這三個數字;若否,則表示輸入在上游某處已發生改變。
當相同的滑桿位置不再產生相同的 WAV 時,請將此視為重新檢查檔案、解碼後取樣率與瀏覽器的訊號,而非等化器的缺陷。biquad 背後的數學、串接順序、安全規則與 WAV 編碼器皆為固定且在每次執行中共用。
延伸閱讀:線上音訊等化器:用本地效果調整您的音訊。
延伸閱讀:規劃使用音訊等化器所需的步驟。