用 REW 自製 FIR 反轉濾波器做 DRC(無 EQ)

原片利用 REW 自製 FIR 濾波器以校正空間中頻響(沒用到 EQ) 講者:OCA(OCA's Audio Channel) 長度:27 分 59 秒 核心方法:用 REW 把喇叭響應曲線反轉生成 convolution 檔案,不用任何 EQ filter 適用對象:已有基本 REW 測量基礎、想做 DRC 但厭倦 EQ 拉桿微調的玩家 預計花時:完整流程約 30 分鐘(OCA 親自驗證) 譯註:本教學由助理依逐字稿翻譯整理為繁中結構化教學,非逐句直譯。技術名詞保留英文以利對照 REW 介面。


🎯 為什麼用這個方法

跟傳統 DRC(EQ 拉桿)差在哪

  • ❌ 傳統做法:用 REW 的 EQ filter 工具,一條一條設 PEQ(peaking)、shelf、notch 補償喇叭/房間缺陷
  • ✅ 本方法:完全不用 EQ filter,直接把喇叭測量曲線「反轉」(invert) 在目標曲線上,生成 convolution wave file 餵給 DSP 引擎

為什麼說「技術上最準確」

  • EQ 拉桿是有限個離散點的補償,永遠無法完全 cover 真實響應
  • 反轉法是每個頻率點都精確抵消差值 → 收斂到 target curve

「我的系統需不需要 DRC?」

  • OCA 直接斷言:需要
  • 即使你有最高階喇叭擺位完美,可聞頻段 peak vs dip 仍有最少 20 dB 差(房間模態、反射、不對稱性)
  • 訊號要乾淨到耳朵,DRC 不是奢侈品而是必需品

🛠️ 前置條件

項目 要求
軟體 REW(Room EQ Wizard,免費)
麥克風 miniDSP UMIK-2(OCA 用的;UMIK-1 也可)
喇叭 左右各一聲道
量測訊號 4 MB sweep(最長 sweep → 最高 S/N 比)
量測位置 主聆位(central listening position)
取樣率 48 kHz / 16 bit(REW 內部運算用這個,不要改)

⚠️ 音量很重要:要用平時聆聽音量測。人耳對低頻感知會隨音量改變,target curve 必須對應你習慣的音量才有意義。


📋 完整流程總覽(11 步)

Step 1:在主聆位、平時音量下,量左/右各一次(4 MB sweep)
Step 2:加 frequency-dependent window(35 cycles)去除反射干擾
Step 3:時間對齊(time alignment)— 用 impulse response 對齊到 t=0
Step 4:音量對齊(SPL alignment, 62.5–4000 Hz 區段)
Step 5:取 L+R RMS 平均,得 LR curve
Step 6:載入 Harman Target Curve
Step 7:依喇叭 low-frequency cutoff 設 Target settings,產生 Target shape measurement
Step 8:把 L、R 各自除以 target、再取倒數 → L_inverted、R_inverted
Step 9:把 inverted 兩條轉成 minimum phase 版本
Step 10:export 成 wave file(44.1 / 48 kHz)→ stereo convolution file
Step 11:載入到 DSP 引擎(Roon / EqualizerAPO / JRiver)

Step 1 — 量測

1.1 設定

  • 主聆位放 UMIK-2
  • 取樣率 48 kHz
  • Sweep 長度選 4 MB(最長,最佳 S/N)
  • 音量轉到平常聆聽音量

1.2 量測

  • 左聲道 → 存成 L
  • 右聲道 → 存成 R

Step 2 — Frequency-Dependent Window(去除反射)

目的:把房間反射在 impulse response 切掉,看真正喇叭直達聲的高頻細節。

操作

  1. 選 measurement (L 或 R)
  2. Impulse Response 視窗
  3. Frequency-Dependent Window
  4. 35 cycles(REW 的上限,保留最多細節)

為何 35 cycles

工具 預設 cycles
Dirac Live 7
Audyssey 9
本方法 35

💡 OCA 的理由:Dirac/Audyssey 用小 cycles 是為了讓自家 EQ filter 容易 fit;本方法不做 filter 擬合 → 不需要平滑 → 保留最多細節

⚠️ 不要做 smoothing

本方法不做任何 smoothing(1/3 octave / 1/6 octave 等)。理由同上。


Step 3 — 時間對齊(最容易被忽略的細節)

3.1 為什麼要對齊

左右喇叭到耳朵的距離若差 1 mm,convolution filter 計算就會有相位偏差。先對齊 t=0,filter 才能精準工作。

3.2 操作流程

找出 impulse peak

  1. Overlays → Impulse Response
  2. 同時顯示 L 和 R
  3. 放大畫面找 impulse peak
  4. ⚠️ 重點:impulse peak 是最大振幅的那個尖端,可能向下也可能向上(看 phase polarity)

量測 time offset

  1. 鍵盤按住 Ctrl
  2. 滑鼠右鍵點 peak A 點
  3. 不放開鍵,移動到 peak B 點
  4. 讀出 time difference(例:−4.295 ns,相當於 0.001 mm = 0.06 in)

套用 offset 對齊

  1. 切換到 Realtime Analyzer → Impulse 頁籤
  2. 選中要對齊的 measurement(如 R)
  3. Controls → Offset t = 0
  4. 輸入 ÷ 1000 後的值-4.295 ns ÷ 1000 = 0.004295 ms(單位是 ms 不是 ns)
  5. Tab 鍵確認
  6. 在 Overlays 視窗點 Apply → R 會往後移到 t=0
  7. 同樣對 L 做一次(OCA 例:−0.872 ns → 0.000872 ms)

3.3 對齊只用於計算

重點:REW 對齊只是為了計算 convolution。實體要靠:

  • 物理移動喇叭,或
  • DSP 引擎裡的 delay 參數(Roon、EqualizerAPO 都有)

Step 4 — 音量對齊(SPL Alignment)

4.1 為什麼要對齊

要讓人聲定位精準在兩喇叭中間。若 L/R 音量差 0.5 dB → 中央人聲會偏一邊。

4.2 對齊範圍:62.5 Hz – 4000 Hz

為什麼是這範圍

  • 涵蓋所有人聲頻段
  • 男聲最低 65 Hz(極低男低音)→ 女聲花腔最高 1,280 Hz
  • 女高音尖叫可達 3,000 Hz
  • 留餘裕到 4,000 Hz

4.3 操作

A. 先複製避免破壞原始檔

  1. Measurement Actions → Response Copy 對 L 做一份
  2. 同樣對 R 做一份
  3. 取消勾選 L 和 R,只勾兩份 copy

B. 用 REW Align SPL 工具

  1. Alignment center = 500 Hz
  2. Alignment span = 3 octaves
    • 500 ÷ 2³ = 62.5 Hz(下限)
    • 500 × 2³ = 4000 Hz(上限)
  3. 勾選 Use average SPL of measurements
  4. 點 Align SPL → L_copy 與 R_copy 對齊

C. 算每聲道需要的 offset

  1. 取消勾 R_copy,只勾 L 和 L_copy
  2. Measurement Actions → SPL Offset for L
  3. 看 L 需要 +N dB 才能對到 L_copy(例:−0.2 dB
  4. Add Offset to Data
  5. 對 R 重複,offset 會剛好相反(+0.2 dB

💡 OCA 範例:L/R 差 0.4 dB → 各補 ±0.2 dB

4.4 跟時間對齊一樣,convolution 不會 fix volume

SPL offset 不會寫進 convolution wave。要靠:

  • amplifier 的 balance 旋鈕
  • DSP 引擎的 gain 參數

Step 5 — RMS 平均得 LR Curve

操作

  1. 確保 L 和 R 已時間+音量對齊
  2. 選兩個 measurement
  3. Measurement Actions → Average the responses → RMS Average
  4. 命名為 LR

為何用 RMS 而非 Vector

平均方式 特點 適用情境
RMS Average 只取 SPL 平均,忽略相位 本方法用這個
Vector Average 同時考慮 phase 高品質但 unwrapped phase 在範圍外有 bug

💡 OCA 註:REW 作者 John 在開發新平均演算法,但還沒 release。RMS 目前夠用。


Step 6 — 載入 Harman Target Curve

6.1 為何是 Harman Curve

  • Harman/Kardon 多年技術研究歸納出來的「人耳感知補償曲線
  • 跟你的房間/喜好無關,純粹補償人耳對不同頻段的非線性感知
  • 人類只有在 83 dB SPL 時對所有頻率感知相同,其他音量會偏差
  • 你只需要這一條曲線

6.2 載入步驟

  1. Preferences → House Curve(注意:選 House Curve 但內容是 Harman 通用曲線)
  2. 上傳 Harman Target Curve 檔案(OCA 評論區有連結)

6.3 曲線形狀

  • 200 Hz 以下:低頻往上抬(boost bass)
  • 高頻:緩慢往下降(roll-off treble)
  • 中段大致平坦

⚠️ 重點:這曲線不是「房間/口味偏好」,是補償人耳。如果你用平時音量量測 → 這條 curve 對你就會正確


Step 7 — Target Settings + 產生 Target Shape

7.1 Target Settings

  1. EQ 頁籤
  2. Speaker type:選 Full range speaker
  3. Low frequency cutoff:填你喇叭的低頻滾降點(OCA 範例:35 Hz
    • 不用很精確,大概值即可
  4. Slope:自動填(OCA 範例:24 dB/oct
  5. Target level:點 Calculate from response(REW 算出,OCA 範例:72.3 dB)

⚠️ 不能手動改 target level — REW 會自動算,目的只是找出「需要反轉的曲線形狀」。

7.2 產生 Target shape measurement

  1. Generate measurement from target shape
  2. 這就是 EQ 頁籤要做的唯一一件事
  3. 你的 measurements 清單會多一條 Target LR

Step 8 — 反轉:核心步驟

8.1 原理

要把 L speaker 響應「反轉成符合 Target curve」:

$$ L_{inverted}(f) = \frac{Target(f)}{L(f)} $$

但因為 FFT 計算限制,要分兩步

  1. 先算 L / Target
  2. 再取倒數 1 / (L/Target)

8.2 操作:左聲道

Step 8.2.1 算 L / Target

  1. Controls → Trace Arithmetic
  2. A = L speaker measurement
  3. B = Target LR
  4. Action = A / B
  5. Regularization = 0(不做任何正則化)
  6. Generate → 產生一條 A/B

Step 8.2.2 取倒數

  1. Trace Arithmetic 再開
  2. A = 剛才產生的 A/B
  3. Action = 1 / A(B 不重要)
  4. Regularization = 8%
    • 8% ≈ 每個頻率點最大 5 dB 校正
    • 你可調,但 8% 經驗值平衡修正力與穩定性
  5. Target level = 3.6(這欄 OCA 沒詳述,照預設)
  6. Exclude notches = ✓(避免極端 notch 處過修)
  7. Generate → 產生倒數
  8. 刪掉中間 A/B
  9. 把倒數命名為 L_inverted

8.3 對 R 做一次

重複 Step 8.2,產生 R_inverted

8.4 檢查反轉是否正確

  • 0 dB 線在中間
  • L 原本 peak 的地方 → L_inverted 對應的位置應該是 dip
  • L 原本 dip 的地方 → L_inverted 對應的位置應該是 peak
  • 形狀互補

Step 9 — 轉成 Minimum Phase(防 ringing)

9.1 為什麼要做這步

反轉後的 L_inverted/R_inverted 不是 minimum phase。 直接拿去 convolve 喇叭會:

  • 產生大量 ringing(鈴聲尾巴)
  • 頻響跟預期天差地遠

9.2 解決:取 minimum phase 版本

  1. 選 L_inverted
  2. Measurement Actions → Minimum Phase Version
  3. Replicate data outside range:✓ 勾選
    • 因為要對 0–24,000 Hz 全範圍做計算
    • REW 預設範圍剛好是 0–24 kHz
    • 範圍外要外推資料避免 zero-padding 導致 FFT 失真
  4. Make minimum phase copy

9.3 對 R 做一次

得到 L_inverted_MPR_inverted_MP —— 這就是要 export 的最終 filter

9.4 驗證

  • 頻響(amplitude):跟原 L_inverted 幾乎一樣
  • 相位(phase):原版到處亂跳;minimum phase 版本應接近 0°

💡 OCA:「Look at the phase — it's around zero everywhere」← minimum phase 的招牌特徵


Step 10 — Export 成 Convolution Wave File

10.1 操作

  1. 選 L_inverted_MP 和 R_inverted_MP
  2. Export → Filters as wavSave as convolution filter
  3. 勾選 Stereo 包成一個 wav(也可分 mono)
  4. 格式建議:48 kHz(44.1 kHz 也輸出一份備用)

10.2 為何 48 kHz 為主

  • REW 內部 48 kHz 運算
  • 若你 DSP 引擎要 96k / 192k → 讓 Roon 等引擎自己 upsample(state-of-the-art 演算法)
  • REW upsample 也不差但不及 Roon

10.3 產出檔案命名建議

  • correction_LR_48k.wav
  • correction_LR_44k.wav

Step 11 — 載入 DSP 引擎

11.1 各家引擎做法

DSP 引擎 載入方式
Roon ZIP 兩 wav 檔 → Roon Convolver 指向 zip
EqualizerAPO 直接 load wav
JRiver 配 config 文字檔

11.2 別忘了時間+音量 offset

不論用哪個 DSP,時間 delay 與 SPL gain 是另外的設定區

  • Roon:在 Audio 設定的 Speaker Setup
  • EqualizerAPO:另開一條 delay/gain
  • JRiver:有獨立 mixer

把 Step 3 的 time offset 與 Step 4 的 SPL offset 填進去。


🔍 驗收:模擬看修正後長什麼樣

註:以下是模擬用、不是必要步驟

算修正後的 L_corrected

  1. Trace Arithmetic
  2. A = 原 L
  3. B = L_inverted_MP
  4. Action = A × B(vector multiply)
  5. Generate → 得到 L_corrected

對 R 做一次 → R_corrected

看結果

  • L_corrected:peak 全被磨平、貼近 target curve
  • R_corrected:同上
  • RMS 平均(LR_corrected):跟 target curve 高度吻合

驗收 4 個面向

面向 預期改善
SPL frequency response Peak 全消,貼合 target
Step response Clarity 明顯提升、ringing 減少
Group delay 低頻段接近 0
Phase response 整段振盪被平滑(但仍保留 minimum phase 應有的形狀)

⚠️ 後續:相位精修(選做)

OCA 推薦的下一步工具:rePhase(免費)

  • 可以進一步修正相位響應
  • 本影片不展開(內容夠長了)
  • 詳細教學另有專片 + 文字 guide(評論區連結)

📊 跟其他 DRC 方案的比較

項目 Dirac Live Audyssey 本 OCA 反轉法
工具 商用 (~$500+) AVR 內建 免費(REW)
修正方式 EQ filter EQ filter 直接反轉
Window cycles 7 9 35(保留細節)
平滑
完成時間 30 min 30 min ~30 min
學習曲線 平緩 平緩 中等
修正力 高(5 dB 精修)

❓ 常見問題 / 陷阱

Q1:Frequency-Dependent Window 35 cycles 太多怎麼辦?

A:35 是 REW 上限。如果你想跟 Dirac 一致用 7 cycles,可以改但會丟細節。本方法的精髓就是不平滑 → 用 35。

Q2:8% regularization 不夠/太多?

A:8% ≈ 每頻率點最大 5 dB 校正。如果你 peak 大於 5 dB 沒被修到 → 提高(但 ≥ 15% 開始 destabilize)。預設 8% 是甜蜜點。

Q3:minimum phase 後 frequency 變了?

A:應該幾乎一樣(差 < 0.5 dB)。如果差很多,檢查 replicate data outside range 有沒有勾。

Q4:convolution 之後低頻反而變差?

A:可能 target level 算錯。重做 Step 7 點 Calculate from response

Q5:左右聲道個別處理還是合併處理?

A:本方法個別處理(產 L_inverted + R_inverted)。如果合併會丟失 L/R 不對稱資訊。

Q6:可以用 EQ filter + convolution 混合嗎?

A:可以但沒必要。convolution 已經涵蓋 EQ 能做的所有事,更精準。

Q7:我音量平時很小聲(< 60 dB),這方法還適用?

A:適用,但請用你平時音量量測。Harman target 只在你習慣音量正確。

Q8:可以 ZIP 多份不同房間 profile 切換?

A:Roon 可以多 zip 切換;EqualizerAPO 可以多 config 切換。便於「日間 / 夜間音量」分別最佳化。


🎯 OCA 的核心心法

Even the highest end gear with speakers placed perfectly, you'll have a minimum of 20 dB difference between its peaks and dips in the audible frequency range due to room modes, reflections, asymmetry and what have you.

不管你的器材多高階、擺位多完美,房間就是會造成至少 20 dB 的頻響不平整。Digital correction 不是奢侈品,是讓你聽到「製作端意圖」的必要工具。

This is technically the most accurate way to correct for dips and peaks in a speaker's room response.

反轉法是技術上最準的 dip/peak 修正方式 — 因為它是逐頻率點精準抵消,而非有限個 EQ filter 的擬合近似。


📚 延伸資源

  • OCA 詳細 guide(含理論、測量方法、深度解釋):評論區連結
  • Harman Target Curve 下載:評論區連結
  • REW 官網https://www.roomeqwizard.com
  • rePhase(相位精修):免費工具,另有 OCA 專片教學

本教學由助理依逐字稿(28 分鐘 / 3,648 英文字)翻譯整理為繁中結構化教學。產出日期:2026-06-07。