(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024094743
(43)【公開日】2024-07-10
(54)【発明の名称】システム、方法、プログラム、情報処理装置
(51)【国際特許分類】
H04M 3/56 20060101AFI20240703BHJP
H04N 21/233 20110101ALI20240703BHJP
H04S 7/00 20060101ALI20240703BHJP
【FI】
H04M3/56 B
H04N21/233
H04S7/00 300
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022211485
(22)【出願日】2022-12-28
【新規性喪失の例外の表示】新規性喪失の例外適用申請有り
(71)【出願人】
【識別番号】304012596
【氏名又は名称】株式会社CRI・ミドルウェア
(74)【代理人】
【識別番号】110002815
【氏名又は名称】IPTech弁理士法人
(72)【発明者】
【氏名】押見 正雄
(72)【発明者】
【氏名】杉本(及川) 進
【テーマコード(参考)】
5C164
5D162
5K201
【Fターム(参考)】
5C164PA41
5C164SB04P
5D162CD07
5D162EG02
5K201BA20
5K201BB09
5K201CA01
5K201CC04
5K201DC06
5K201EB07
5K201EC06
5K201ED05
5K201ED07
(57)【要約】
【課題】音声データの通信において、ミキシング処理を行うことなく、データ通信量を抑える技術を提供する。
【解決手段】複数の端末装置と、サーバとを備え、複数のユーザ間での音声コミュニケーションを実行するシステムであって、複数の端末装置と、サーバは、SFU(Selective Forwarding Unit)方式で通信し、端末装置は、ユーザから受け付けた音声データをサーバへ送信し、サーバは、複数の端末装置から受信した音声データを連結し、連結した音声データを端末装置へ送信する、システムが提供される。
【選択図】
図8
【特許請求の範囲】
【請求項1】
複数の端末装置と、サーバとを備え、複数のユーザ間での音声コミュニケーションを実行するシステムであって、
前記複数の端末装置と、前記サーバは、SFU(Selective Forwarding Unit)方式で通信し、
前記端末装置は、ユーザから受け付けた音声データを前記サーバへ送信し、
前記サーバは、前記複数の端末装置から受信した音声データを連結し、連結した音声データを前記端末装置へ送信する、システム。
【請求項2】
前記サーバは、
前記複数の端末装置から受信した音声データについて、宛先として指定されるユーザ宛ての複数のセグメントを特定し、
特定された前記複数のセグメントにおける音声データを連結し、連結された音声データをセグメントに格納して、前記宛先として指定されるユーザの端末装置へ送信する、請求項1に記載のシステム。
【請求項3】
前記サーバは、所定の時間内に前記複数の端末装置から受信した音声データを、連結対象の音声データとする、請求項2に記載のシステム。
【請求項4】
前記端末装置は、
前記サーバから受信したデータのセグメント内に格納された音声データについて、当該音声データにおける話者それぞれに位置情報を割り当て、
前記音声データに、割り当てられた前記位置情報に基づいた頭部伝達関数を適用した音声データを生成し、
生成された音声データを聴取者に対して出力する、請求項1に記載のシステム。
【請求項5】
前記端末装置は、前記話者それぞれに仮想の位置に関する位置情報を割り当てる、請求項4に記載のプログラム。
【請求項6】
前記端末装置と、前記サーバは、UDP(User Datagram Protocol)プロトコルで通信を行い、
前記サーバは、前記連結した音声データをデータグラムに格納する、請求項1~請求項5のいずれか1項に記載のプログラム。
【請求項7】
前記端末装置は、受け付けたユーザの音声を圧縮音声に変換して、前記サーバへ送信する、請求項1~請求項5のいずれか1項に記載のプログラム。
【請求項8】
複数の端末装置と、サーバとに、複数のユーザ間での音声コミュニケーションを実行させる方法であって、
前記複数の端末装置と、前記サーバとを、SFU(Selective Forwarding Unit)方式で通信させるステップと、
前記端末装置に、ユーザから受け付けた音声データを前記サーバへ送信させるステップと、
前記サーバに、前記複数の端末装置から受信した音声データを連結させ、連結した音声データを前記端末装置へ送信させるステップと、を含む、方法。
【請求項9】
複数の端末装置と、サーバとに、複数のユーザ間での音声コミュニケーションを実行させるプログラムであって、
前記複数の端末装置と、前記サーバとに、SFU(Selective Forwarding Unit)方式で通信させるステップを実行させ、
前記端末装置に、ユーザから受け付けた音声データを前記サーバへ送信させるステップを実行させ、
前記サーバに、前記複数の端末装置から受信した音声データを連結させ、連結した音声データを前記端末装置へ送信させるステップを実行させる、プログラム。
【請求項10】
複数のユーザ間での音声コミュニケーションを実行する情報処理装置であって、
前記複数のユーザの端末装置と、SFU(Selective Forwarding Unit)方式で通信し、
前記端末装置から、ユーザから受け付けた音声データを受信し、
前記端末装置から受信した音声データを連結し、連結した音声データを前記端末装置へ送信する、情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、システム、方法、プログラム、情報処理装置に関する。
【背景技術】
【0002】
昨今、オンラインでの音声コミュニケーションを円滑に行うためにデータ通信量を抑える技術が開発されている。例えば特許文献1には、サーバで受信した音声データのミキシングを行い、ユーザ端末ごとのバッファに格納して一定量毎に取り出す技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
一方、上記技術では、受信した音声データのミキシングをおこなっているため、受信したデータからそれぞれのユーザに対応する音声データを取り出して後続の処理を行いたい場合には使用できないという不具合が生じていた。
【0005】
本開示の目的は、音声データの通信において、ミキシング処理を行うことなく、データ通信量を抑えることである。
【課題を解決するための手段】
【0006】
本開示では、複数の端末装置と、サーバとを備え、複数のユーザ間での音声コミュニケーションを実行するシステムであって、複数の端末装置と、サーバは、SFU(Selective Forwarding Unit)方式で通信し、端末装置は、ユーザから受け付けた音声データをサーバへ送信し、サーバは、複数の端末装置から受信した音声データを連結し、連結した音声データを端末装置へ送信する、システムが提供される。
【発明の効果】
【0007】
本開示によれば、音声データの通信において、ミキシング処理を行うことなく、データ通信量を抑えることが可能となる。
【図面の簡単な説明】
【0008】
【
図2】システム1のハードウェア構成を示すブロック図である。
【
図3】端末装置10の機能構成を示すブロック図である。
【
図4】サーバ20の機能構成を示すブロック図である。
【
図5】
図5Aは音源Sと聴取者Lの関係を示す図である。
図5Bは頭部伝達関数における左伝達関数と右伝達関数を示す図である。
図5Cは音声への頭部伝達関数の適用を示す図である。
【
図6】
図6Aは通信されるデータの伝送単位を示す図である。
図6Bはサーバ20における音声データの連結について説明するための図である。
【
図7】端末装置10の記憶部180に記憶されるデータベースの構造を示す図である。
【
図8】システム1の処理の流れを説明するフロー図である。
【
図9】音声生成処理(S200)の流れを説明するフロー図である。
【
図10】ユーザごとに仮想的な位置を割り当てる処理を説明するための図である。
【
図11】第2実施形態における端末装置10の機能構成を示すブロック図である。
【
図12】第2実施形態における音声生成処理(S200)の流れを説明するフロー図である。
【
図13】
図13Aは、仮想空間W内でのユーザに対応するアバターの位置の一例を示す図である。
図13Bは、ユーザごとに仮想的な位置を割り当てる処理を説明するための図である。
【発明を実施するための形態】
【0009】
以下、図面を参照しつつ、本開示の実施形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称及び機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【0010】
<1.第1実施形態>
(1-1.システム1の概要)
図1を参照して、システム1が提供する機能(以下、本機能ともいう)の概要を説明する。
図1に示すように、システム1は、複数のユーザがそれぞれ使用する複数の端末装置10と、サーバ20を備え、複数のユーザによる会話での同期コミュニケーション(以下、ボイスチャットともいう)を実行する。
【0011】
端末装置10は、ユーザが発する音声を受け付けて、サーバ20へ送信する。サーバ20は、複数の端末装置10から音声を受信すると、受信した音声データを連結して1つのセグメント(送受信データにおけるデータのまとまり。一例としてUDPにおけるデータグラム)に格納して、端末装置10へ送信する。端末装置10は、生成された音声をサーバ20から受信し、ユーザに対して出力する。
【0012】
このように、システム1では、ユーザ同士の音声での同期コミュニケーションにおいて、複数のユーザから受け付けた音声データをサーバ20で連結して、1つのデータグラムに格納して端末装置10へ送信する。当該連結された音声データは、端末装置10から出力される。このような構成とすることで、データグラムにおけるヘッダーに関するオーバーヘッド(付加的な処理)を低減ことができる。また、データグラムにおけるヘッダーを省くことができ、通信リソースを節約して効率よく通信を行うことが可能となる。以下、各構成を詳細に説明する。
【0013】
(1-2.システム1のハードウェア構成)
図2は、システム1のハードウェア構成の例を示すブロック図である。システム1は、複数の端末装置10と、サーバ20とを備える。端末装置10およびサーバ20は、ネットワーク30を介して通信可能に接続されている。ここで、端末装置10と、サーバ20は、SFU(Selective Forwarding Unit)方式で通信されている。また、端末装置10と、サーバ20は、UDP(User Datagram Protocol)プロトコルで通信することが好ましい。なお、
図2に示す例では、システム1は3つの端末装置10を備えているが、端末装置10の数はこの例に限定されることはなく、2つ以下であってもよく、4つ以上であってもよい。
【0014】
本実施形態において、複数の装置の集合体を1つのサーバ20としてもよい。1つ又は複数のハードウェアに対して本実施形態に係るサーバ20を実現することに要する複数の機能の配分の仕方は、各ハードウェアの処理能力及び/又はサーバ20に求められる仕様等に鑑みて適宜決定することができる。
【0015】
端末装置10は、一例として、デスクトップ型またはラップトップ型のPC(Personal Computer)であってもよい。また、端末装置10は、タブレット端末、又はスマートフォン等の携帯端末として実現してもよい。端末装置10は、通信IF(Interface)12と、入力装置13と、出力装置14と、メモリ15と、ストレージ16と、プロセッサ19とを備える。
【0016】
通信IF12は、端末装置10が外部の装置と通信するため、信号を入出力するためのインタフェースである。
【0017】
入力装置13は、ユーザからの入力操作を受け付けるための装置(例えば、タッチパネル、マイク等)である。
【0018】
出力装置14は、ユーザに対して情報を提示するための装置(ディスプレイ、スピーカ等)である。
【0019】
メモリ15は、プログラム、及び、プログラム等で処理されるデータ等を一時的に記憶するためのものであり、例えばDRAM(Dynamic Random Access Memory)等の揮発性のメモリである。
【0020】
ストレージ16は、データを保存するためのものであり、例えばフラッシュメモリ、HDD(Hard Disc Drive)である。
【0021】
プロセッサ19は、プログラムに記述された命令セットを実行するためのハードウェアであり、演算装置、レジスタ、周辺回路等により構成される。
【0022】
サーバ20は、インターネットなどのネットワーク30を介して端末装置10と通信可能なコンピュータであり、いわゆるクラウドサーバとして実現される。サーバ20は、通信IF22と、入出力IF23と、メモリ25と、ストレージ26と、プロセッサ29とを備える。
【0023】
入出力IFは、サーバ20に対して何らかの入力操作を行う場合、または、サーバ20から情報を出力する場合に、入出力装置を接続するためのインタフェースである。
【0024】
通信IF22、メモリ25、ストレージ26およびプロセッサ29は、端末装置10の通信IF12、メモリ15、ストレージ16およびプロセッサ19と同様に構成されるため、説明は繰り返さない。
【0025】
(1-3.端末装置10の機能構成)
図3は、端末装置10の機能構成の例を示すブロック図である。
図3に示すように、端末装置10は、入力装置13と、出力装置14と、通信部150と、音声処理部170と、記憶部180と、制御部200を備える。
図3において端末装置10に含まれる各ブロックは、例えば、バス等により電気的に接続される。
【0026】
通信部150は、端末装置10が他の装置と通信するための変復調処理等の処理を行う。通信部150は、制御部200で生成された信号に送信処理を施し、外部(例えば、他の端末装置10)へ送信する。通信部150は、外部から受信した信号に受信処理を施し、制御部200へ出力する。
【0027】
入力装置13は、端末装置10を操作するユーザが指示、又は情報を入力するための装置である。入力装置13は、例えば、キーボード131およびマウス132を含む。また、入力装置13は、操作面へ触れることで指示が入力されるタッチセンシティブデバイスを備えていてもよい。入力装置13は、ユーザから入力される指示、又は情報を電気信号へ変換し、電気信号を制御部200へ出力する。また、入力装置13には、外部の入力機器から入力される電気信号を受け付ける受信ポートが含まれてもよい。
【0028】
出力装置14は、端末装置10を操作するユーザへ情報を提示するための装置である。出力装置14は、例えば、ディスプレイ141等により実現される。ディスプレイ141は、制御部200の制御に応じたデータを表示する。ディスプレイ141は、例えば、LCD(Liquid Crystal Display)、又は有機EL(Electro-Luminescence)ディスプレイ等によって実現される。
【0029】
音声処理部170は、例えば、音声のデジタル-アナログ変換処理を行う。音声処理部170は、マイク171から与えられる音声のアナログ信号をデジタル信号に変換して、変換後のデジタル信号を制御部200へ与える。また、音声処理部170は、音声の信号をスピーカ172へ与える。音声処理部170は、例えば音声処理用のプロセッサによって実現される。マイク171は、音声入力を受け付けて、当該音声入力に対応する信号を音声処理部170へ与える。スピーカ172は、音声処理部170から与えられる信号を音声に変換して当該音声を端末装置10の外部へ出力する。なお、スピーカ172は、例えば7.1chスピーカを用いて実現してもよいし、ステレオヘッドホンを用いて実現してもよい。
【0030】
記憶部180は、例えば、メモリ15、及びストレージ16等により実現され、端末装置10が使用するデータ、及びプログラムを記憶する。記憶部180は、一例として、伝達関数データベース(DB:DataBase)181を記憶する。
【0031】
頭部伝達関数データベース181は、頭部伝達関数の情報を記憶するデータベースである。頭部伝達関数とは、音源から出力された音声が聴取者の左右の耳で聴き取られるまでに変化する特性を表した伝達関数である。頭部伝達関数データベース181は、端末装置10の記憶部180にあらかじめ記憶されるのが好ましいが、必要に応じて適宜レコードの追加および更新をしてもよい。頭部伝達関数データベース181のデータ構造の詳細は後述する。
【0032】
図5Aおよび
図5Bを参照して、頭部伝達関数について説明する。音源Sから出力された音声が聴取者Lに聴き取られる際、聴取者Lの左耳で聴き取られる音声と、聴取者Lの右耳で聴き取られる音声には変化が生じる。これは、音源Sから出力された音声は、聴取者Lの頭部の形状、聴取者Lの耳殻の構造、および聴取者Lの位置を基準とした音源Sの位置の方向などの影響を受けるためである。ここで、
図5Aに示すように、聴取者Lの位置を基準とした音源Sの位置の方向は、極座標における鉛直角θと水平角φを用いて一意に特定される。
【0033】
一例として、
図5Bに示すように、音源Sから出力された音声が聴取者Lの左耳E1に到達するまでの変化の特性を左耳用の頭部伝達関数(以下、左伝達関数ともいう)Hleftとして表現でき、音源Sから出力された音声が聴取者Lの右耳E2に到達するまでの変化の特性を右耳用の頭部伝達関数(以下、右伝達関数ともいう)Hrightとして表現できる。なお、左伝達関数Hleftおよび右伝達関数Hrightは、いずれも鉛直角θと水平角φを変数として保持し得る。
【0034】
図3に戻って、端末装置10の機能構成について説明を続ける。制御部200は、プロセッサ19が記憶部180に記憶されるプログラムを読み込み、プログラムに含まれる命令を実行することにより実現される。制御部200は、端末装置10の動作を制御する。制御部200は、プログラムに従って動作することにより、操作受付部201と、送受信部202と、表示制御部203と、音声受付部204と、位置割当部205と、関数選択部206と、音声生成部207と、音声出力部208としての機能を発揮する。
【0035】
操作受付部201は、入力装置13から入力される指示、又は情報を受け付けるための処理を行う。具体的には、例えば、操作受付部201は、キーボード131等から入力される指示に基づく情報を受け付ける。
【0036】
送受信部202は、端末装置10が、外部の装置と通信プロトコルに従ってデータを送受信するための処理を行う。
【0037】
表示制御部203は、ユーザに対する情報のディスプレイ141に代表される出力装置14への表示を制御する。
【0038】
音声受付部204は、ユーザが発する音声を受け付ける。具体的には、例えば、ユーザが発する音声の入力を端末装置10のマイク171で検出し、音声処理部170におけるデジタル-アナログ変換処理を行うことにより、音声受付部204によってユーザが発した音声が受け付けられる仕様としてもよい。
【0039】
位置割当部205は、サーバ20から受信した音声データの話者それぞれに仮想の位置情報を割り当てる。仮想の位置情報の割り当てについての詳細は後述する。
【0040】
関数選択部206は、位置割当部205が割り当てた話者の仮想の位置情報に基づき、頭部伝達関数データベース181を参照して、音声データに適用する頭部伝達関数を選択する。頭部伝達関数の選択についての詳細は後述する。
【0041】
音声生成部207は、関数選択部206によって選択された頭部伝達関数を受信した音声に適用して、出力用の音声を生成する。
図5Cに示すように、音声生成部207は、受信した音声の信号に対して、左伝達関数Hleftと右伝達関数Hrightをそれぞれ適用して、左耳用の左チャンネル信号と、右耳用の右チャンネル信号を生成する。
【0042】
音声出力部208は、音声生成部207が生成した音声を出力する。具体的には、例えば、音声出力部208は、音声生成部207が生成した音声を、音声処理部170へ与える。音声処理部170は、受け付けた音声に対応する信号をスピーカ172へ与える。スピーカ172は、音声処理部170から与えられる信号を音声に変換して、端末装置10の外部へ出力する。
【0043】
(1-4.サーバ20の機能構成)
図4は、サーバ20は、通信部210と、記憶部220と、制御部230を備える。
図4においてサーバ20に含まれる各ブロックは、例えば、バス等により電気的に接続される。
【0044】
通信部210は、サーバ20が外部の装置と通信するための処理を行う。
【0045】
記憶部220は、例えば、メモリ25、及びストレージ26等により実現され、サーバ20が使用するデータ、及びプログラムを記憶する。
【0046】
制御部230は、プロセッサ29が記憶部220に記憶されるプログラムを読み込み、プログラムに含まれる命令を実行することにより実現される。制御部230は、プログラムに従って動作することにより、送受信モジュール231、連結モジュール232を備える。
【0047】
送受信モジュール231は、サーバ20が、外部の装置と通信プロトコルに従ってデータを送受信するための処理を行う。
【0048】
連結モジュール232は、複数の端末装置10から受信した音声データを連結する処理を行う。
図6Aは、ネットワーク30において通信される通信データの伝送単位を示す図である。送受信モジュール231が受信した通信データにおいて、音声データはアプリケーションデータD1内に格納されている。
図6Aに示すように、アプリケーションデータD1は、データグラムD2のペイロードに格納されており、データグラムD2は、IPパケットD3のペイロードに格納されている。また、データグラムD2はヘッダー情報H2を有しており、IPパケットD3はヘッダー情報H1を有している。
【0049】
図6Bに示すように、ユーザU2およびユーザU3から送信されるIPパケットD3は、ヘッダー情報H1と、データグラムD2を有する。データグラムD2のペイロードには、送信ユーザを識別する情報と、音声情報が含まれる。送信ユーザを示す情報は、端末装置10から送信される際に、送受信部202によって付与される仕様としてもよい。または、サーバ20がデータを受信した際に、IPパケットD3における送信元のIPアドレスおよびポート番号に基づいて、サーバ20側で送信ユーザを特定し、送信ユーザを識別する情報を付与する仕様としてもよい。
【0050】
サーバ20の連結モジュール232は、ユーザU2およびユーザU3から音声データを受信すると、宛先として指定されるユーザ(この場合はユーザU1)宛てのデータグラムD2を特定して、特定されたデータグラムにおける音声データ(音声V2およびV3)を連結する。ここで、
図6Bに示すように、送信ユーザを識別する情報も、音声データに付随して連結される。連結モジュール232は、連結された音声データを送信用のデータグラムD2に格納する。
【0051】
ここで、連結モジュール232は、所定の時間内に複数の端末装置から受信した音声データを、連結対象の音声データとする仕様としてもよい。一例として、所定の時間としては、20ミリ秒以内としてもよい。このようにすることで、ほぼ同じタイミングで受信した音声データを連結して1つのデータグラムのペイロードに格納して送信することができる。
【0052】
(1-5.データ構造)
図7を参照し、システム1で使用されるデータベースのデータ構造を説明する。なお、以下に説明するデータ構造はあくまでも一例であり、他のデータベースおよびデータ項目の保有を除外するものではない。
【0053】
図7は、端末装置10の記憶部180が記憶する頭部伝達関数データベース181のデータ構造の一例を示す図である。
【0054】
図7に示すように、頭部伝達関数データベース181のレコードは、項目「関数ID」と、項目「鉛直角θ」と、項目「水平角φ」と、項目「左伝達関数」と、項目「右伝達関数」等を含む。
【0055】
項目「関数ID」は、頭部伝達関数を識別するための識別情報であり、頭部伝達関数データベース181におけるレコードを一意に特定するための主キーである
【0056】
項目「鉛直角θ」は、聴取者の位置を基準とした音源の位置に対する鉛直角を意味する(
図5A参照)。一例として、鉛直角θは、0度~350度までを10度間隔で保持する仕様としてもよい。すなわち、
図7において、θ1=0度、θ2=10度として、θ36=350度までのデータを保持する仕様としてもよい。ただし、この態様に限定されることはなく、より細かい間隔(例えば5度)、または粗い間隔(例えば20度)で保持してもよい。
【0057】
項目「水平角φ」は、聴取者の位置を基準とした音源の位置に対する水平角を意味する(
図5A参照)。一例として、水平角φは、0度~350度までを10度間隔で保持する仕様としてもよい。すなわち、
図7において、φ1=0度、φ2=10度として、φ36=350度までのデータを保持する仕様としてもよい。ただし、この態様に限定されることはなく、より細かい間隔(例えば5度)、または粗い間隔(例えば20度)で保持してもよい。
【0058】
項目「左伝達関数」は、音源から出力された音声が聴取者の左耳に到達するまでの変化の特性を表す関数であり、鉛直角θと水平角φを変数として保持されている。すなわち、ある鉛直角θと水平角φが求まると、項目「左伝達関数」を参照することで、対応する左伝達関数Hleft(θ、φ)を求めることができる。
【0059】
項目「右伝達関数」は、音源から出力された音声が聴取者の右耳に到達するまでの変化の特性を表す関数であり、鉛直角θと水平角φを変数として保持されている。すなわち、ある鉛直角θと水平角φが求まると、項目「右伝達関数」を参照することで、対応する右伝達関数Hright(θ、φ)を求めることができる。
【0060】
頭部伝達関数データベース181は、ユーザが端末装置10に本機能を提供するアプリケーションをインストールする際に、記憶部180に記憶されることが好ましい。また、頭部伝達関数データベース181は、必要に応じて、例えば当該アプリケーションのアップデートのタイミングで、レコードの追加または変更が可能な仕様としてもよい。
【0061】
(1-6.処理の流れ)
以下、
図8および
図9を参照して、システム1の処理の一例を説明する。なお、以下において、システム1はユーザU1が使用する端末装置10Aと、ユーザU2が使用する端末装置10Bと、ユーザU3が使用する端末装置10Cの3台を備える構成で説明するが、この例に限定されることはない。
【0062】
図8のステップS111において、端末装置10Aの音声受付部204は、ボイスチャットを行うユーザU1の音声を受け付けて、圧縮音声に変換する。ステップS131において、端末装置10Bの音声受付部204は、ボイスチャットを行うユーザU2の音声を受け付けて、圧縮音声に変換する。ステップS141において、端末装置10Cの音声受付部204は、ボイスチャットを行うユーザU3の音声を受け付けて、圧縮音声に変換する。
【0063】
ステップS112において、端末装置10Aの送受信部202は、ユーザU1から受け付けて圧縮した圧縮音声をサーバ20へ送信する。サーバ20の送受信モジュール231は、端末装置10Aが送信したユーザU1の音声を受信する。
【0064】
ステップS132において、端末装置10Bの送受信部202は、ユーザU2から受け付けて圧縮した圧縮音声をサーバ20へ送信する。サーバ20の送受信モジュール231は、端末装置10Bが送信したユーザU2の音声を受信する。
【0065】
ステップS142において、端末装置10Cの送受信部202は、ユーザU3から受け付けて圧縮した圧縮音声をサーバ20へ送信する。サーバ20の送受信モジュール231は、端末装置10Cが送信したユーザU3の音声を受信する。
【0066】
ステップS124において、連結モジュール232は、複数の端末装置10から受信した音声データを連結する処理を行う。具体的には、連結モジュール232は、受信したデータについて、宛先として指定されるユーザ宛てのデータグラムを特定して、特定されたデータグラムにおける音声データを連結する。連結モジュール232は、連結した音声データを送信用のデータグラムに格納する。
【0067】
ステップS125において、サーバ20の送受信モジュール231は、連結された音声を端末装置10A~10Cへ送信する。ステップS113において、端末装置10Aの送受信部202は、連結された音声を受信する。ステップS133において、端末装置10Bの送受信部202は、連結された音声を受信する。ステップS143において、端末装置10Cの送受信部202は、連結された音声を受信する。
【0068】
ステップS200において、端末装置10A~10Cは、音声生成処理を実行する。音声生成処理(S200)では、
図9に示すとおり、ステップS210~ステップS230が実行される。
【0069】
ステップ210において、端末装置10A~10Cの位置割当部205は、サーバ20から受信した通信データのデータグラム内の連結された音声データの話者それぞれに仮想の位置情報を割り当てる。
図10に示す例では、位置割当部205は、ユーザU1~ユーザU3が、仮想のテーブルT1をはさんで座っている想定での位置情報を割り当てる。具体的には、所定の原点Оに対して、ユーザU1に位置(x1,y1)、ユーザU2に位置(x2,y2)、ユーザU3に位置(x3,y3)を割り当てる。このように、ユーザに対して二次元空間での位置を割り当てることにより、後続の音声処理(S220およびS230)を簡略にすることができ、処理速度が向上する。
【0070】
ステップS220において、端末装置10A~10Cの関数選択部206は、位置割当部205が割り当てたユーザU1~ユーザU3の位置情報に基づき、頭部伝達関数データベース181を参照して、話者それぞれに対応する音声データに適用する頭部伝達関数を選択する。
【0071】
具体的には、例えばユーザU1が発した音声をユーザU2が使用する端末装置10Bで出力させるために、関数選択部206は、ユーザU1の位置(x1,y1)とユーザU2の位置(x2,y2)から、聴取者U2の位置(x2,y2)を基準にした話者(音源)U1の位置(x1,y1)の水平角φ21を算出する。そして、関数選択部206は、頭部伝達関数データベース181を参照して、水平角φ21に最も近い「水平角φ」を持つレコードを特定し、当該レコードにおける項目「左伝達関数Hleft」を左伝達関数Hleft(φ21)として選択し、項目「右伝達関数Hright」を右伝達関数Hright(φ21)として選択する。このように、
図10に示す例においては、ユーザU1~ユーザU3に二次元空間(すなわち、同一平面上)での位置を割り当てる仕様となっているため、鉛直角θは定数となり算出する必要がなくなる。この場合、頭部伝達関数データベース181では、水平角φを変数にして左伝達関数Hleftおよび右伝達関数Hrightを規定すればよい。
【0072】
また、例えばユーザU1が発した音声をユーザU3が使用する端末装置10Cで出力させるために、関数選択部206は、ユーザU1の位置(x1,y1)とユーザU3の位置(x3,y3)から、聴取者U3の位置(x3,y3)を基準にした話者(音源)U1の位置(x1,y1)の水平角φ31を算出する。そして、関数選択部206は、頭部伝達関数データベース181を参照して、水平角φ31に最も近い「水平角φ」を持つレコードを特定し、当該レコードにおける項目「左伝達関数Hleft」を左伝達関数Hleft(φ31)として選択し、項目「右伝達関数Hright」を右伝達関数Hright(φ31)として選択する。このようにして、ユーザU2が発した音声およびユーザU3が発した音声に対しても同様の処理を行う。
【0073】
ステップS230において、端末装置10A~10Cの音声生成部207は、関数選択部206によって選択された頭部伝達関数を受信した音声に適用して、出力用の音声を生成する。
【0074】
具体的には、例えばユーザU1が発した音声をユーザU2が使用する端末装置10Bで出力させるために、サーバ20から受信した音声に対して、左伝達関数Hleft(θ21,φ21)と右伝達関数Hright(θ21,φ21)を適用して、出力用の音声を生成する。また、ユーザU1が発した音声をユーザU3が使用する端末装置10Cで出力させるために、端末装置10から受信した音声に対して、左伝達関数Hleft(θ31,φ31)と右伝達関数Hright(θ31,φ31)を適用して、出力用の音声を生成する。
【0075】
図8に戻って説明を続ける。音声生成処理(ステップS200)が終了すると、ステップS114において、端末装置10Aの音声出力部208は、生成された音声をスピーカ172から出力する。ステップS134において、端末装置10Bの音声出力部208は、生成された音声をスピーカ172から出力する。ステップS144において、端末装置10Cの音声出力部208は、生成された音声をスピーカ172から出力する。
【0076】
(1-7.小括)
以上のようにして、本実施形態におけるシステム1は、複数の端末装置10と、サーバ20とを備え、複数の端末装置10とサーバ20は、SFU(Selective Forwarding Unit)方式で通信し、端末装置10は、ユーザから受け付けた音声データをサーバ20へ送信し、サーバ20は、複数の端末装置10から受信した音声データを連結し、連結した音声データを端末装置10へ送信する。
【0077】
このような構成とすることにより、音声データの通信において、ミキシング処理を行うことなく、データ通信量を抑えることが可能となる。
【0078】
具体的には、サーバ20は、複数の端末装置10から所定の時間内に受信した音声データについて、宛先として指定されるユーザ宛ての複数のデータグラムを特定し、特定された複数のデータグラムにおける音声データを連結し、連結された音声データを送信用のデータグラムに格納して、宛先として指定されるユーザの端末装置10へ送信する仕様としてもよい。
【0079】
このような構成とすることにより、通信データにおけるデータグラムのヘッダーに関するオーバーヘッド(付加的な処理)を低減することができる。また、データグラムにおけるヘッダーを省くことができ、通信リソースを節約して効率よく通信を行うことが可能となる。
【0080】
また、端末装置10は、サーバ20から受信したデータのデータグラム内に格納された音声データについて、当該音声データにおける話者それぞれに位置情報を割り当て、音声データに、割り当てられた位置情報に基づいた頭部伝達関数を適用した音声データを生成し、生成された音声データを聴取者に対して出力する仕様としてもよい。すなわち、本実施形態では、受信した音声データに対するミキシング処理をおこなっていないため、連結した音声データからそれぞれのユーザに対応する音声データを取り出して、頭部伝達関数を適用することが可能となっている。
【0081】
このような構成とすることにより、ボイスチャットなどの音声での同期コミュニケーションにおいて、話者の周りの空間的な広がりを聴取者が感知できるような、反響成分および/または残響成分を含んだ音声を出力することが可能となり、話者の分離度が向上する。すなわち、いわゆるカクテルパーティ効果(音声の選択的聴取効果)が発生して、複数の話者が同時に発話していても聞き分けることが容易となる。また、複数の話者が発話することで、聴取者は話者の周りの空間を認識し、コミュニケーションの雰囲気を感じ取ることができるようになる。これにより、音声での同期コミュニケーションにおいて、ユーザ間のコミュニケーションを円滑に行うことが可能となる。
【0082】
<2.第2実施形態>
図11~
図13を参照し、本開示の第2実施形態におけるシステム1を説明する。第2実施形態では、端末装置10は話者に対応付けられた位置情報を取得する点が第1実施形態と異なる。以下、上記実施形態との相違点を中心に説明する。
【0083】
(2-1.端末装置10の機能構成)
図11は、第2実施形態における端末装置10の機能構成の例を示すブロック図である。
図11に示すように、端末装置10の制御部200は、第1実施形態の構成に加えて、コンテンツ提供部209をさらに備える。
【0084】
コンテンツ提供部209は、一例として、ゲームなどのコンテンツを提供する。より具体的には、記憶部180に記憶されているプログラムおよびデータを用いて、複数のユーザがそれぞれの端末装置10で音声での同期コミュニケーションを行いながらプレイ可能なオンラインゲームを提供する。
【0085】
コンテンツ提供部209が提供するゲームでは、仮想空間内をユーザに対応したアバターが行動することによりゲームが進行する。アバターとは、ユーザの分身としての役割を備える仮想のキャラクタを意味する。ユーザは、仮想空間内でアバターを操作することにより、ゲームにおいて求められているミッション(またはクエスト)を攻略したり、他のユーザに対応したアバターを介して、他のユーザとコミュニケーションをとったりすることが可能となっている。
【0086】
コンテンツ提供部209は、音声受付部204がユーザの音声を受け付けたタイミングで、当該ユーザに対応づけられたアバターと他のアバターの位置情報を位置割当部205に与える。
【0087】
位置割当部205は、一例として、コンテンツ提供部209から取得したアバターの仮想空間での位置情報を、ユーザの位置情報として割り当てる。また、位置割当部205は、他の例として、コンテンツ提供部209から取得したアバターの仮想空間での位置情報とは異なる位置情報を割り当てる。位置割当部205の処理の詳細は後述する。
【0088】
(2-2.処理の流れ)
図12を参照し、第2実施形態における音声生成処理(ステップS200)の流れを説明する。なお、第1実施形態と同様の処理については説明を繰り返さない。
【0089】
第2実施形態における音声生成処理(ステップS200)では、ステップS205~ステップS230が実行される。ステップS205において、位置割当部205は、コンテンツ提供部209からアバターの仮想空間での位置情報を取得する。
【0090】
図13Aは、端末装置10のコンテンツ提供部209が提供するゲームにおける仮想空間Wを示す図である。位置割当部205は、ユーザU1に対応するアバターA1の仮想空間Wにおける位置(X1,Y1,Z1)と、ユーザU2に対応するアバターA2の仮想空間Wにおける位置(X2,Y2,Z2)と、ユーザU3に対応するアバターA3の仮想空間Wにおける位置(X3,Y3,Z3)を取得する。
【0091】
ステップS210において、位置割当部205は、一例として、コンテンツ提供部209から取得したアバターの仮想空間での位置情報を、ユーザの位置情報として割り当てる。すなわち、アバターA1の位置(X1,Y1,Z1)をユーザU1の位置情報として割り当て、アバターA2の位置(X2,Y2,Z2)をユーザU1の位置情報として割り当て、アバターA3の位置(X3,Y3,Z3)をユーザU3の位置情報として割り当てる。ステップS220において、関数選択部206は、当該割り当てられた位置情報に基づいて、頭部伝達関数を選択する。
【0092】
このような構成とすることで、複数のユーザでゲームをプレイしながらボイスチャットでコミュニケーションをとる場合において、仮想空間内のアバター同士の相対位置に応じて他のユーザが発した音声が聞こえてくることとなり、ゲームプレイにおける臨場感を向上させることができる。なお、この場合において、端末装置10の音声出力部208は、音声を出力させる際に、仮想空間における前記アバター同士の距離に応じて、出力される音声の大きさを調整する仕様としてもよい。このようにすることで、アバター同士の方向だけでなく距離感も反映した音声を出力することができ、ゲームプレイにおける臨場感を一層向上させることができる。
【0093】
または、位置割当部205は、他の例として、コンテンツ提供部209から取得したアバターの仮想空間での位置情報とは異なる位置情報をユーザに割り当ててもよい。例えば、
図13Bに示すように、仮想のテーブルT2を挟むようにユーザU1~U3が配置されており、所定の原点Оを基準として位置(x1,y1,z1)をユーザU1の位置情報として割り当て、位置(x2,y2,z2)をユーザU2の位置情報として割り当て、位置(x3,y3,z3)をユーザU3の位置情報として割り当ててもよい。ステップS220において、関数選択部206は、当該割り当てられた位置情報に基づいて、頭部伝達関数を選択する。
【0094】
このような構成とすることで、複数のユーザでゲームをプレイしながらボイスチャットでコミュニケーションをとる場合において、ユーザの位置情報が仮想空間内におけるアバターの位置とは無関係に設定され、当該設定されたユーザの位置情報に応じた音声を聴き取ることができる。すなわち、特定のユーザとの相対位置を常に固定することが可能となり、どのユーザが発言しているかを容易に識別することが可能となる。
【0095】
(2-3.小括)
このようにして、第2実施形態では、端末装置10はコンテンツ提供部209を備え、コンテンツ提供部209は、提供するゲーム等のコンテンツにおけるアバターの仮想空間内での位置情報を位置割当部205に与える。位置割当部205は、一例として、コンテンツ提供部209から取得したアバターの仮想空間での位置情報を、ユーザの位置情報として割り当てる。このようにすることで、複数のユーザでゲームをプレイしながらボイスチャットでコミュニケーションをとる場合において、仮想空間内のアバター同士の相対位置に応じて他のユーザが発した音声が聞こえてくることとなり、ゲームプレイにおける臨場感を向上させることができる。
【0096】
なお、本実施形態において、コンテンツ提供部209は、当該コンテンツにおいて同期をとるためのタイムスロット情報を管理しており、音声受付部204がユーザの音声を受け付けたタイミングで、当該タイムスロット情報を音声受付部204に与える仕様としてもよい。この場合、送受信部202は、当該タイムスロット情報を、音声データと対応づけてデータグラム内に格納してサーバ20へ送信してもよい。
【0097】
この場合、サーバ20の連結モジュール232は、連結された音声データのそれぞれに対応づけてタイムスロット情報を送信用のデータグラムに格納し、端末装置10へ送信する。端末装置10の音声出力部208は、受信した音声データそれぞれに対応づけられたタイムスロット情報に基づいて、当該音声データを出力させる。このような仕様とすることにより、端末装置10がユーザから音声を受け付けたタイミングに基づいて音声が出力されることとなり、ボイスチャットでのコミュニケーションにおけるリアルタイム性をより向上させることができる。
【0098】
また、他の例として、位置割当部205は、コンテンツ提供部209から取得したアバターの仮想空間での位置情報とは異なる位置情報をユーザに割り当てる。このようにすることで、特定のユーザとの相対位置を常に固定することが可能となり、どのユーザが発言しているかを容易に識別することが可能となる。
【0099】
なお、位置割当部205が、コンテンツ提供部209から取得したアバターの仮想空間での位置情報をユーザの位置情報として割り当てるか否かは、ユーザが適宜設定可能な仕様としてもよい。また、位置割当部205が、コンテンツ提供部209から取得したアバターの仮想空間での位置情報と異なる位置情報をユーザに割り当てる場合には、他のユーザとの相対位置をユーザが適宜設定可能な仕様としてもよい。
【0100】
<3 他の実施形態>
以上、本発明における実施形態およびその変形例について説明したが、本開示の適用は上述の内容に限定されるものではない。
【0101】
例えば、上記実施形態では、頭部伝達関数は鉛直角θと水平角φを変数として保持していたが、この仕様に限定されることはない。例えば、音源と聴取者の距離をさらに変数として保持する仕様としてもよい。または、極座標以外の座標系(例えば直交座標)における変数を保持してもよい。
【0102】
また、上記実施形態では、ボイスチャットを想定しているため、話者と聴取者が同じとなっているが、この態様に限定されることはなく、話者と聴取者が異なってもよい。一例として、ポッドキャストのようなインターネットを利用した音声配信において、複数の話者が参加する場合に、本開示の技術的思想を適用してもよい。この場合、位置割当部205は、複数の話者それぞれに位置情報を割り当てて、関数選択部206は、所定の場所(例えば座標系における原点)に聴取者がいるとして頭部伝達関数を選択する仕様としてもよい。また、eスポーツ(Electronic Sports)の観戦などにおいて、観客が話者であり、プレイヤーが聴取者である仕様も想定される。この場合、話者としての位置を観客としてのユーザが適宜設定可能な仕様とすることで、プレイヤーに対して声援が届く位置で観戦するか否かを観客としてのユーザが選択可能な仕様としてもよい。
【0103】
また、上記実施形態では、話者としてのユーザが存在する音声での同期コミュニケーションを想定しているが、この態様に限定されることはない。例えば、話者として対応するユーザが存在しない仮想のキャラクタが複数存在し、当該キャラクタが発する音声は、コンピュータが合成した音声であってもよい。この場合、複数のキャラクタの位置情報の設定をユーザから受け付ける仕様としてもよい。また、キャラクタが発する音声の生成にあたっては、規則合成、波形接続型音声合成、統計的パラメトリック音声合成といった周知の音声合成技術を利用してもよい。
【0104】
また上記実施形態では、位置割当部205は、受信した音声に対応づけられたユーザに対して、仮想の位置情報を割り当てているが、この仕様に限定されることはない。例えば、オンラインでのビデオミーティングなどの動画を伴う同期コミュニケーションにおいて、当該動画に映るユーザ同士の位置情報を割り当てる仕様としてもよい。または、位置割当部205は、ボイスチャットを行うにあたり予めユーザが設定した位置情報を割り当てる仕様としてもよい。
【0105】
また上記実施形態において、音声データと合わせて、アバターの口の動きを再現するためのリップシンク情報をサーバ20へ送信する仕様としてもよい。この場合、ユーザから音声データを受け付けた端末装置10において、当該音声データの解析を行い、口の動きに関するリップシンク情報を生成する。具体的には、リップシンク情報には、入力音声に対する口形の幅や高さに関する情報、および/または入力音声に含まれる各音素の割合に関する情報が含まれ得る。また、音声データと合わせて、音声に対応する字幕情報をサーバ20へ送信する仕様としてもよい。この場合、ユーザから音声データを受け付けた端末装置10において、当該音声データの解析を行い、字幕情報を生成する。音声データの解析に基づくリップシンク情報の生成、または字幕情報の生成については、周知の技術を用いて行うことができる。サーバ20は、受信したリップシンク情報または字幕情報を端末装置10へ送信し、端末装置10において、音声データの出力に合わせてアバターの口の動きが再現され、または字幕が表示される。
【0106】
また、上記実施形態では、頭部伝達関数についての情報は、端末装置10の記憶部180に保持されているが、この仕様に限定されることはない。例えば、サーバ20の記憶部220に保持されていてもよいし、外付けのハードディスクなどに保持させておき、必要に応じて参照する仕様としてもよい。
【0107】
また、通信回線を介した所定情報の共有は、主にインターネットなどのWANを介して行われるが、情報処理装置間では、WANを介さずにBluetooth(登録商標)等の近距離の無線通信、及び赤外線通信等のみを介して行われてもよい。
【0108】
また、上記実施形態では、各機能を端末装置10またはサーバ20が備える態様の一例について説明したが、この形態に限定されることはなく、一部または全部の機能について上記実施形態と異なる態様で端末装置10、サーバ20、又は端末装置10とサーバ20の両方が備える構成としてもよい。
【0109】
また、上記実施形態において端末装置10に実行させるものとして記載されていた各ステップをサーバ20に実行させてもよく、サーバ20に実行させるものとして記載されていた各ステップを端末装置10に実行させてもよい。
【0110】
さらに、本発明は、上述した端末装置10またはサーバ20が備える機能を情報処理装置に実行させるプログラムとして実現してもよいし、当該プログラムを格納する、コンピュータ読み取り可能な非一時的な記録媒体として実現してもよい。
【0111】
<付記>
以上の各実施形態で説明した事項を以下に付記する。
(付記1)
複数の端末装置と、サーバとを備え、複数のユーザ間での音声コミュニケーションを実行するシステムであって、前記複数の端末装置と、前記サーバは、SFU(Selective Forwarding Unit)方式で通信し、前記端末装置は、ユーザから受け付けた音声データを前記サーバへ送信し、前記サーバは、前記複数の端末装置から受信した音声データを連結し、連結した音声データを前記端末装置へ送信する、システム。
(付記2)
前記サーバは、前記複数の端末装置から受信した音声データについて、宛先として指定されるユーザ宛ての複数のセグメントを特定し、特定された前記複数のセグメントにおける音声データを連結し、連結された音声データをセグメントに格納して、前記宛先として指定されるユーザの端末装置へ送信する、付記1に記載のシステム。
(付記3)
前記サーバは、所定の時間内に前記複数の端末装置から受信した音声データを、連結対象の音声データとする、付記2に記載のシステム。
(付記4)
前記端末装置は、前記サーバから受信したデータのセグメント内に格納された音声データについて、当該音声データにおける話者それぞれに位置情報を割り当て、前記音声データに、割り当てられた前記位置情報に基づいた頭部伝達関数を適用した音声データを生成し、生成された音声データを聴取者に対して出力する、付記1に記載のシステム。
(付記5)
前記端末装置は、前記話者それぞれに仮想の位置に関する位置情報を割り当てる、付記4に記載のプログラム。
(付記6)
前記端末装置と、前記サーバは、UDP(User Datagram Protocol)プロトコルで通信を行い、前記サーバは、前記連結した音声データをデータグラムに格納する、付記1~付記5のいずれか1項に記載のプログラム。
(付記7)
前記端末装置は、受け付けたユーザの音声を圧縮音声に変換して、前記サーバへ送信する、付記1~付記5のいずれか1項に記載のプログラム。
【0112】
以上、本開示のいくつかの実施形態を説明したが、これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
【符号の説明】
【0113】
1:システム、10:端末装置、13:入力装置、14:出力装置、15:メモリ、16:ストレージ、19:プロセッサ、20:サーバ、25:メモリ、26:ストレージ、29:プロセッサ、30:ネットワーク、131:キーボード、132:マウス、141:ディスプレイ、150:通信部、170:音声処理部、171:マイク、172:スピーカ、180:記憶部、181:頭部伝達関数データベース、200:制御部、201:操作受付部、202:送受信部、203:表示制御部、204:音声受付部、205:位置割当部、206:関数選択部、207:音声生成部、208:音声出力部、209:コンテンツ提供部、210:通信部、220:記憶部、230:制御部、231:送受信モジュール、232:連結モジュール。