Raspberry Pi で音場補正を試す 後編:測定と補正結果

5 min read読了の目安(約4500字

前編(概要と準備):https://zenn.dev/kymok/articles/909df17dd68175

5. 測定の準備

補正用ソフトのダウンロードとインストール

執筆時点で最新の macOS に対応しているのは AV Nirvana からダウンロードできる 5.20 beta です.インストーラー実行中は Magnet や Karabiner-Elements などを閉じる必要があります.

マイクの設置

そうこうしている間にマイクが届いているはずなので,開封して設置しましょう.マイクは天井を向けて設置するとよいでしょう[1]. Mac 本体とは USB ケーブルで接続します.本家から買ったものは 2021 年 1 月以降は USB Type-C になっているはずなので Mac の電源ケーブルが流用できます.

マイクは天井を向けて設置する

6. 測定の開始

REWの起動

マイクを接続して REW を起動すると自動でマイクが検出されます.

設定と測定

画面左上の Measure ボタンを押すと測定画面が開きます.

大きな音が出るので,ボリュームが最小になっていることを確認してください.

設定は以下のように行います.

  1. マイクのキャリブレーションファイルを読み込みます. UMIK-1 を使用している場合は XXXXXXX_90deg のほうを使います.
  2. レイテンシの補正は Use acoustic timing reference を使います.
  3. 今回はとりあえず左右のスピーカーを同時に測ることにします.もし,左右のスピーカーの設置位置があまりに偏っている場合は左右を別々に測りましょう.
  4. Check Levels をクリックするとスピーカーから音が出ます.あまりにレイテンシが大きい場合は音量の測定前に測定が終了してしまうのでレベルが低すぎると表示されますが,左に表示されるグラフで 30dB 程度の段差ができていればOKです.
  5. Start を押すと測定を開始します.測定は何度でもやり直せるので,気軽に押しましょう.測定結果は位置に大きく影響されるので,なるべく正確に座る位置にマイクを置くようにしてください.
  6. 余裕があれば,何度か測定して値にブレがないことを確認しましょう.

7. 測定データのチェック

測定が終了すると,図のようなグラフが表示されます.横軸が周波数(音の高さ),縦軸が音圧レベル(音の大きさ)です. 100 Hz あたりに 15dB くらいの凹みが見てとれます.これは 70 Hz の音と 100 Hz の音が 15dB くらい異なる大きさで再生されていることを示します.この山の凹凸を最低でも 400 Hz くらいまでならすことが目標です.

8. 補正

補正画面

EQ アイコンをクリックすると補正画面が開きます.

補正画面は図のような構成になっています.

  1. 補正の設定(イコライザ)の一覧です.
  2. 現在の特性,補正結果のシミュレーションなどが表示される画面です.
  3. 自動補正の設定です.

自動補正の実行

Equalizer の設定

  • Generic に設定します.

Target Settings の設定

  • Full range speaker にします.
  • Calculate target level from response をクリックすると,最適な補正のターゲットレベルが計算されます.計算された値を特に直す必要はないでしょう.

Filter Tasks の設定と補正の実行

  • Match Range を 20-3,000 Hz に設定します.高音側にはあまり問題がなさそうなので,このように設定しています.
  • Match response to target をクリックすると計算を開始します.
  • 計算が終わると,補正結果が表示されます. EQ Filters をクリックするとイコライザの詳細が見られます.個別のフィルタは特にいじる必要はありません.

EQ Filters をクリックしたウインドウの上にある Headroom Reqd. の値をメモしておきましょう.ここでは 6.1dB at 809Hz と書いてあります.

9. 補正結果の書き出しと Raspberry Pi での読み込み

補正結果の書き出し

  • FileExportExport Impulse Response as Wav を選択します.
  • 左右別に測定した場合は,左右チャンネルに別々の補正結果を書き込むことができます.

補正結果の読み込み

補正結果を ssh で送るとき,音が途切れることがあります.スピーカーの音量は絞っておきましょう.

できた wav ファイルを Raspberry Pi に ssh などで送ります.前回同様に,以下のコマンドで wav ファイルを読み込みます.

dbus-send --print-reply --system --dest=org.gnome.ShairportSync /org/gnome/ShairportSync org.freedesktop.DBus.Properties.Set string:org.gnome.ShairportSync string:ConvolutionImpulseResponseFile variant:string:"/home/USERNAME/impulse_responses/NEW_IR_RESPONSE_44.wav"

補正結果がよさそうなら,設定ファイルを編集して起動時にこのインパルス応答が読み込まれるようにします./etc/shairport-sync.conf の該当するセクションに以下の内容を書き込みます. convolution_gain の値がさきほどの Headroom Reqd. と比べて余裕があることを確認しましょう.さきほどの例では 6.1dB 必要なところ,10dB 確保されているので OK です.

dsp =
{
  convolution = "yes";
  convolution_ir_file = "/home/USERNAME/impulse_responses/NEW_IR_RESPONSE_44.wav";
  convolution_gain = -10.0;
  convolution_max_length = 44100;
}

10. 補正結果の確認

測ってみる

補正結果を書き込んだら Step 6 と同じように測定してみると,低音域にあった凹凸が大幅に減ったことがわかります.聴いてみても低音のブーミーな感じがやや軽減されたことがわかります.

位置を30cmほど後ろにずらして測定してみたものが以下です.位置がずれると,測定結果が大幅に悪化しているのがわかります.

CPU使用率を確認する

これは音楽を再生しながら top コマンドで確認できます.インパルス応答のサンプル数をデフォルトの 44100 から 88200 にしたら CPU 使用率が 43% になりました.

まとめ

本稿では DAC に接続された Raspberry Pi と測定用マイクを使い,部屋の音場を補正して良い音を聴く方法について述べました.予算もそこまでかからないので,スピーカーをお持ちの方はぜひ試してみてください.

脚注
  1. 水平面内の特性を均一にするためです ↩︎