記事を書いた人(VRChatプレイ時間10,000時間弱)
※当記事は眠くて仕方がないALOが適当言ってるだけの記事になります。 なんの参考にもしないでください。書き終わったら寝るんだ… まえがき 題目の通りでVRChatでバイノーラルマイクを使った検証記事が1つも上がってなかったので書きました。 いつか誰かが書くだろうと思つつ早2年経ちましたのでやはり思い立ったら行動すべしです。 既に試している方っぽいツイッター(ノラネコP様)はありましたので転載しておきます。 のらきゃっとの作者様ですね。 もう僕が検証する理由はどこにもない気がしますが、他に記事の題材が思いつかないので、進めていきます。 結論から言うとノラネコP様の検証は半分正しくて半分間違ってました。 ただノラネコP様の前提証明のおかげで完成まで持っていけたので感謝です。 [広告]CeVIO AIフィーちゃんリリース中!!リリースセールも実施中です。
結論 文字数稼ぐために蛇足が多いので先に結論を書きますと「通常方法では、VRCでバイノーラルマイクは機能しない」です。(※ここまでの検証に5分) ここまで検証できた段階で、じゃあ無理やり使うためにはどうしたら良いかっていう検証に置き変わりまして、すぐに方法が思いつかなかったので息抜きとしてここまで記事を書き進めることにしました。 P.S:通常では機能しないですが、無理やり機能させることはできます。 機材不足で仮説に過ぎないですが、方法は記事後半にて。(※ここまでの検証に7時間)
準備 これを探すのが面倒で記事を書いてなかったのですが頑張って探しました。 検証を進めていてこの子は使えないことに気づいたのでボツになった可哀想な子です。 次に適当なバイノーラルマイクを用意します。1台あれば良いです。 VRしながら使うマイクなので壊す前提で安価なものをお勧めします。 当記事で使用しているのが一番安いバイノーラルマイクになりますがquest2より少し高めくらいです。 商品ページ:DuoPOP 比較用に適当なコンデンサーマイクを用意します。VRしながら使うマイクなので以下略 商品ページ:NT-3 更新プログラムを待ちます。 適当な仮想ミキサーとオーディオI/Oを用意します。2In/2Out以上あればなんでも良いです。 商品ページ:UR-824 適当な検証用ワールドを用意します。昨今は情勢が色々と怖いのでデフォルトワールドで検証します。 いつの間にかキティーちゃんが公式プロモしてますね。あとなんか暗いです。 ここまでで準備は終わりです。 本当はオーディオインターフェースがもう1台あると良いのですが、手元にないので諦めます。 VRChatが動作するPCも2台必要ですが、みなさんだったら持ってて当然だと思いますので割愛します。 検証1:ノラネコP様の検証を実証する-その1 >>『VRCのマイク入力は、R側は無視してL側だけをモノラル入力として受け取ってる バイノーラルマイクを抱えて右耳にちゅっちゅしても無駄である』 ※ノイズ音注意 まずは検証動画をご用意しました。 これは仮想チャンネルを使用してPCの内蔵音をVRCのマイクに出力した音になります。 動画前半がRで動画後半がLに全部振り切って再生しています。 この動画ではノラネコP様の検証の通りでLが無視されRのみがVRCで出力されていることが確認できます。 検証2:ノラネコP様の検証を実証する-その2 検証1は本来モノラル出力(1ch出力)しか対応していないVRCに無理やりステレオチャンネルを読み込ませた結果起きた不具合と思って良いと考えてます。 ではVRCが出力してくれるのはモノラル1Chのみと割り切ったとして、もう1度ノラネコP様の文章を確認します。 >>『VRCのマイク入力は、R側は無視してL側だけをモノラル入力として受け取ってる バイノーラルマイクを抱えて右耳にちゅっちゅしても無駄である』 ステレオマイクを使用した場合はRを無視してL側だけをモノラルとして受け取ってるは正しかったですが、果たして「右耳にちゅっちゅしても無駄である」これはどうでしょうか。 検証1ではステレオ入力を無理やり出力しようとした結果Rが虚空の彼方へ消えてしまいました。 では、ステレオ→モノラルへ変換するのではなくて、最初からLとRをそれぞれモノラルで出力してあげればどうでしょう。 まずはこの画像を見てください。 これは今回使用しているバイノーラルマイクの内部構造になります。 バイノーラルマイクの仕組みはざっくり言えば左と右にマイクが1つづつついているただの箱な訳で、 マイクを左右に2つ並べればバイノーラルマイクと言って差し支えないです。 正確には人間の耳の形を再現することで鼓膜の反射を再現して実際に近くで聞こえてる風になるとか、周波数特性とか骨伝導とか頭部運動とか色々言われるような気もするけど今回の検証には関係ないです。 中身はイヤホン型のマイクが1つづつ付いているだけなので、モノラル2本に分けることもできます。 ということでコンバーターを使用してステレオ1本だったケーブルをモノラル2本に戻してあげます。 続いてVRCの聞こえる位置の構造ですが、プレイヤー対プレイヤー間の距離と方向差によって決まっています。 プレイヤーが右に立てば右から、左に立てば左から聞こえてくるのはご存知の通りです。 元よりモノラル入力を想定した設計の上に、ステレオ入力をしようとするとRが自動的に削除されるので結果として違和感なく動作します。 L(レフト)とR(ライト)の概念というのはステレオ特有のものでモノラルには存在しないです。(強いていうならC(センター)で固定になります) 一般的には「赤がR」で「白がL」が通説になりますのでそれに沿って進めていきます。 まずは赤を挿した状態で喋ってみます。と、左耳マイクに話しかけても音音を拾わないのに対して右耳マイクでは拾います。 次に白を挿した状態で喋ってみます。と、右耳マイクに話しかけても音音を拾わないのに対して左耳マイクでは拾います。 この検証の通りで元がモノラルの場合であれば、LとRは関係なく認識してくれることができます。 (元よりモノラルにはLとRの概念がなく色もわかりやすくするためにつけてるだけに他ならないので当然と言えば当然ですが) さて、ここまでを一旦まとめましょう。 ・ステレオ入力しようとするとRが消えてLだけ出力される ・元がモノラルであれば、L用だろうがR用だろうがマイク出力はされる ・Unity的な何かでパンニングを使用してプレイヤー対プレイヤー間の位置の差に応じて聞こえてくる位置が変わる ここで一旦余談を挟みます。 実はバイノーラルマイクが使用できたら面白いと思われるプラットフォームは他にもあります。 皆さんもよく使われているであろうDiscordくんです。 VRChatよりはるかにユーザー数が多いこともあって、軽く調べただけでいくつかの記事がヒットしました。 どうやら要約すると、Discordくんもステレオマイクは非対応とのことで、BOTを使用することで擬似的な2Chを作り上げてバイノーラルマイクを使用するという方法が一般的な様です。 はい。ここまでで勘の良い読者様ならば気付かれていると思いますが、VRChatでBOTを作るなんてのは訳ない話です。 もう1台PCとアカウントを用意して同じワールドにJoinすればそれで終わりです。 皆さんのフレンドにも時々いらっしゃることでしょう。僕はそこそこの頻度で見ます。怖いです。 オーディオインターフェースが1台しかないので実際の検証はできていませんが、まとめに入りましょう。 多分これで実証できると思う仮説を置いておくので誰か試してみてください。 0.今回はお砂糖さんと横になってなでなでし合いながらバイノーラルを使用する程で仮説します。 1.まずはPCを2台とVRChatアカウントを2アカウントとお砂糖相手を用意してそれぞれ同じワールドにJoinします。 2.片方の語り手アカウントは透明アバターになります。メインで使用する語り手アカウント(なでなでする方)は好きなメインアバターになります。 3.お砂糖さん(聞き手)と横になった状態で、左右対称の位置に透明アバターを移動させます。 4.前途で記載した方法で、それぞれのPCでモノラルマイクを入力します。この際にバイノーラルマイクは1台で足りますが、オーディオインターフェースは2台必要になります。 5.あとはバイノラールマイクを持つか、前に設置した状態で話しかけてあげると左右の位置関係なく立体的な声を聴き届けることができます。 また、透明アバターやオーディオインターフェース/PCが1台のみでも片耳からだけで良ければ機能させることができます。これも挿しこむピンを任意で選択すれば良いので右耳でも左耳でも選択可能ですし、挿し替えるだけでマイクの変更はできるので、ログインしたまま寝返りを打って右耳→左耳に届ける声を変えるなども簡単にできます。(※こちらは検証済みです)(※ここまで書き終わるのに計9時間と5,000字) それではバイノーラルVRCライフをお楽しみくださいませ。 私はこれから寝ます。 ALO (※以下無理やり機能させるために僕がじゃがりこを食しながら悩んだメモの書き残し) まずノラネコP様のツイートを見る限りVRCのシステム構造はRを無視してLだけをモノラル入力として受け取っている これが正しいかどうかを検証しよう >>『VRCのマイク入力は、R側は無視してL側だけをモノラル入力として受け取ってる バイノーラルマイクを抱えて右耳にちゅっちゅしても無駄である』 仮想ミキサーでLRを振り分けてみたところどちらでも機能はしたからLもRも認識はしている つまり右耳だろうが左耳だろうが少なくとも現バージョンでは問題なく機能する ・LとR両方の入力は機能している ・しかしVRCに出力される際にモノラルに統合された状態で出力される ・その後にUnity的な何かでパンニングを使用してプレイヤー対プレイヤー間の位置の差に応じて聞こえてくる位置が変わる ・モノラルっていうのはデジタルにおいてはパンニングを振ってない状態でLとRで音量差がプラスマイナス0の状態の音っていうのを指すんだけど(たぶん)、擬似的なバイノーラルを実装する際ってLとRと音量差とディレイやリバーヴを使用して前行きと奥行きと左右を演出する訳でして、これを元に作成するのが無難ではある気がする。 でもこれだとバイノーラルマイクを使用する必要がなくなるから最終手段として。 バイノーラルマイクの仕組みはざっくり言えば左と右にマイクが1つづつついているただの箱な訳で マイクを左右に2つ並べればバイノーラルマイクと言って差し支えない 正確には人間の耳の形を再現することで鼓膜の反射を再現して実際に近くで聞こえてる風になるとか色々言われるような気もするけど今回の検証には関係ない VRCではLとRを両方入力した上で→モノラルに統合して出力していると仮定した場合 LとRで位相を逆転させた音を流したらどうなるだろうか。 理論上は無音になるはず 検証するためにはVR内でのプレイヤーの位置を同座標軸の同方向にする必要があったけど リスポーン地点がそれであることに気づいた ここまで実証できた上ですべきことは まずこうなるとLもRも関係なくなる システム的な問題でLとRを一緒にされちゃう訳だからどうしようもない いや本当か…? もしここまでの仮説が全て正しければ Lを完全に0にした状態でRに音を全振りしてあげて(ここまでは仮想ミキサーで) プレイヤー位置を正確に固定した状態で バイノーラルマイクを使用してあげれば 寝るとき片耳からバイノーラル効果を得ることは可能では…? つまり バイノーラルマイクのパンを右に全振りして 右から音を流す プレイヤーは右側に立って声を発する 理論上はこれでいけるはず 行けましたね。
ALO Twitter@ALOHAGOTO
※当記事は眠くて仕方がないALOが適当言ってるだけの記事になります。 なんの参考にもしないでください。書き終わったら寝るんだ… まえがき 題目の通りでVRChatでバイノーラルマイクを使った検証記事が1つも上がってなかったので書きました。 いつか誰かが書くだろうと思つつ早2年経ちましたのでやはり思い立ったら行動すべしです。 既に試している方っぽいツイッター(ノラネコP様)はありましたので転載しておきます。 のらきゃっとの作者様ですね。 もう僕が検証する理由はどこにもない気がしますが、他に記事の題材が思いつかないので、進めていきます。 結論から言うとノラネコP様の検証は半分正しくて半分間違ってました。 ただノラネコP様の前提証明のおかげで完成まで持っていけたので感謝です。 [広告]CeVIO AIフィーちゃんリリース中!!リリースセールも実施中です。
結論 文字数稼ぐために蛇足が多いので先に結論を書きますと「通常方法では、VRCでバイノーラルマイクは機能しない」です。(※ここまでの検証に5分) ここまで検証できた段階で、じゃあ無理やり使うためにはどうしたら良いかっていう検証に置き変わりまして、すぐに方法が思いつかなかったので息抜きとしてここまで記事を書き進めることにしました。 P.S:通常では機能しないですが、無理やり機能させることはできます。 機材不足で仮説に過ぎないですが、方法は記事後半にて。(※ここまでの検証に7時間)
準備 これを探すのが面倒で記事を書いてなかったのですが頑張って探しました。 検証を進めていてこの子は使えないことに気づいたのでボツになった可哀想な子です。 次に適当なバイノーラルマイクを用意します。1台あれば良いです。 VRしながら使うマイクなので壊す前提で安価なものをお勧めします。 当記事で使用しているのが一番安いバイノーラルマイクになりますがquest2より少し高めくらいです。 商品ページ:DuoPOP 比較用に適当なコンデンサーマイクを用意します。VRしながら使うマイクなので以下略 商品ページ:NT-3 更新プログラムを待ちます。 適当な仮想ミキサーとオーディオI/Oを用意します。2In/2Out以上あればなんでも良いです。 商品ページ:UR-824 適当な検証用ワールドを用意します。昨今は情勢が色々と怖いのでデフォルトワールドで検証します。 いつの間にかキティーちゃんが公式プロモしてますね。あとなんか暗いです。 ここまでで準備は終わりです。 本当はオーディオインターフェースがもう1台あると良いのですが、手元にないので諦めます。 VRChatが動作するPCも2台必要ですが、みなさんだったら持ってて当然だと思いますので割愛します。 検証1:ノラネコP様の検証を実証する-その1 >>『VRCのマイク入力は、R側は無視してL側だけをモノラル入力として受け取ってる バイノーラルマイクを抱えて右耳にちゅっちゅしても無駄である』 ※ノイズ音注意 まずは検証動画をご用意しました。 これは仮想チャンネルを使用してPCの内蔵音をVRCのマイクに出力した音になります。 動画前半がRで動画後半がLに全部振り切って再生しています。 この動画ではノラネコP様の検証の通りでLが無視されRのみがVRCで出力されていることが確認できます。 検証2:ノラネコP様の検証を実証する-その2 検証1は本来モノラル出力(1ch出力)しか対応していないVRCに無理やりステレオチャンネルを読み込ませた結果起きた不具合と思って良いと考えてます。 ではVRCが出力してくれるのはモノラル1Chのみと割り切ったとして、もう1度ノラネコP様の文章を確認します。 >>『VRCのマイク入力は、R側は無視してL側だけをモノラル入力として受け取ってる バイノーラルマイクを抱えて右耳にちゅっちゅしても無駄である』 ステレオマイクを使用した場合はRを無視してL側だけをモノラルとして受け取ってるは正しかったですが、果たして「右耳にちゅっちゅしても無駄である」これはどうでしょうか。 検証1ではステレオ入力を無理やり出力しようとした結果Rが虚空の彼方へ消えてしまいました。 では、ステレオ→モノラルへ変換するのではなくて、最初からLとRをそれぞれモノラルで出力してあげればどうでしょう。 まずはこの画像を見てください。 これは今回使用しているバイノーラルマイクの内部構造になります。 バイノーラルマイクの仕組みはざっくり言えば左と右にマイクが1つづつついているただの箱な訳で、 マイクを左右に2つ並べればバイノーラルマイクと言って差し支えないです。 正確には人間の耳の形を再現することで鼓膜の反射を再現して実際に近くで聞こえてる風になるとか、周波数特性とか骨伝導とか頭部運動とか色々言われるような気もするけど今回の検証には関係ないです。 中身はイヤホン型のマイクが1つづつ付いているだけなので、モノラル2本に分けることもできます。 ということでコンバーターを使用してステレオ1本だったケーブルをモノラル2本に戻してあげます。 続いてVRCの聞こえる位置の構造ですが、プレイヤー対プレイヤー間の距離と方向差によって決まっています。 プレイヤーが右に立てば右から、左に立てば左から聞こえてくるのはご存知の通りです。 元よりモノラル入力を想定した設計の上に、ステレオ入力をしようとするとRが自動的に削除されるので結果として違和感なく動作します。 L(レフト)とR(ライト)の概念というのはステレオ特有のものでモノラルには存在しないです。(強いていうならC(センター)で固定になります) 一般的には「赤がR」で「白がL」が通説になりますのでそれに沿って進めていきます。 まずは赤を挿した状態で喋ってみます。と、左耳マイクに話しかけても音音を拾わないのに対して右耳マイクでは拾います。 次に白を挿した状態で喋ってみます。と、右耳マイクに話しかけても音音を拾わないのに対して左耳マイクでは拾います。 この検証の通りで元がモノラルの場合であれば、LとRは関係なく認識してくれることができます。 (元よりモノラルにはLとRの概念がなく色もわかりやすくするためにつけてるだけに他ならないので当然と言えば当然ですが) さて、ここまでを一旦まとめましょう。 ・ステレオ入力しようとするとRが消えてLだけ出力される ・元がモノラルであれば、L用だろうがR用だろうがマイク出力はされる ・Unity的な何かでパンニングを使用してプレイヤー対プレイヤー間の位置の差に応じて聞こえてくる位置が変わる ここで一旦余談を挟みます。 実はバイノーラルマイクが使用できたら面白いと思われるプラットフォームは他にもあります。 皆さんもよく使われているであろうDiscordくんです。 VRChatよりはるかにユーザー数が多いこともあって、軽く調べただけでいくつかの記事がヒットしました。 どうやら要約すると、Discordくんもステレオマイクは非対応とのことで、BOTを使用することで擬似的な2Chを作り上げてバイノーラルマイクを使用するという方法が一般的な様です。 はい。ここまでで勘の良い読者様ならば気付かれていると思いますが、VRChatでBOTを作るなんてのは訳ない話です。 もう1台PCとアカウントを用意して同じワールドにJoinすればそれで終わりです。 皆さんのフレンドにも時々いらっしゃることでしょう。僕はそこそこの頻度で見ます。怖いです。 オーディオインターフェースが1台しかないので実際の検証はできていませんが、まとめに入りましょう。 多分これで実証できると思う仮説を置いておくので誰か試してみてください。 0.今回はお砂糖さんと横になってなでなでし合いながらバイノーラルを使用する程で仮説します。 1.まずはPCを2台とVRChatアカウントを2アカウントとお砂糖相手を用意してそれぞれ同じワールドにJoinします。 2.片方の語り手アカウントは透明アバターになります。メインで使用する語り手アカウント(なでなでする方)は好きなメインアバターになります。 3.お砂糖さん(聞き手)と横になった状態で、左右対称の位置に透明アバターを移動させます。 4.前途で記載した方法で、それぞれのPCでモノラルマイクを入力します。この際にバイノーラルマイクは1台で足りますが、オーディオインターフェースは2台必要になります。 5.あとはバイノラールマイクを持つか、前に設置した状態で話しかけてあげると左右の位置関係なく立体的な声を聴き届けることができます。 また、透明アバターやオーディオインターフェース/PCが1台のみでも片耳からだけで良ければ機能させることができます。これも挿しこむピンを任意で選択すれば良いので右耳でも左耳でも選択可能ですし、挿し替えるだけでマイクの変更はできるので、ログインしたまま寝返りを打って右耳→左耳に届ける声を変えるなども簡単にできます。(※こちらは検証済みです)(※ここまで書き終わるのに計9時間と5,000字) それではバイノーラルVRCライフをお楽しみくださいませ。 私はこれから寝ます。 ALO (※以下無理やり機能させるために僕がじゃがりこを食しながら悩んだメモの書き残し) まずノラネコP様のツイートを見る限りVRCのシステム構造はRを無視してLだけをモノラル入力として受け取っている これが正しいかどうかを検証しよう >>『VRCのマイク入力は、R側は無視してL側だけをモノラル入力として受け取ってる バイノーラルマイクを抱えて右耳にちゅっちゅしても無駄である』 仮想ミキサーでLRを振り分けてみたところどちらでも機能はしたからLもRも認識はしている つまり右耳だろうが左耳だろうが少なくとも現バージョンでは問題なく機能する ・LとR両方の入力は機能している ・しかしVRCに出力される際にモノラルに統合された状態で出力される ・その後にUnity的な何かでパンニングを使用してプレイヤー対プレイヤー間の位置の差に応じて聞こえてくる位置が変わる ・モノラルっていうのはデジタルにおいてはパンニングを振ってない状態でLとRで音量差がプラスマイナス0の状態の音っていうのを指すんだけど(たぶん)、擬似的なバイノーラルを実装する際ってLとRと音量差とディレイやリバーヴを使用して前行きと奥行きと左右を演出する訳でして、これを元に作成するのが無難ではある気がする。 でもこれだとバイノーラルマイクを使用する必要がなくなるから最終手段として。 バイノーラルマイクの仕組みはざっくり言えば左と右にマイクが1つづつついているただの箱な訳で マイクを左右に2つ並べればバイノーラルマイクと言って差し支えない 正確には人間の耳の形を再現することで鼓膜の反射を再現して実際に近くで聞こえてる風になるとか色々言われるような気もするけど今回の検証には関係ない VRCではLとRを両方入力した上で→モノラルに統合して出力していると仮定した場合 LとRで位相を逆転させた音を流したらどうなるだろうか。 理論上は無音になるはず 検証するためにはVR内でのプレイヤーの位置を同座標軸の同方向にする必要があったけど リスポーン地点がそれであることに気づいた ここまで実証できた上ですべきことは まずこうなるとLもRも関係なくなる システム的な問題でLとRを一緒にされちゃう訳だからどうしようもない いや本当か…? もしここまでの仮説が全て正しければ Lを完全に0にした状態でRに音を全振りしてあげて(ここまでは仮想ミキサーで) プレイヤー位置を正確に固定した状態で バイノーラルマイクを使用してあげれば 寝るとき片耳からバイノーラル効果を得ることは可能では…? つまり バイノーラルマイクのパンを右に全振りして 右から音を流す プレイヤーは右側に立って声を発する 理論上はこれでいけるはず 行けましたね。