手に耳の作り方

こんにちはくどりうです。この記事は、UT-virtual Advent Calendar 2018 12/7分の記事です。この記事ではわたしが今年作った「手に耳」という作品を作った時に考えたこと・勉強したことをまとめたものです。

作品紹介

「手に耳」とは、もしも手に耳がついてたら生活はどのように変わるのかを体験してもらう作品です。VRゴーグルとヘッドフォンを着用した体験者は、自分の手に耳がついているのに気がつきます。以下の画像は、HMDをつけた体験者が自分の手を見たときに見える手のモデルです。

そして用意されているラジオなどの音源に手を近づけると...音が聞こえる!頭をラジオに近づけても音は大きく聞こえない。しかし、手を近づけると音はより大きく聞こえる。手を机の下に隠すと音はくぐもって聞こえる。といったことを体験できます。 

この作品を作るにあたって、人間がいかにして音を知覚しているかについて調べました。その時の知見および作品に対する考察をまとめたいと思います。

用語の説明     


立体音響に関する用語は色々あり、紛らわしいものも多いです。私もどれがどれかあまりわかりませんでした。まずはそれらの意味を確認しましょう。

音像
音の再生において、方向と距離をもって音源の音を感じるときこれを音像といいます。

音像定位
音源の存在する方向や自分からの距離が定まることです。例えば、食堂で目を閉じて周囲の話し声を聞くと、何も見えなくても誰がどこにいるかは大体わかります。また、後ろから人が歩いてくれば、足音で誰かが後ろから近づいてくるということがわかります。それが定位ということです。

立体音響
音を録音再生する際に3次元的な音の方向や距離、拡がりなどを再生する方式のことです。

人間の音像定位の仕組み

人間が音像定位が可能なのは、耳が二つあるからです。ある音源から発せられた音は、二つの耳へ届きます。このとき左耳に音が届くタイミングと右耳に音が届くタイミングはわずかにずれます。それにより生じる時間差を両耳間時間差(Interaural Time Difference: ITD)と言います。また、空気中で音は減衰しますし頭という障害物が間にありますので、二つの耳への距離が違えば、届くときの音量も変わります。これを両耳間レベル差(Interaural Intensity Difference: IID)と言います。

これらITDとIIDは、周波数によって異なります。例えば低周波数・長波長の領域では、波長が頭の大きさに対して十分に長いため、音が簡単に頭を回り込みIIDはそれほど顕著に出ません。反対に、高周波数・短波長の領域ではIIDが顕著に出ます。

また、このITDとIIDだけを考慮した場合、一方の耳を頂点とした円錐状の部分はITDもIIDも変わらず、音像定位ができないことになってしまいます。しかし現実にはそこの音像定位もできているわけで、ITDとIIDだけでは何かの情報を落としてしまっているということになります。

以上二つのことを解決するのが頭部伝達関数(Head Related Transfer Function: HRTF)です。HRTFとは、角度と周波数の二つを変数としたときに、どれだけの大きさで音が聞こえるかということを表す関数です。人間の耳の形や頭、肩などの物体の影響まで考慮されています。実際のグラフはこちらなどを見てみてください。HRTFの測定は、ある角度においてある周波数のインパルス応答を被験者の両耳で測定して行います。反射の影響を抑えるために無響室の中で行います。また、HRTFは距離にも依存するので用途によっては距離に応じたHRTFを測定する必要があるかもしれません。

距離・角度・周波数全てを網羅したHRTFを計測すれば、そこには音量・時間差・位相など全ての情報が含まれています。それを用いれば任意の位置に音像を知覚させることができるでしょう。ただし、具体的にその中のどの情報を脳が音像定位に役立てているのかはまだ研究が必要な部分のようです。また、個人による差が大きいため本当にしっかりした音像定位をさせるためには一人一人オーダーメイドのHRTFが必要になってしまいます。

手に耳がある場合の音像定位について

人間の音像定位の手法に関しては上記で解説しました。しかしそれらの手法は頭部に耳があるという制約下でのもの。もし手に耳がついていたら、どのような音像定位の手がかりが使え、どのように音源の場所を特定できるでしょうか?

まず、両耳間時間差です。手を広げて両耳を遠ざけることで、より時間差を大きくすることができます。それによりより高い精度で方向がわかるでしょう。

次に、両耳間レベル差です。これも上記同様、二つの耳を遠ざけることでわかりやすくなるものと思われます。

また、手に耳がついているということはHRTFに相当するもの(Body Related Transfer Function : BRTFとでも呼びましょう)を自由に変化させることができます。頭部に耳がある普通の状況でも、耳に手を当てて音を聞きやすくするなどはできます。もし手にあれば、手を少し丸めて耳に指向性を持たせることも容易です。そのほかにも自由にBRTFを変化させられることの利点は多いのではないでしょうか。一方、HRTFだったら常に一定ですがBRTFは常に変化し続けます。自分の姿勢と耳の位置から計算し続ける必要があります。その負担は大きいものになるでしょう。というか不可能な気がします。

手に耳を作る時に考えたこと


ここからは上記を踏まえて、実際に作品を作ったときのことや考察を書いていきます。

まず、実装したことについてです。最終的に私が利用したのは、両耳間レベル差と距離による音の減衰の二つです。具体的な実装方法としては、右耳と音源の距離と左耳と音源の距離とを比較し、それによって左右の耳へ提示する音の大きさを変えるとともに、音源と耳の距離によって音が小さくなるようにしました。距離による減衰は、わかりやすくするために一定以上離れると急に音が小さくなるようにしました。また、遮蔽のことも少し考え、音源と耳の間に障害物があるときはローパスフィルターをかけ、くぐもった感じにしました。

これを踏まえて今後どうするか、聞こえ方自体に関しては二つの路線が考えられます。

第一にリアル路線です。実際の体験ではラジオや瓶など見てわかる音源から音を鳴らしていました。普通であればそのような状況では、ある程度雑な音でも視覚からの情報を頼りに脳が音像定位を補完してくれます。しかし今回は、日常生活とは全く異なる手に耳がついているという状況。そんな体験をしたことのある脳はこの世界にはおそらく存在しないでしょう。補完も当然効きません。したがってより正確に時間差やレベル差、位相の違いをシミュレーションする必要があります。今回の実装ではそれに必要なレベルには到達できませんでした。

第二にデフォルメ路線です。いくら手に耳がついていたときのBRTFを忠実にシミュレーションしたとしても、誰も体験したことがないことです。それが正しいかどうかなんてわかりませんし、脳がそれについていけるわけがありません(HRTFは生まれてからずっと学習し続けてきたもので、だからこそ些細な変化から音像定位できます。BRTFのように刻一刻と変化し続けるものにはとても対応できないでしょう。)だからリアルに再現することは諦めて、音量の変化をわかりやすく大きくする、などの強調をしていくべきではないでしょうか。

上記の他にもたくさん実装したいことはあります。例えば以下のようなものです。
・手を握ると聞こえなくなる
・手でものをこすると摩擦音がすごく聞こえる
・手を向ける向きによって聞こえ方が変わる(現状は手のひらをどちらに向けても同じ聞こえ方になってしまっています。)

課題

開発していく上でいくつかの課題がありました。

まず、左耳用のチャンネルと右耳用のチャンネルを独立に扱えないことです。例えば左手を握った時は、左耳にだけフィルタをかけたいのですがそれができませんでした。片耳ずつ別々に処理する方法が見つかっていません。どなたかUnityでこれができる方法をご存知の方がいましたらぜひ教えてください......

また、UnityではHRTFを再現できるものは用意してあって通常それを使えばすぐにできます。しかし今回は手に耳がついています。誰も手に耳があるときのBRTFなんて測っていないでしょう。既存のHRTFは使えません。もし手の位置に対して無理やりHRTFを使用したとすると、手に頭や肩を乗せたときの音が聞こえるということになってしまいます。

その他

今回人間の音像定位の仕組みについて少し書きましたが正直勉強不足なので正確でないところもあるかもしれません。間違いがありましたらご指摘していただけますと幸いです。

また、音像定位には書いたような物理的な面だけではなく心理学も必要になってくると思います。そういったことに関しては今回全く触れられませんでした。「音響心理学」などで検索してみてください。

参考文献

Sound Localization-wikipedia
頭部伝達関数による音像定位
音を聴く仕組みを探る

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

12

くどりう

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。