mpvメディアプレーヤで普通のヘッドホンをサラウンドヘッドホンに変身させる【立体音響】

ヘッドフォン
mpvメディアプレーヤでいつも使っているヘッドホンを進化させましょう。
mpvを使えば普通のステレオヘッドホンがサラウンドヘッドホンに変身します。


mpvメディアプレーヤは映像や音声に特殊な効果をかけるフィルタを簡単に使う事ができます。libavfilterというフィルターライブラリを使えます。FFmpegで使っているフィルタです。以前の記事では音声にラウドネス調整をかけてメディアファイルごとの音量のばらつきを無くして聴きやすくしました。
Windowsユーザーの方はmpv.netが使いやすいでしょう。

今回はこのフィルタを使ってヘッドホンを進化させてみましょう。
mpv(mpv.net)のフィルタ設定はmpv.confファイルとinput.confファイルを編集して行います。mpv(mpv.net)の初期設定を上の関連記事を参考に行ってください。

ステレオヘッドホンをサラウンドヘッドホンに変える

普通のステレオヘッドホンをサラウンドヘッドホンに変えてみましょう。stereowidenとsofalizerを紹介します。

stereowidenフィルタ

よくある疑似サラウンド効果を付けてくれます。位相を変えた左右の音をミックスしています。
This filter enhance the stereo effect by suppressing signal common to both channels and by delaying the signal of left into right and vice versa, thereby widening the stereo effect.
mpv.confファイルに次の文を追加します。
af = "@widen:lavfi=[stereowide=delay=20:feedback=0.3:crossfeed=0.3:drymix=0.8]"
前述の関連記事のラウドネスを使っている場合はラウドネスの後にカンマ","で区切って追加します。フィルタをかける順番にもなります。ラウドネスの前より後が良いでしょう。
af = "@loudnorm:lavfi=[loudnorm=I=-16:TP=-1.5:LRA=11],@widen:lavfi=[stereowide=delay=20:feedback=0.3:crossfeed=0.3:drymix=0.8]"
パラメータが何個かあります。数値を変えて試してみると良いでしょう。大抵の場合デフォルトのままが良いですけど。

再生中にオンオフを切り替えられるようにしましょう。これができないと効果もわかりにくいです。
input.confファイルに次の文を追加します。
alt+1     af toggle "@widen"
altキーを押しながらキーボード上段の"1"を押すとオンオフが切り替わります。

SOFAlizerフィルタ

頭部のモデルを使い音が耳へ入るまでの伝達関数を使って仮想スピーカーを作ります。
本格的なバーチャルサラウンドです。5.1ch音声などに良いでしょう。
SOFAlizer uses head-related transfer functions (HRTFs) to create virtual loudspeakers around the user for binaural listening via headphones (audio formats up to 9 channels supported). 
SOFAlizerを使うには伝達関数のSOFAファイルをダウンロードしておく必要があります。SOFAファイルは一つで良いのですがいろいろな頭部モデルを使った沢山のSOFAファイルがあります。頭の形は人それぞれなので自分の頭の形に合ったSOFAファイルを見つけるとより効果的です。

上記のリンク先にSOFAファイルのリンクがありますが、SOFAファイルの形式が変わったためリンク先のファイルは使えなくなったそうです。
ghostwalky
Thanks a lot, that indeed seemed to be the issue. You save me a lot of headaches today. With the ClubFritz files from the database_sofa_0.6 instead of the current ones I was using, everything is working fine:
上のdatabase_sofa_0.6を開き、どれかを使います。特定のヘッドフォンのSOFAファイルもあるようですね。ここではclubfritzディレクトリをクリックし、ClubFritz6.sofaファイルをダウンロードします。
ダウンロードしたファイルはmpv.confと同じフォルダに置いておきます。

mpv.confファイルに次の文を追加します。
af = "@sofa:lavfi=[sofalizer=sofa=\'C\:\\Users\\UserFolder\\Documents\\mpv.net-portable-x64\\portable_config\\ClubFritz6.sofa\']"
SOFAファイルの指定はフルパスです。ファイルのパスを修正してください。シングルコーテーションはエスケープするので \' となります。Windowsのパスの場合はコロン : もエスケープして \: とします。"\"もエスケープしなくてはなりませんので"\\"となります。
(動いたのを確認して記事を書いたのですが、ファイルの指定ができたりできなかったりして動かない・・・エスケープわかりにくい)

stereowidenと同じようにラウドネスとも指定できます。このフィルタはラウドネスの前が良いでしょう。

再生中にオンオフを切り替えられるようinput.confファイルに次の文を追加します。
alt+2     af toggle "@sofa"
altキーを押しながらキーボード上段の"2"を押すとオンオフが切り替わります。

サラウンドヘッドホンでステレオをサラウンド化する

ここではサラウンドヘッドフォンでステレオ音声の音場を広げてみましょう。surroundフィルタを紹介します。

surroundフィルタ

ステレオ音声を多チャンネル化するフィルタです。ヘッドホンだけではなくリアルなサラウンドオーディオでも使えます。
Apply audio surround upmix filter.
This filter allows to produce multichannel output from audio stream.
このフィルタの出力はステレオ入力でも多チャンネルになります。ステレオヘッドホンでは効果ありませんがSOFAlizerの前に挿れて遊ぶのもありです。

mpv.confファイルに次の文を追加します。
af = "@surround:lavfi=[surround=chl_out=7.1:angle=270]"
chl_outで出力スピーカの構成を指定します。5.1とか7.1を指定します。angleは音の広げ具合のようです。デフォルトは90です。設定値の意味はわかりませんが5.1chなら180、7.1chなら270に設定するとグルグルしそうです。
各方向のスピーカの音量を個別に指定する事もできます。スーパーウーハーへ割り当てる周波数帯の指定もできます。
ラウドネスフィルタと一緒に使う場合はラウドネスの前に挿れると良いでしょう。

再生中にオンオフを切り替えられるようinput.confファイルに次の文を追加します。
alt+3     af toggle "@surround"
FPSをよくするので以前からバーチャルサラウンド環境をいろいろいじっています。私のヘッドホンが最近壊れたのでヘッドホンを買い替えました。購入したのはLogicoolのG633sです。
私が買ったのは一月ほど前でしたが今見たら値上がりにビックリ! テレワークでヘッドセットが無くなっていましたからね。
このヘッドホンはDTS HEADPHONE:X 2.0というバーチャルサラウンド機能があります。ステレオヘッドホンですが7.1chとして動きます。このヘッドホン用のプログラムG-Hubにはステレオをサラウンド化するDTSスーパーステレオモードというのがあります。しかしこれは悪い評価しか見かけませんし、私も使う気になりません。

多チャンネル音声のビデオや音楽などそう多くありません。せっかくのバーチャルヘッドホンなのに普段のステレオ音楽を聴く時に寂しいです。何か方法はないか?
ここで紹介したsurroundフィルタがピッタリなのです。

フィルタが動いてるか確かめる

フィルタが動いているか確かめるにはmpvでstatisticsを表示します。mpvならshift+i、mpv.netならshift+tで表示されます。フィルタを使っていれば使っているフィルタが表示されます。

SOFAlizerフィルタではSOFAファイルの指定に四苦八苦するかもしれません。フィルタのエラーはコンソールに表示されます。mpv.netなら右クリック→Show→Show consoleで画面上に表示されます。
オーディオフィルタにエラーがあると音が出なくなるかもしれません。

af文は上書きされるため、複数のフィルタを使うには一つのaf文にカンマでフィルタを追加していきます。書いた順番にフィルタがかかります。stereowidenフィルタとラウドネスフィルタを同時に使う説明を参考にしてください。

mpvに前回の再生位置をおぼえておかせるsave-position-on-quitを指定しているとmpv.confの新しいフィルタ設定が反映されません。いつまでも古いフィルタを覚えています。バグっぽい?watch_laterフォルダの中身を削除すると良いでしょう。

まとめ

mpvプレーヤのフィルタを追加してヘッドホンにサラウンド効果を付けてみました。キーボードで効果のオンオフを切り替える事もできます。
ステレオヘッドホンでもバーチャルサラウンドの効果を体験できます。SOFAlizerフィルタはいろいろな頭部モデルのデータがあります。自分の頭の形にあったモデルファイルを見つけられればサラウンド効果も上がるでしょう。
どのファイルが良いのか?正解はあなたの耳にしかわかりません。同じファイルでも人によって違って聞こえるのです。

ロジクールのゲーミングヘッドセットではG-HubのDTSスーパーステレオモードを使わなくともsurroundフィルタを使ってステレオ音声の拡張を楽しむことができます。

類似のフィルタは他に
headphoneフィルタ、bs2bフィルタ、crossfeedフィルタ、earwaxフィルタ
があります。SOFAlizerより簡単に使えるので試してみてはどうでしょうか。

コメント

最近のコメント

Threaded Recent Comments will be here.