rePhaseを使ってスピーカーの位相補正をする方法のまとめ
この記事は何か?
「rePhase」というフリーソフトを使ってスピーカーの位相補正をする方法を調べたので、備忘録としてまとめたものです。なお筆者は音響の専門家でもなんでもないため、細かい所はよくわかりません。
スピーカーの位相補正をして何の得がある?
音が若干クリアに、綺麗になった気がします。
主に低域の位相遅れが改善されることで、低域のボゥンボゥンした余韻が改善され、低域が速くなり、タイトになります。
デメリットは?
レイテンシーが生じます(ただしレイテンシーの値は自由に調整可能)。
CPU負荷が(若干)かかります。
何をどうするの?
まず、マイクを使ってスピーカーの位相特性を計測します。ここではREWというフリーで使えるソフトを使用します。測定は複数回行って平均化します。
次に、測定した位相特性データを元にして、表題のrePhaseというフリーのソフトを用いて、FIRフィルターなるものを作成します。
最後に、作成したFIRフィルターをなんらかの方法で音声信号に「畳み込み」という方法を使って適用することで、位相を補正します。ここではequalizer APOというフリーソフトを用います(なおWindowsでしか使えません)。
具体的な方法
以下、ソフトのインストール方法など細かいことは書かないので検索してください。
1.REWにて位相特性を計測する。
まず、REWの「Preferences」→「Analysis」タブにて「Add frequency dependent window」を選択します。※このオプションは振幅を測定する場合は必要ないらしいです。
マイクのキャリブレーションデータがある場合は、「Preferences」の「Cal files」にてファイルを読み込んで適用します。
「Measure」を選択します。複数の計測結果のタイミングを揃えるため、「Timing:」の欄で「Use acoustic timing reference」を選択します。
左右のスピーカーをそれぞれ、マイクで複数回計測します。なぜ複数回測定するかというと、平均化することで変なデータを排除できたり、不必要なノイズを除去できたり、壁や天井からの初期反射の影響を除去できたりといったメリットがあるためです。
測定を終えたら、計測結果の平均化を行います。グラフの上の「All SPL」タグを選択し、対象とする測定結果をグラフ下のチェックボックスで選択した後、まず「Actions」→「Time align」を押してタイミングを揃えます。そして「Vector average」を押して、平均化されたデータを作成します。
スムージングツールを用いてグラフを滑らかにします。ここでは「Graph」→「Psychoacoustic」を選択することにします。
測定結果をエクスポートします。エクスポートしたい平均化された計測結果を左欄から選択した後、「File」→「Export」→「Export measurement as text」より出力できます。
2.rePhaseにてFIRフィルターを作成する。
REWにて出力した計測結果をrePhaseにてインポートします。「File」→「Import measurement…」より、先ほどREWにてエクスポートしたデータを選択します。
おそらくちゃんと表示されていないので表示幅を調整します。右下の「Ranges」タブを選択し、「Amplitude」を例えば0dB to 100dBに、「Phase」を-180°to720°くらいにすると全体がよくみえると思います。
次に、位相をフラットになるように手動で調整していきます。まず「Filters Linearization」タブにて、位相の傾きが変化している辺りの周波数を入力し、左の欄から適当な傾きを選択して、位相曲線が-180°から180°の範囲くらいに収まるように大ざっぱに調整していきます。
次に、微調整を行います。「Paragraphic Phase EQ」タブを選択し、まず「Range」を±180°に設定します。そして位相がフラットになるように調整します。うまく調整できないときは「Filters Linearization」タブに戻って傾きを調整します。
フラットな位相特性ができたら、この設定をFIRフィルターとして出力します。「Impulse Settings」欄にて、以下ように設定していきます。
taps:レイテンシーと周波数分解能に関係する重要な数字です。tapsを大きくすればするほど、周波数分解能が向上し、特に低域において適切なフィルタリングができるようになりますが、FIRフィルターのサイズが大きくなり、畳み込みに必要な処理時間が多くかかるため、レイテンシーが大きくなります。逆にtapsを小さくすればするほど、レイテンシーは小さくなりますが、周波数分解能は低下します。なので適切な値を設定する必要があります。なお、適切なtaps数はサンプリング周波数によって変わってきます。具体的には以下の式で周波数分解能が決まってきます。なお、筆者はサンプリング周波数44100HzでTap数4096に設定すると、レイテンシーがequalizer APOによると2.8msecという結果を得ています。
FFT length:taps数を入力すると、自動的に設定されます。
centering:とりあえずmiddleを選択します。
windowing:窓関数を選択します。hannで問題ないと思います。
optimization:最適化方法を選択します。よくわかりませんがmoderateが良いようです。
rate:サンプリング周波数を入力します。上で述べたようにサンプリング周波数によって適切なtap数が変わってくるので注意です。
format:64 bits IEEE mono (.wav)が良いようです。
filename:適当に出力ファイル名をつけてください。
directory:ファイルが出力されるフォルダーを選んでください。
上記を入力し、「generate」を押すと、FIRフィルターデータが出力されます。
3.equalizer APOにてFIRフィルターの畳み込みを行う。
rePhaseにて出力したFIRフィルターデータをequalizer APOにて適用していきます。
+ボタンを押し、「Advanced filters」から「Convolution (Convolution with impulse response)」を選択します。
先ほどrePhaseにて出力したFIRフィルターデータを選択します。
レイテンシーの情報が出てきますので、必要に応じてrePhaseに戻ってタップ数を調整してください。
おまけ
音場補正についてはこちらの記事もあわせてどうぞ。
スピーカーの音場補正プログラムを自作してみた:
https://note.com/waipa/n/ncecf0fcbd168
参考サイト
rePhase公式サイト:https://rephase.org/