以下、本発明の実施形態について図面を参照して説明する。以下では、ユーザの音声が配信される場合を例に説明するが、これに限定されることはない。例えば、ユーザの拍手や楽器の演奏音や、環境音など、音声以外の音を配信する場合にも本実施形態の配信システム1を適用することが可能である。
また、以下では、仮想空間にユーザのアバター(分身)が会話する場合を例に説明するが、これに限定されることはない。仮想空間に、ユーザのアバター以外の音を出す仮想オブジェクトが設けられていてもよいのは勿論である。音を出す仮想オブジェクトとは、例えば、ジュークボックス、鹿威し(ししおどし)、車、テレビのスピーカ等の仮想オブジェクトである。このような仮想オブジェクトが出す音についても、本実施形態の配信システム1を適用することが可能である。また、ユーザのアバターが発する声と、仮想オブジェクトが出す音とが組み合わされた音についても同様に、本実施形態の配信システム1を適用することが可能である。
例えば、k個(kは任意の自然数)の仮想オブジェクト(音を出す仮想オブジェクト)が存在する仮想空間において、k個の仮想オブジェクトの全てが音を出した場合、サーバは、k個分の音とその位置情報を、ユーザ端末に通知しなければならない。すなわち、サーバは、k個の仮想オブジェクトが存在する仮想空間では最大でk2相当のデータ量を配信しなければならない。このため、仮想空間に存在する仮想オブジェクトの数が増えると指数関数的に送信データ量が増加してしまうという問題がある。このような問題を解決する手段として、実施形態の配信システム1を適用することが可能である。
実施形態の配信システム1は、仮想空間(ワールドともいう)に参加する利用者から通知される音声を、その仮想空間に表示されるユーザ(利用者)の分身であるアバターの音声として配信するシステムである。図1は、実施形態の配信システム1の構成例を示すブロック図である。配信システム1は、例えば、複数の利用者端末10(利用者端末10-1~10-N、Nは任意の自然数)と、配信サーバ20とを備える。配信システム1において、利用者端末10のそれぞれと、配信サーバ20とは通信ネットワークNWを介して通信可能に接続される。通信ネットワークNWは、例えば、広域回線網、すなわちWAN(Wide Area Network)やインターネット、或いはこれらの組合せである。
利用者端末10は、仮想空間に参加するユーザが操作するコンピュータ装置である。利用者端末10は、例えば、PC(Personal Computer)、HMD(Head Mounted Display)、ゲーム端末、或いは、タブレット端末やスマートフォンなどである。
配信サーバ20は、仮想空間を配信するコンピュータ装置である。配信サーバ20は、例えば、サーバ装置、クラウド、PC(Personal Computer)などである。
配信サーバ20が配信する仮想空間には、その仮想空間に参加するユーザのそれぞれのアバターが表示されている。仮想空間では、ユーザは、それぞれのアバターを利用して、他の利用者のアバターと会話することができる。
仮想空間における会話は、配信サーバ20を介してから利用者端末10に配信される。具体的には、あるユーザの利用者端末10が、ユーザによる操作等により、ユーザが発した音声を配信サーバ20に送信する。配信サーバ20は、利用者端末10から受信した音声を、そのユーザのアバターが発した音声として、他の利用者端末10に配信する。これにより、他のユーザは、あるユーザが発した音声を、そのユーザのアバターが発した音声として聴くことができる。
また、仮想空間では、ユーザのアバターが仮想空間を移動することができる。仮想空間におけるアバターの移動は、配信サーバ20が仮想空間を更新することにより実現される。具体的には、あるユーザの利用者端末10が、ユーザの操作により、ユーザのアバター位置を示す情報を配信サーバ20に送信する。ここでのアバター位置とは、仮想空間におけるユーザのアバターの位置であり、「仮想オブジェクト位置」の一例である。例えば、HMDにより取得されたユーザの視線位置や視線方向、或いは、ゲームコントローラやカーソルキーの操作等により操作された移動方向等を示す情報が、アバター位置を示す情報として、送信される。配信サーバ20は、利用者端末10から受信したアバター位置を示す情報に基づいて、アバター位置を変更した仮想空間を生成し、生成した仮想空間を示す空間情報を、それぞれの利用者端末10に配信する。ここでの空間情報とは、仮想空間に設けられる各種オブジェクトの位置、方向等を示す情報が含まれる。それぞれの利用者端末10は、配信サーバ20から受信した空間情報に基づいて、仮想空間を、画面に再現する。これにより、ユーザは、ユーザの操作に応じて自身のアバター位置を移動させることができる。
配信サーバ20は、アバターの音声を配信する際、音声を示す情報を、その音声を発したアバターの位置を示す情報と共に、利用者端末10に配信する。利用者端末10は、配信サーバ20から受信した音声を、そのアバターの位置に基づいて再生する。例えば、利用者端末10は、仮想空間においてユーザのアバターの位置から遠く離れた場所にいるアバターが発した音声は小さく、近くにいるアバターが発した音声は大きく聴こえるように、再生する。また、ユーザのアバター位置および正面方向を基準として、他のアバターの相対的な方位をもとに音像位置を制御することができる。例えば、バイノーラル再生技術では、モノラル音声に左右耳の頭部伝達関数を重畳し、ステレオ音声としてヘッドホン再生することで、あたかも実空間にいるかのような方位感が得られることが知られている。これにより、ユーザはあたかもワールドにいるかのような臨場感を体験することができる。
また、本実施形態の配信サーバ20は、仮想空間を複数の領域に分割し、分割した領域(以下、分割領域ともいう)ごとに、音声を集約して、1つの音声とする。配信サーバ20は、集約した音声(以下、集約音声ともいう)を、その集約音声の発生位置を示す情報と共に、利用者端末10に配信する。これにより、仮想空間にn人が参加する場合においてn2相当のデータ量を配信する代わりに、分割領域の数m(mは任意の自然数)相当のデータ量を配信する運用とすることができる。したがって、仮想空間に参加する人数が増えた場合であっても、指数関数的に送信データ量が増加することがなく、最大でも分割領域の数mに相当するデータ量に抑えることができる。
なお、分割の方法については、様々な方法が考えられる。例えば、シンプルなメッシュによって分割することが考えられる。また、仮想空間にいるアバターの分布の状況に応じて、例えば、アバターの数が少ない領域は大きい領域に分割し、アバターの数が多い領域は小さい領域に分割するようにしてもよい。また、仮想空間にいるアバターに優先度をつけ、優先度が高いアバターが存在する領域は小さい領域に分割するようにしてもよい。
また、仮想空間に高低差がある場合には、高さに応じて分割するようにしてもよい。例えば、コンサートホールを模した仮想空間において、1階席と2階席とが設けられている場合、1階席が存在する領域と、2階席が存在する領域とが異なる領域となるように分割する。これにより、音声を集約する際に、1階席の音声と2階席の音声とが集約されてしまうような、違和感のある集約を回避することができる。
また、展示会会場や、コンサートホール等を模した仮想空間にでは、メインステージ、展示エリアなどが存在する領域に高い優先度を設定して、より小さい領域に分割されるようにしてもよい。
図1に示すように、利用者端末10は、例えば、通信部11と、記憶部12と、制御部13と、表示部14と、位置検知部15と、入力部16と、マイク部17と、スピーカ部18と、を備える。
通信部11は、配信サーバ20と通信を行う。記憶部12は、HDD、フラッシュメモリ、EEPROM(Electrically Erasable Programmable Read Only Memory)、RAM(Random Access read/write Memory)、ROM(Read Only Memory)などの記憶媒体、あるいはこれらの組合せによって構成される。記憶部12は、利用者端末10の各種処理を実行するためのプログラム、及び各種処理を行う際に利用される一時的なデータを記憶する。
制御部13は、利用者端末10がハードウェアとして備えるCPU(Central Processing Unit)にプログラムを実行させることによって実現される。制御部13は、配信サーバ20を統括的に制御する。制御部13は、通信部11、記憶部12、表示部14、位置検知部15、入力部16、マイク部17、及びスピーカ部18のそれぞれを制御する。
表示部14は、液晶ディスプレイなどの表示装置を含み、制御部13の制御に応じて、仮想空間を表示する。
位置検知部15は、ユーザの位置、及び動きを検知する機能部である。位置検知部15によって検知された動きが、アバターの動き等に反映される。位置検知部15は、例えば、利用者端末10に内蔵され、利用者端末10の動きや向きの変化や回転動作などを検知するジャイロセンサである。この場合、位置検知部15は、ユーザがスマートフォンやHMDを傾ける等の動作をした場合に、その傾きの度合いを検知し、検知した情報を制御部13に出力する。
入力部16は、ユーザの操作を示す情報が入力される機能部である。入力部16に入力された情報が、アバターの移動方向や移動量等に反映される。入力部16は、例えば、マウスやキーボード、タッチパネル、トラックボール、ゲームコントローラなどである。入力部16は、ユーザがマウス等を操作した場合に、その操作を示す情報を取得する。入力部16は、取得した情報を制御部13に出力する。
マイク部17は、ユーザの音声を集音する。マイク部17に集音された音声が、アバターの音声に反映される。マイク部17は、ユーザの音声を集音し、集音した音声を制御部13に出力する。
スピーカ部18は、制御部13の制御に応じて、音を出力する。スピーカ部18から出力される音声は、仮想空間における他のアバターの音声である。スピーカ部18は、少なくとも音声出力部を複数備える、2チャネル構成のステレオスピーカ、或いは3チャネル以上のサラウンドスピーカ等である。複数チャネルの音声を出力することにより、アバター音声が聴こえる方向や距離感、及び音場感を表現することができ、ユーザにワールドにいる臨場感を体験させることができる。
配信サーバ20は、例えば、通信部21と、記憶部22と、制御部23とを備える。通信部21は、利用者端末10のそれぞれと通信を行う。具体的に、通信部21は、利用者端末10のそれぞれから、ユーザの音声とアバター位置とを示す情報を受信する。通信部21は、受信した情報を制御部23に出力する。また、通信部21は、制御部23の指示に応じて、利用者端末10に、仮想空間に係る情報、つまり、仮想空間を示す空間情報やアバターが発した音声を示す情報を送信する。
記憶部22は、例えば、HDD、フラッシュメモリ、EEPROM(Electrically Erasable Programmable Read Only Memory)、RAM(Random Access read/write Memory)、ROM(Read Only Memory)などの記憶媒体、あるいはこれらの組合せによって構成される。記憶部22は、配信サーバ20の各種処理を実行するためのプログラム、及び各種処理を行う際に利用される一時的なデータを記憶する。
記憶部22は、例えば、利用者優先度情報220と、領域分割基礎情報221と、個別音声情報222と、位置情報223と、領域分割情報224と、集約音声情報225とを記憶する。記憶部22が記憶するこれらの情報の詳しい内容については後述する。
制御部23は、配信サーバ20がハードウェアとして備えるCPUにプログラムを実行させることによって実現される。制御部23は、例えば、取得部230と、領域特定部231と、音声集約部232と、送信情報決定部233と、装置制御部234とを備える。
取得部230は、ユーザの音声と、そのユーザのアバター位置を示す情報を取得する。取得部230は、通信部21が利用者端末10から受信したユーザの音声とアバター位置を示す情報を取得し、取得した情報を領域特定部231、送信情報決定部233、及び装置制御部234に出力する。
領域特定部231は、仮想空間におけるアバターの分布状況に応じて、分割領域を特定する。領域特定部231は、取得部230から、アバター位置を示す情報を取得する。また、領域特定部231は、記憶部22を参照して領域分割基礎情報221を取得する。領域分割基礎情報221は、仮想空間において、基礎とする分割領域(以下、基礎分割領域という)を示す情報である。
領域分割基礎情報221には、例えば、仮想空間に配置されたオブジェクトに応じた基礎分割領域が示されている。例えば、仮想空間に、舞台と、舞台正面及び左右方向のそれぞれに観客席オブジェクトが配置されている場合を考える。この場合、例えば、舞台オブジェクトが配置されている領域、舞台正面の観客席オブジェクトが配置された領域、舞台左側の観客席オブジェクトが配置された領域、舞台右側の観客席オブジェクトが配置された領域のそれぞれが、基礎分割領域となる。
領域特定部231は、取得部230から取得したアバター位置を示す情報、及び領域分割基礎情報221に基づいて、基礎分割領域ごとに、アバターの数(以下、アバター数という)を算出する。領域特定部231は、算出したアバター数に基づいて、分割領域を決定する。領域特定部231は、例えば、基礎分割領域におけるアバター数が閾値以上である場合、その基礎分割領域を複数(例えば、二つ)に分割する。領域特定部231は、複数に分割した基礎分割領域のそれぞれの領域ごとに、アバター数を算出する。領域特定部231は、算出したアバター数が閾値以上である場合、その領域を、さらに、分割する。領域特定部231は、このような処理を繰り返し、それぞれの領域におけるアバター数が閾値未満となるように、分割領域を決定する。領域特定部231は、決定した分割領域のそれぞれの位置を示す情報を、領域分割情報224として、記憶部22に記憶させる。
なお、領域特定部231による分割領域を特定する方法は、上記の方法に限定されない。例えば、領域特定部231は、基礎分割領域そのものを、分割領域として特定してもよい。
音声集約部232は、分割領域ごとに、音声を集約する。ここでの分割領域は、領域特定部231により特定された領域であり、記憶部22に領域分割情報224として記憶された領域である。音声集約部232が、音声を集約する方法について、図2及び図3を用いて説明する。図2及び図3は、実施形態の配信サーバ20が音声を集約する方法を説明するための図である。音声集約部232は、「音集約部」の一例である。
図2には、仮想空間VRが複数の分割領域BRに分割されている例が模式的に示されている。分割領域BRには、複数のアバターAP1~AP6が存在する(図では利用者アバターと記載)。図2では、複数のアバターAP1~AP6のそれぞれの音声が集約された集約音声が、発生点DPから発生することが模式的に示されている。
図2に示すように、音声集約部232は、仮想空間VRにおける分割領域BRに存在する複数のアバターAP1~AP6のそれぞれの音声を集約した集約音声を生成する。音声を集約する方法は、任意の方法であってよい。例えば、音声集約部232は、アバターAP1~AP6のそれぞれの音声を単純加算した音声を集約音声とする。音声集約部232は、加算した音声のボリュームを調整するようにしてもよい。この場合、音声集約部232は、例えば、加算した音声を、加算した音声の数で除算し、それぞれの音声の平均値を集約音声とする。
また、音声集約部232は、生成した集約音声の発生位置を決定する。発生位置の決定方法としては、例えば、以下が考えられる。
(1)分割領域の中央地点となる位置
(2)分割領域にいるアバター位置の平均値となる位置
(3)分割領域にいるアバターの優先度に応じた加重平均値となる位置
(4)分割領域にいるアバターのうち最も優先度が高いアバターの位置
上記(1)を適用する場合、音声集約部232は、例えば、集約音声を内訳となる音声のそれぞれに対応する利用者のアバター位置の重心を、その集約音声の発生位置とする。或いは、音声集約部232は、分割領域の重心を、その分割領域における集約音声の発生位置とするようにしてもよい。音声集約部232は、生成した集約音声を示す情報、及びその集約音声の発生位置を示す情報を、集約音声情報225として、記憶部22に記憶させる。
図3には、仮想空間VRに、舞台SGと、観客席KSが配置されている例が示されている。舞台SGの中央における分割領域BRには、優先度が高いアバター、例えば、ライブでのパフォーマー、司会者、教室での教師、講演者、テレビ中継での中継者等、が存在する。このような仮想空間においては、演者の音声が、その他のユーザの音声と集約されることなく、配信されるほうが望ましい。
このような対策として、音声集約部232は、仮想空間VRにおけるアバターに対応づけられた優先度に基づいて、音声を集約するか否かを決定する。優先度は、利用者ごとに予め決定され、例えば、利用者優先度情報220として、記憶部22に記憶されている。
例えば、図3の例では、演者のアバターには高い優先度が設定され、共演者や、観客席にいる観客のアバターには、低い優先度が設定されている。
音声集約部232は、例えば、利用者優先度情報220を参照し、取得部230から取得した音声に対応する利用者の優先度を取得する。音声集約部232は、取得した優先度に基づいて、利用者の音声を集約するか否かを決定する。音声集約部232は、例えば、優先度が高い利用者の音声は集約しないと決定する。一方、音声集約部232は、優先度が低い利用者の音声を集約すると決定する。
図1の説明に戻り、送信情報決定部233は、利用者端末10に配信する情報を決定する。送信情報決定部233は、例えば、利用者端末10に対応する利用者のアバター位置に基づいて、その利用者端末10に配信する情報を決定する。
利用者端末10に、集約された音声と、集約されていない音声(以下、個別音声ともいう)とが共に送信されると、1つの同一音声が2回再生されることとなる。例えば、あるユーザが発言した場合において、そのユーザの個別音声と、そのユーザのアバターが属する領域の集約音声とが共に配信された場合、利用者端末10ではユーザの音声が2回再生されることとなる。この対策として、本実施形態では、利用者端末10に対応する利用者のアバター位置の近傍にある分割領域(以下、近傍領域ともいう)にいるアバターの音声については個別音声を送信し、近傍にない遠隔にある分割領域については集約音声を送信する。
また、利用者端末10に、その利用者自身の音声が配信されると、発話からやや遅れて、利用者端末10のスピーカから利用者自身の音声が、いわゆるエコーとして出力されることとなる。この場合、その利用者は、発話しながら、そのやや遅れた自分の音声が聴こえてくることとなる。この場合、利用者に発話続けることを困難に感じさせ、ユーザビリティが低下する可能性がある。エコーが生じないようにする対策として、本実施形態では、例えば、分割領域に含まれる利用者のアバターが発した音のうち、集約対象である音のみを集約した集約音を生成する。ここでいう集約対象は、アバターが発した音のうち、送信先の利用者のアバターが発した音以外の音である。すなわち、送信先の利用者自身の音声を集約処理の対象にしない。そして、送信先の利用者端末10には、送信先の利用者のアバターが発した音以外の音を集約した集約音声を送信する。或いは、送信情報決定部233は、送信先の利用者端末10から通知された音声以外の音を、当該送信先の前記利用者端末10に対する送信対象とする。具体的には、近傍領域については、当該利用者のアバター以外のアバターが発した音声(個別音声)を送信する。
図4には、仮想空間VRにおける、あるユーザに対応する対象アバターTAに着目した近傍領域KRが模式的に示されている。図4に示すように、対象アバターTAが属する分割領域BR1と、その近傍にある分割領域BR2~BR4が、対象アバターTAに着目した場合の近傍領域KRである。この場合、対象アバターTAに対応するユーザの利用者端末10には、自身を除く個別音声、つまり近傍領域KRにいるアバターAP1~AP7のそれぞれの個別音声が配信される。また、この利用者端末10には、近傍領域KR以外の分割領域における集約音声が配信される。
具体的には、送信情報決定部233は、取得部230から取得したユーザのアバター位置に基づいて、ユーザごとに近傍領域KRを決定する。送信情報決定部233は、例えば、ユーザのアバター位置から所定の範囲内にある分割領域BRを、近傍領域KRとする。送信情報決定部233は、ユーザの近傍領域KRについては個別音声を、ユーザの近傍領域KR以外の分割領域については集約音声を、そのユーザの利用者端末10に送信すると決定する。
図1の説明に戻り、装置制御部234は、配信サーバ20を統括的に制御する。例えば、装置制御部234は、通信部21により受信されたユーザの音声とそのアバター位置を示す情報を、取得部230に出力する。また、装置制御部234は、送信情報決定部233により決定された利用者端末10に配信する情報を通信部21に出力する。これにより、送信情報決定部233により配信すると決定された音声などを示す情報が、利用者端末10に配信される。この場合、装置制御部234は、「送信部」の一例である。
図5は、実施形態の利用者優先度情報220の例を示す図である。利用者優先度情報220は、ユーザ(利用者)の優先度を示す情報であり、例えば、仮想空間ごとに生成される。利用者優先度情報220は、例えば、利用者Noと、優先度などの項目を備える。利用者Noは利用者を一意に特定する番号などの識別情報である。優先度は、利用者Noにより特定される利用者の優先度を示す情報である。優先度は、高いか低いかの二値で示される情報であってもよいし、レベルL1~L5など段階的に優先度合が示された情報であってもよい。
優先度は、ユーザ自身によって定義、或いは設定されるようにしてもよい。例えば、あるユーザにとって友人や知人には高い優先度が設定される等が考えられる。この場合、例えば、配信サーバ20から、仮想空間の参加者として登録されたユーザごとのマイページが提供される。マイページには、例えば、ユーザが優先度を設定することが可能な入力フォームが提供される。ユーザは、利用者端末10を操作してマイページにアクセスし、ユーザの希望に応じた優先度を設定する操作を行うと、そのユーザの優先度を示す情報が利用者端末10から配信サーバ20に通知される。配信サーバ20は、利用者端末10から受信したユーザの優先度を示す情報を、利用者優先度情報220として、記憶部22に記憶させる。
また、優先度は、動的に設定されてもよい。例えば、ワールド上を高速で移動するユーザのアバター(もしくはオブジェクト)が存在する場合を考える。この場合、その高速で移動するユーザの音声を、分割領域ごとに集約すると、その集約音声が聴感上の違和感を与える要因となり得る。この対策として、一定以上のスピードでワールド上を移動し続けているユーザのアバター(もしくはオブジェクト)は、移動し続けている間、高い優先度が設定されるようにする。
この場合、例えば、配信サーバ20は、利用者端末10から、ユーザのアバター(もしくはオブジェクト)の位置を取得すると、前回取得した位置と比較することにより、そのユーザのアバター(もしくはオブジェクト)の移動速度を算出する。配信サーバ20は、算出したユーザのアバター(もしくはオブジェクト)の移動速度が、閾値以上である場合、記憶部12の利用者優先度情報220を参照し、そのユーザの優先度を高い優先度となるようにする。また、配信サーバ20は、算出した移動速度が、閾値未満である場合、記憶部12の利用者優先度情報220を参照し、そのユーザの優先度に高い優先度が設定されている場合には低い優先度となるように変更し、そのユーザの優先度に低い優先度が設定されている場合にはその設定を維持する。
また、優先度は、仮想空間における特定のオブジェクトに応じて、動的に設定されてもよい。例えば、仮想空間にマイクなどの特定のオブジェクトが配置される場合を考える。この場合、例えば、仮想空間において、ユーザのアバターがマイクを持っているときに、一時的に、高い優先度を設定することが考えられる。この場合、例えば、配信サーバ20は、利用者端末10から、ユーザのアバター(もしくはオブジェクト)の位置を取得すると、マイク等の特定のオブジェクトの位置と比較することにより、そのユーザのアバター(もしくはオブジェクト)が、特定のオブジェクトを持っているか否かを判定する。配信サーバ20は、ユーザのアバター(もしくはオブジェクト)が、特定のオブジェクトを持っていると判定した場合、記憶部12の利用者優先度情報220を参照し、そのユーザの優先度を高い優先度となるようにする。また、配信サーバ20は、ユーザのアバター(もしくはオブジェクト)が、特定のオブジェクトを持っていないと判定した場合、記憶部12の利用者優先度情報220を参照し、そのユーザの優先度に高い優先度が設定されている場合には低い優先度となるように変更し、そのユーザの優先度に低い優先度が設定されている場合にはその設定を維持する。
図6は、実施形態の領域分割基礎情報221の例を示す図である。領域分割基礎情報221は、仮想空間において基礎分割領域を示す情報であり、例えば、仮想空間ごとに生成される。この図の例では、基礎分割領域が、三次元の方形な領域、例えば、直方体状の領域である場合を例示して説明するが、これに限定されることはない。基礎分割領域は、直方体以外の立体形状を示す領域であってもよいし、二次元の領域であってもよい。
領域分割基礎情報221は、例えば、領域Noと、基準座標と、幅と、奥行きと、高さなどの項目を備える。領域Noは基礎分割領域を一意に特定する番号などの識別情報である。基準座標は、領域Noにより特定される基礎分割領域の基準となる位置座標であり、例えば、重心となる位置の位置座標である。或いは、基準座標は、基礎分割領域における特定の頂点の位置を示す位置座標であってもよい。幅、奥行き、及び高さのそれぞれは、領域Noにより特定される基礎分割領域の幅、奥行き、及び高さを示す情報である。
図7は、実施形態の個別音声情報222の例を示す図である。個別音声情報222は、利用者端末10により通知された個別の音声を示す情報である。個別音声情報222は、例えば、仮想空間ごとに生成され、音声が通知される度に更新される。個別音声情報222は、例えば、利用者Noと、個別音声などの項目を備える。利用者Noは利用者を一意に特定する番号などの識別情報である。個別音声は、利用者Noにより特定される利用者の利用者端末10から通知された音声を示す情報である。
図8は、実施形態の位置情報223の例を示す図である。位置情報223は、利用者端末10により通知されたアバター位置を示す情報である。位置情報223は、例えば、仮想空間ごとに生成され、アバター位置が通知される度に更新される。位置情報223は、例えば、利用者Noと、位置などの項目を備える。利用者Noは利用者を一意に特定する番号などの識別情報である。位置は、利用者Noにより特定される利用者のアバター位置を示す情報である。
図9は、実施形態の領域分割情報224の例を示す図である。領域分割情報224は、領域特定部231により特定された分割領域を示す情報である。領域分割情報224は、例えば、仮想空間ごとに生成され、領域特定部231により分割領域が特定される度に更新される。この図の例では、基礎分割領域と同様に、分割領域が、直方体状の領域である場合を例示して説明するが、これに限定されることはない。分割領域は、直方体以外の立体形状を示す領域であってもよいし、二次元の領域であってもよい。
領域分割情報224は、例えば、領域Noと、基準座標と、幅と、奥行きと、高さなどの項目を備える。領域Noは分割領域を一意に特定する番号などの識別情報である。基準座標は、領域Noにより特定される分割領域の基準となる位置座標であり、例えば、重心となる位置の位置座標である。或いは、基準座標は、分割領域における特定の頂点の位置を示す位置座標であってもよい。幅、奥行き、及び高さのそれぞれは、領域Noにより特定される分割領域の幅、奥行き、及び高さを示す情報である。
図10は、実施形態の集約音声情報225の例を示す図である。集約音声情報225は、音声集約部232により生成された集約音声を示す情報である。音声集約部232は、例えば、仮想空間ごとに生成され、音声集約部232により集約音声が生成される度に更新される。集約音声情報225は、例えば、領域Noと、集約音声と、発生位置などの項目を備える。領域Noは分割領域を一意に特定する番号などの識別情報である。集約音声は領域Noにより特定される分割領域における集約音声を示す情報である。発生位置は領域Noにより特定される分割領域における集約音声の発生位置を示す情報である。
図11は、実施形態の配信システム1が行う処理の流れを示すシーケンス図である。ここでは、配信サーバ20により仮想空間が配信されており、複数のユーザがそれぞれの利用者端末10(利用者端末10-1~10-N)を介して、その仮想空間に参加している状態であることを前提とする。
利用者端末10(利用者端末10-1~10-N)のそれぞれは、ユーザの位置を検知すると共に、ユーザにより発せられた音声などを集音する。具体的に、利用者端末10-1は、利用者端末10-1を操作するユーザの位置を検知し(ステップS10)、そのユーザにより発せられた音声を集音する(ステップS11)。利用者端末10-2は、利用者端末10-2を操作するユーザの位置を検知し(ステップS12)、そのユーザにより発せられた音声を集音する(ステップS13)。利用者端末10-Nは、利用者端末10-Nを操作するユーザの位置を検知し(ステップS14)、そのユーザにより発せられた音声を集音する(ステップS15)。利用者端末10のそれぞれは、検知した位置を示す情報と、集音した音声と示す情報とを、配信サーバ20に送信する。
配信サーバ20は、利用者端末10のそれぞれから、位置を示す情報(位置情報)と、音声を示す情報(音声情報)を取得する(ステップS16)。配信サーバ20は、仮想空間におけるアバターの分布状況に応じて分割領域を特定する(ステップS17)。配信サーバ20は、例えば、ステップS16で取得した位置情報に基づいて、基礎分割領域におけるアバター数を算出し、アバター数が所定の閾値未満となるように基礎分割領域を分割することによって、分割領域を決定する。なお、配信サーバ20は、ステップS16で取得した情報を用いずに分割領域を特定する場合、ステップS16に係る処理を前提とすることなく、ステップS17に係る処理を実行してよい。この場合、配信サーバ20は、例えば、ステップS16の前に、ステップS17を実行するようにしてもよい。
配信サーバ20は、集約音声を生成し、生成した集約音声の発生位置を決定する(ステップS18)。配信サーバ20は、例えば、分割領域ごとに、その分割領域にいるアバターの音声を加算することによって、その分割領域における集約音声を生成する。また、配信サーバ20は、その分割領域にいるアバターのそれぞれの位置の重心となる位置を、その集約音声の発生位置とする。
配信サーバ20は、配信先の利用者端末10ごとに、その配信先の利用者端末10に配信する音声群(個別音声と集約音声)を決定する(ステップS19)。配信サーバ20が配信先の利用者端末10に配信する音声群を決定する処理の流れは後で詳しく説明する。配信サーバ20は、配信先の利用者端末10ごとに決定した音声群を、それぞれの利用者端末10に送信する(ステップS20)。
利用者端末10のそれぞれは、配信サーバ20から送信された音声群を受信し、受信した音声を再生する。具体的に、利用者端末10-1は、配信サーバ20から送信された音声群を受信して受信した音声を、それぞれの発生位置から再生する(ステップS21)。利用者端末10-2は、配信サーバ20から送信された音声群を受信して受信した音声を、それぞれの発生位置から再生する(ステップS22)。利用者端末10-Nは、配信サーバ20から送信された音声群を受信して受信した音声を、それぞれの発生位置から再生する(ステップS23)。
図12は、実施形態の配信サーバ20が行う処理の流れを示すフロー図である。図12には、図11におけるステップS19に示す処理の流れが示されている。
まず、配信サーバ20は、配信先の利用者端末10に対応する利用者のアバター位置を取得する(ステップS30)。配信サーバ20は、取得したアバター位置に基づいて、そのユーザの近傍領域を決定する(ステップS31)。配信サーバ20は、例えば、アバター位置から分割領域までの距離が、所定の閾値未満である分割領域を、近傍領域とする。
次に、配信サーバ20は、近傍領域内の個別音声と、その位置を示す情報(情報1)を取得する(ステップS32)。配信サーバ20は、例えば、位置情報223を参照して、送信先のユーザとは異なる利用者のアバター位置を取得し、その利用者のアバター位置が近傍領域にあるか否かを判定する。配信サーバ20は、その利用者のアバター位置が近傍領域にある場合には、個別音声情報222を参照して、その利用者の個別音声を取得し、取得した個別音声とその位置(アバター位置)を、(情報1)とする。一方、配信サーバ20は、その利用者のアバター位置が近傍領域にない場合には、その利用者の個別音声を、取得しない。
次に、配信サーバ20は、近傍領域以外の集約音声と、その位置を示す情報(情報2)を取得する(ステップS33)。配信サーバ20は、集約音声情報225を参照し、近傍領域とは異なる分割領域における集約音声とその発生位置を示す情報を取得し、取得した情報を、(情報2)とする。
そして、配信サーバ20は、ステップS32で取得した(情報1)と、ステップS33で取得した(情報2)とを、送信先のユーザの利用者端末10に配信する情報とする(ステップS34)。
以上説明したように、実施形態の配信サーバ20は、仮想空間VRに参加する利用者の利用者端末10から通知される音声を、仮想空間VRに表示される利用者のアバターが発した音声として配信する。配信サーバ20は、取得部230と、音声集約部232と、装置制御部234(「送信部」の一例)とを備える。取得部230は、利用者端末10から、音声とアバター位置とを示す情報を取得する。音声集約部232は、集約音声を生成し、その集約音声の発生位置を決定する。集約音声は、分割領域に含まれる利用者の音声を集約した音声である。分割領域は、仮想空間を複数の領域に分割した領域である。装置制御部234は、音声集約部232により生成された集約音声を、利用者端末10に送信する。
これにより、実施形態の配信サーバ20では、分割領域ごとに、音声を集約して、1つの音声として配信することができる。したがって、仮想空間に参加するユーザの人数が増えた場合であっても、配信サーバ20から利用者端末10に送信する送信データ量の増大を抑制することができる。したがって、仮想空間に参加する人数が増えた場合であっても、指数関数的に送信データ量が増加することがなく、最大でも分割領域の数mに相当するデータ量に抑えることができる。
また、実施形態の配信サーバ20は、領域特定部231を備えてもよい。領域特定部231は、仮想空間VRにおけるアバターの分布状況に応じて前記分割領域を特定する。領域特定部231は、取得部230によって取得されたアバター位置に基づいて、領域に存在するアバターの数が閾値未満となるように、分割領域を特定する。音声集約部232は、領域特定部231によって特定された分割領域に応じて、集約音声を生成する。これにより、実施形態の配信サーバ20では、音声を集約する場合に集約数に偏りがないように分割領域を特定することができる。したがって、配信する集約音声の一方には多数の音声が集約され、他方には少人数音声が集約されているようなばらつきを抑えることが可能である。
また、実施形態の配信サーバ20では、音声集約部232は、利用者優先度情報220に基づいて利用者の音声を集約してもよい。音声集約部232は、例えば、優先度が高い利用者の音声を集約せずに、優先度が低い利用者の音声を集約する。これにより、実施形態の配信サーバ20では、パフォーマンスを行っている演者の音声を、そのパフォーマンスを観ている観客の声援と集約するような事態を回避して、パフォーマンスを観ている観客に演者の音声を高品質に配信することが可能となる。
また、実施形態の配信サーバ20では、音声集約部232は、集約音声の内訳となる音声に対応する利用者のそれぞれのアバター位置の重心となる位置を、当該集約音声の発生位置を決定するようにしてもよい。これにより、実施形態の配信サーバ20では、集約音声の発生位置を、より確からしい位置に設定することができる。
また、実施形態の配信サーバ20は、送信情報決定部233を備えてもよい。送信情報決定部233は、送信先の利用者端末10に対応する利用者のアバター位置と、分割領域との関係に基づいて、分割領域における集約音声を利用者端末10に送信するか否かを決定する。これにより、実施形態の配信サーバ20では、発言をしたユーザの利用者端末10に、自身の声が含まれる集約音声が配信されてしまうような事態を回避することができる。
また、実施形態の配信サーバ20は、送信情報決定部233は、送信先の利用者端末10に対応する利用者のアバター位置との距離が閾値以上である分割領域については集約音声を利用者端末10に送信すると決定する。また、送信情報決定部233は、送信先の利用者端末10に対応する利用者のアバター位置との距離が閾値未満である分割領域(近傍領域)については集約前の個別音声を利用者端末10に送信すると決定する。これにより、実施形態の配信サーバ20では、ユーザの近くにいるアバターの個別音声を配信することができ、ユーザと会話しているアバターの音声を高品質に配信することができる。
(実施形態の変形例1)
実施形態の変形例1について説明する。本変形例では、集約音声を更に集約する点において、上述した実施形態と異なる。本変形例について、図13~図15を用いて説明する。図13~図15は、実施形態の変形例1を説明する図である。
図13には、縦方向に集約レベルLvl1~Lvl4、横方向にアバターの分布を示す集約ツリーが示されている。この図における集約レベルLvlは、レベルの数値が大きい程、集約の度合いが強く、多くの音声を集約することを示す。この図の例では、集約レベルLvl1において、上述した実施形態で示したように、分割領域ごとに音声の集約が行われる。集約レベルLvl2では、近傍の分割領域が更に集約され、6つの分割領域に音声が集約されている。集約レベルLvl3では、更に集約され、3つの分割領域に音声が集約されている。集約レベルLvl4では、更に集約され、1つの分割領域に音声が集約されている。
このように、本変形例では、音声集約部232が、集約レベルLvllに応じた集約音声を生成する。そして、送信情報決定部233は、集約レベルLvlに応じた配信内容を決定する。例えば、送信情報決定部233は、配信先の利用者端末10の通信状況に応じて、例えば、高速な電送レートを確保できる場合には、集約レベルLvlの低い集約音声を配信し、高速な電送レートを確保できない状況にある場合には、集約レベルLvlの高い集約音声を配信する。
また、送信情報決定部233は、送信先のユーザのアバター位置、及び、他の利用者の優先度に応じて、送信先のユーザに配信する集約音声の集約レベルLvを決定するようにしてもよい。
図14及び図15には、集約前のアバターについて、高い優先度が設定されている高優先度アバターHA、送信先のユーザのアバターである対象アバターTA、対象アバターTAの近傍にいるアバターである近傍アバターKAのそれぞれが示されている。
図14のようにアバターが分布している場合、送信情報決定部233は、例えば、高優先度アバターHAが含まれる領域については、集約レベルLvlの低い集約音声(符号D2)を、配送先の利用者端末10に配信すると決定する。また、対象アバターTAと近傍アバターKAが含まれる領域については、集約レベルLvlの低い集約音声(符号D4)を配信すると決定する。そして、送信情報決定部233は、高優先度アバターHA、対象アバターTA、及び近傍アバターKAのいずれも存在しない領域においては、集約レベルLvlの高い集約音声(符号D1、D3、D5)を配信すると決定する。
図15のようにアバターが分布している場合、送信情報決定部233は、例えば、高優先度アバターHAが含まれる領域については、集約レベルLvlの低い集約音声(符号D2)を、配送先の利用者端末10に配信すると決定する。また、対象アバターTAと近傍アバターKAが含まれる領域については、集約レベルLvlの低い集約音声(符号D4)を配信すると決定する。そして、送信情報決定部233は、高優先度アバターHA、対象アバターTA、及び近傍アバターKAのいずれも存在しない領域においては、集約レベルLvlの高い集約音声(符号D1、D3、D5)を配信すると決定する。
以上説明したように、実施形態の変形例に係る配信サーバ20では、送信情報決定部233は、送信先の利用者端末に10対応する利用者のアバター位置との距離が閾値以上である分割領域が複数ある場合、当該複数ある分割領域のそれぞれの集約音声をさらに集約した音声を利用者端末10に送信する。これにより、実施形態の変形例に係る配信サーバ20では、利用者端末10に配信する情報のデータ容量を更に低減させることが可能である。しかも、送信先のユーザのアバター位置から近い領域の音声については更なる集約対象としないため、ユーザに近い位置にいるアバターの音声の集約レベルLvlを維持し。ユーザにとって必要な近傍アバターの音声を高品質で配信することが可能である。
(実施形態の変形例2)
実施形態の変形例2について説明する。本変形例では、複数のサーバにより配信を行う点において、上述した実施形態と異なる。本変形例について、図16を用いて説明する。図16は、実施形態の変形例2を説明する図である。
図16に示すように、本変形例の配信システム1は、複数のCDN(Contents Delivery Network)30(CDN30-1~30-4)を備える。CDN30は、利用者端末10及び配信サーバ20と、通信ネットワークNWを介して通信可能に接続される。
CDN30は、配信サーバ20による配信を補助するコンピュータ装置である。CDN30は、例えば、サーバ装置、クラウド、PC(Personal Computer)などである。
本変形例において、配信サーバ20は、上述した実施形態と同様に、送信先のユーザの利用者端末10に配信する個別音声については、直接、利用者端末10に送信する(符号DT1)。一方、配信サーバ20は、本変形例において、送信先のユーザの利用者端末10に配信する集約音声を、CDN30に送信する(符号DT2)。
CDN30は、配信サーバ20から集約音声を受信し、配信サーバ20から受信した集約音声を一時的に記憶する。CDN30は、送信先のユーザの利用者端末10から送信要求を受けて、一時的に記憶した集約音声を、利用者端末10に送信する(符号DT2#)。
この際、例えば、ユーザの利用者端末10から最も近い場所にあるCDN30により集約音声が送信される。これにより、配信サーバ20における配信に係る処理負担を軽減させると共に、利用者端末10に配信される集約音声の配送遅延を最低限とする。しかも、CDN30を経由して配信する対象を集約音声としていることから、ユーザにとって低遅延で聴く必要がある個別音声については、CDN30を経由することによる遅延が発生しないようにする。したがって、配信サーバ20の処理負担を低減しつつ、ユーザに必要な音声を低遅延で配送することが可能である。
上述した実施形態における配信システム1、及び配信サーバ20の全部又は一部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、FPGA(Field Programmable Gate Array)等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。