以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の音声処理装置の例を示す図である。音声処理装置1は、聴取者の周囲に配置された複数の仮想音源からの音声信号を左右2チャネルの音声信号に合成する。仮想音源とは、音声を表現するために聴取者の周囲の任意の位置に仮想的に配置される音源である。なお、各仮想音源の位置は、例えば、ユーザの入力操作によってあらかじめ設定される。
音声処理装置1は、スピーカ配置部2および音声合成部3を有する。スピーカ配置部2および音声合成部3の処理は、例えば、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサ、あるいはASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのその他の電子回路、あるいはプロセッサと他の電子回路との組み合わせによって実現される。
スピーカ配置部2は、聴取者を中心とした所定の円周上に、仮想音源の数より少ない複数の仮想スピーカを動的に配置する。仮想スピーカとは、音場処理により実際には存在しないスピーカの配置位置から音が聞こえてくるようにするものをいう。なお、仮想スピーカも仮想音源の一種であるが、本実施の形態では、後述するように各仮想スピーカに分配される音声信号の発生源を「仮想音源」と呼び、スピーカ配置部2によって動的に配置される仮想音源を「仮想スピーカ」と呼ぶこととする。
音声合成部3は、複数の仮想音源それぞれからの音声信号を、複数の仮想スピーカのうち仮想音源毎に選択される1以上の仮想スピーカに分配する。音声合成部3は、各仮想スピーカの位置に対応するHRTF(頭部伝達関数)を用いて、各仮想スピーカに分配された音声信号を左右2チャネルの音声信号に合成する。
この音声合成部3では、仮想スピーカ毎に、仮想スピーカに分配された音声信号と仮想スピーカの位置に対応するHRTFとを用いた畳み込み演算が行われる。これにより、仮想スピーカの位置に、この仮想スピーカに分配された音声の音像が定位される。ここで、仮想スピーカの数は仮想音源の数より少ないので、各仮想音源の位置に対応するHRTFを用いて畳み込み演算が行われる場合と比較して、演算の負荷が軽減される。また、例えば、仮想スピーカの数を仮想音源の数より少ない一定数とすることで、仮想音源の数によらず畳み込み演算の回数を一定に抑えることができる。
また、スピーカ配置部2は、次のような手順で複数の仮想スピーカを配置する。スピーカ配置部2は、聴取者から見て前述の円周に沿った方向に隣り合う2つの仮想音源間の、聴取者を中心としてこの円周に沿った方向の角度を算出する。スピーカ配置部2は、聴取者を中心としてこの円周に沿った方向の範囲から、算出された角度がしきい値以上となる仮想音源同士に挟まれ、かつこれら各仮想音源の方向上の位置を含まない第1の範囲を判別する。そして、スピーカ配置部2は、聴取者を中心として上記の円周に沿った方向の範囲のうち、第1の範囲を除く第2の範囲に上記の複数の仮想スピーカを配置し、第1の範囲には仮想スピーカを配置しない。
これにより、仮想スピーカと聴取者とを結ぶ直線と、上記の円周に沿った方向に対して仮想スピーカに隣り合う仮想音源と聴取者とを結ぶ直線との角度を減らすことができる。その結果、各仮想音源の音像の定位感を向上させることができる。
ここで、図1に示すように聴取者4の周囲に4つの仮想音源5a〜5dが配置された場合において、3つの仮想スピーカ6a〜6cを配置する例について説明する。
スピーカ配置部2は、聴取者4および仮想音源5a〜5dの各位置に基づいて、角度θ1〜θ4を算出する。なお、ここでは、スピーカ配置部2は、聴取者4を中心とした円周7に沿って右回り方向の角度を算出するものとする。角度θ1は、聴取者4および仮想音源5aを結ぶ直線と、聴取者4および仮想音源5bを結ぶ直線との間の角度である。角度θ2は、聴取者4および仮想音源5bを結ぶ直線と、聴取者4および仮想音源5cを結ぶ直線との間の角度である。角度θ3は、聴取者4および仮想音源5cを結ぶ直線と、聴取者4および仮想音源5dを結ぶ直線との間の角度である。角度θ4は、聴取者4および仮想音源5dを結ぶ直線と、聴取者4および仮想音源5aを結ぶ直線との間の角度である。
ここで、角度θ1,θ2,θ3は所定の角度未満であり、角度θ4は所定の角度以上であったとする。所定の角度は、例えば、360°を配置するスピーカの数で割った数である。
この場合、スピーカ配置部2は、円周7上において、角度θ4である角度の範囲において隣り合う仮想音源5dおよび仮想音源5aに挟まれ、かつ聴取者4から見た仮想音源5a,5dの方向を含まない範囲を、前述の第1の範囲と判別する。この第1の範囲には、聴取者4と仮想音源5a,5dとをそれぞれ結ぶ線分が含まれない。スピーカ配置部2は、この第1の範囲には仮想スピーカを配置しない。一方、スピーカ配置部2は、円周7上において、第1の範囲を除く第2の範囲(すなわち、角度θ1,θ2,θ3の範囲)に仮想スピーカ6a,6b,6cを配置する。この第2の範囲には、聴取者4と仮想音源5a,5dとをそれぞれ結ぶ線分が含まれる。
これにより、仮想スピーカと聴取者とを結ぶ直線と、円周7に沿った方向に対して仮想スピーカに隣り合う仮想音源と聴取者とを結ぶ直線との角度を減らすことができる。ここで、仮想音源が出力する音声信号を仮想スピーカに分配する際、仮想スピーカと聴取者とを結ぶ直線と、仮想スピーカに隣り合う仮想音源と聴取者とを結ぶ直線との角度が小さい方が、仮想音源の音像の定位感が向上する。これは、仮想音源の位置に対応する本来使用すべきHRTFと、仮想スピーカの位置に対応する実際の演算で使用されるHRTFとの誤差が小さくなるからである。よって、複数の仮想音源の音像の定位感を向上させることができる。
[第2の実施の形態]
図2は、第2の実施の形態の音声処理システムの例を示す図である。
図2に示す音声処理システムは、ユーザに音声情報を提供するための制御処理を行う音声処理装置100を備える。音声処理装置100には、無線信号を送受信するための複数のアクセスポイント21a〜21dが、ネットワーク10を介して接続されている。ネットワーク10は、例えばLAN(Local Area Network)である。この場合、アクセスポイント21a〜21dは、無線LANアクセスポイントである。
一方、ユーザは、ユーザ端末200およびヘッドホン12を携帯する。ユーザ端末200は、アクセスポイント21a〜21dとの間で無線通信することが可能になっている。
音声処理装置100は、管理者などにより仮想的に配置された音源が出力する音声信号を合成し、合成された音声信号を、アクセスポイント21a〜21dの少なくとも1つを通じて、ユーザ端末200に送信する。以下、「音源」とは、あらかじめユーザの周辺の環境に対応する仮想空間に配置された仮想音源を示すものとする。
また、音声処理装置100は、ユーザ端末200の位置を検出する機能を備える。本実施の形態では例として、音声処理装置100は、ユーザ端末200から送信された信号を、アクセスポイント21a〜21dから受信し、これらの受信信号に基づいてユーザ端末200の位置を検出する。例えば、音声処理装置100は、ユーザ端末200から送信された信号をアクセスポイント21a〜21dを通じて受信し、それぞれのアクセスポイントにおける信号の受信時刻の差、あるいは受信電波強度の差に基づいて、三角法を用いてユーザ端末200の位置を検出する。この方法が用いられる場合、位置検出に使用されるアクセスポイントは、少なくとも3つ設置される。
ヘッドホン12は、アナログ音声信号を内蔵されているスピーカを用いて音波に変換する装置である。ヘッドホン12は、ユーザ端末200から出力されたアナログ音声信号を再生出力するドライバユニット(図示せず)を備える。また、ヘッドホン12には、センサ11が搭載されている。
センサ11は、ユーザが向いている方向を検出する。以下、センサ11によって検出される方向を“視線方向”と呼ぶ。センサ11は、例えば、加速度センサ、ジャイロセンサおよび地磁気センサを備える。なお、センサ11は、ヘッドホン12とは別の位置に設けられてもよく、また、頭部以外の位置に設けられてもよい。ただし、センサ11の目的は、ユーザがどこを見ているかを検出することである。このため、センサ11は、ユーザの頭部に設けられることが望ましい。また、センサ11によって検出される方向は、水平面に沿った2次元方向であっても、あるいは鉛直方向を含めた3次元方向であってもよい。
ユーザ端末200は、音声処理装置100から受信した音声信号をアナログ変換し、変換したアナログ音声信号をヘッドホン12のドライバユニットに出力する。また、ユーザ端末200は、センサ11による検出結果を基にユーザの視線方向を演算し、算出された視線方向を、アクセスポイント21a〜21dの少なくとも1つを通じて音声処理装置100に送信する。
図3は、音声処理装置のハードウェア構成例を示す図である。音声処理装置100は、プロセッサ101、RAM(Random Access Memory)102、HDD(Hard Disk Drive)103、画像信号処理部104、入力信号処理部105、ディスクドライブ106および通信インタフェース107を有する。上記ユニットは、音声処理装置100内でバス108に接続されている。
プロセッサ101は、プログラムの命令を実行する演算器を含むプロセッサである。プロセッサ101は、HDD103に記憶されているプログラムやデータの少なくとも一部をRAM102にロードしてプログラムを実行する。なお、プロセッサ101は複数のプロセッサコアを備えてもよい。また、音声処理装置100は、複数のプロセッサを備えてもよい。また、音声処理装置100は、複数のプロセッサまたは複数のプロセッサコアを用いて並列処理を行ってもよい。また、2以上のプロセッサの集合、FPGAやASICなどの専用回路、2以上の専用回路の集合、プロセッサと専用回路の組み合わせなどを“プロセッサ”と呼んでもよい。
RAM102は、プロセッサ101が実行するプログラムやプログラムから参照されるデータを一時的に記憶する揮発性メモリである。なお、音声処理装置100は、RAM以外の種類のメモリを備えてもよく、複数個の揮発性メモリを備えてもよい。
HDD103は、OS(Operating System)やファームウェアやアプリケーションソフトウェアなどのソフトウェアのプログラムおよびデータを記憶する不揮発性の記憶装置である。なお、音声処理装置100は、フラッシュメモリなどの他の種類の記憶装置を備えてもよく、複数個の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、プロセッサ101からの命令に従って、音声処理装置100に接続されたディスプレイ13に画像を出力する。ディスプレイ13としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部105は、音声処理装置100に接続された入力デバイス14から入力信号を取得し、プロセッサ101に通知する。入力デバイス14としては、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
ディスクドライブ106は、記録媒体15に記録されたプログラムやデータを読み取る駆動装置である。記録媒体15として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。ディスクドライブ106は、プロセッサ101からの命令に従って、記録媒体15から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、ネットワーク10を通じて他の装置(例えば、ユーザ端末200)との間でデータを送受信する。通信インタフェース107は、受信信号の復調・復号や送信信号の符号化・変調などを行う。
なお、音声処理装置100はディスクドライブ106を備えていなくてもよく、専ら他の情報処理装置からアクセスされる場合には、画像信号処理部104や入力信号処理部105を備えていなくてもよい。また、ディスプレイ13や入力デバイス14は、音声処理装置100の筐体と一体に形成されていてもよい。
図4は、ユーザ端末のハードウェア構成例を示す図である。ユーザ端末200は、プロセッサ201、RAM202、フラッシュメモリ203、ディスプレイ204、入力部205、入力インタフェース206、出力インタフェース207および無線インタフェース208を有する。上記ユニットは、ユーザ端末200内でバス209に接続されている。
プロセッサ201は、前述のプロセッサ101と同様に、プログラムの命令を実行する演算器を含むプロセッサである。RAM202は、前述のRAM102と同様に、プロセッサ201が実行するプログラムやデータを一時的に記憶する揮発性メモリである。
フラッシュメモリ203は、OSやファームウェアやアプリケーションソフトウェアなどのプログラムおよびデータを記憶する不揮発性の記憶装置である。なお、ユーザ端末200は、HDDなどの他の種類の記憶装置を備えてもよく、複数個の不揮発性の記憶装置を備えてもよい。
ディスプレイ204は、プロセッサ201からの命令に従って画像を表示する。ディスプレイ204としては、液晶ディスプレイ(LCD:Liquid Crystal Display)や有機EL(Electro Luminescence)ディスプレイなどを用いることができる。
入力部205は、ユーザの入力操作を検出して入力信号としてプロセッサ201に通知する。入力操作には、タッチパネルをタッチペンなどのポインティングデバイスまたはユーザの指などで操作するタッチ操作や、複数の入力キーを押下する操作などがあり、いずれの操作を採用してもよい。
入力インタフェース206は、センサ11と接続している。センサ11は、ヘッドホン12に固定されており、ユーザの視線方向を示す信号をデータに変換して入力インタフェース206へ出力するセンサデバイスである。入力インタフェース206との通信手段は、有線を用いてもよいし、無線を用いてもよい。入力インタフェース206は、センサ11から取得した信号をプロセッサ201に通知する。
出力インタフェース207は、ヘッドホン12に接続されており、同期フレームまたはデータフレームを含む所定チャネルの音声信号をアナログ音声信号に変換し、ヘッドホン12に出力する。
無線インタフェース208は、アクセスポイント21a〜21dとの間で無線通信する。無線インタフェース208は、受信信号の復調・復号や送信信号の符号化・変調などを行う機能を有する。
図5は、音声処理装置の機能例を示すブロック図である。音声処理装置100は、配置管理情報記憶部110、音源情報記憶部120、HRTF情報記憶部130、ユーザ情報取得部140、仮想スピーカ配置部150、音源分配部160および音声生成部170を有する。
配置管理情報記憶部110は、ユーザの状態、音源に関する情報、配置する仮想スピーカの位置に関する情報、仮想スピーカを配置する配置領域に関する情報など、仮想スピーカの配置を管理するための情報を一時的に記憶する。仮想スピーカとは、ユーザを中心とした所定の円周上に仮想的に配置される仮想音源である。以下、ユーザを中心とした所定の円周上を“所定の円周”と記載する場合がある。
音源情報記憶部120は、あらかじめユーザの周辺に仮想的に配置された各音源に関する情報が登録される。音源に関する情報は、各音源を識別する音源ID(Identity)、各音源の位置情報および各音源から出力される音声信号を含む。各音源に関する情報は、例えば、管理者などによる音声処理装置100への入力操作により任意に設定することができる。
なお、上記の「仮想スピーカ」および「音源」のいずれも、ユーザの周囲に仮想的に配置される仮想音源である。以下の説明では、音源情報記憶部120に位置の情報があらかじめ設定される仮想音源を単に「音源」と呼び、仮想スピーカ配置部150によって動的に配置される仮想音源を「仮想スピーカ」と呼ぶ。
HRTF情報記憶部130は、仮想スピーカの位置に対応する左右のHRTFの一覧情報を記憶する。HRTFとは、任意の位置を持つ音源から出る音波と耳の鼓膜に到達する音波間の伝達関数を意味し、聴取者から見た音源の方位や高度によってその値が異なる。音声処理装置100は、音声信号を特定方向のHRTFを用いて畳み込み演算することで、音像をその特定方向に定位させることができる。
ユーザ情報取得部140は、ユーザ端末200からユーザの視線方向を示す情報を随時取得する。また、ユーザ情報取得部140は、ユーザ端末200から送信された信号をアクセスポイント21a〜21dを通じて受信し、これらの受信信号を基にユーザ端末200の位置を検出する。ユーザ情報取得部140は、取得したユーザの視線方向および検出されたユーザ端末200の位置情報などのユーザの状態を示す情報を一時的に配置管理情報記憶部110に記憶する。
仮想スピーカ配置部150は、配置管理情報記憶部110に記憶されたユーザの状態を示す情報および音源情報記憶部120に記憶された音源の位置情報に基づいて、一定数の仮想スピーカをユーザの周囲の所定の円周上に配置する。そして、仮想スピーカ配置部150は、配置した仮想スピーカの情報を配置管理情報記憶部110に記憶する。
音源分配部160は、配置管理情報記憶部110に記憶されたユーザの状態を示す情報および仮想スピーカの位置に関する情報に基づいて、音源情報記憶部120に記憶されている各音源に対応する音声信号を、仮想スピーカ配置部150により配置された各仮想スピーカに分配する。
音声生成部170は、仮想スピーカ配置部150により配置された仮想スピーカの位置に対応する左右のHRTFを、HRTF情報記憶部130に記憶されたHRTFの一覧情報を基に取得する。そして、音声生成部170は、音源分配部160により分配された音声信号と取得された左右のHRTFとに基づいて、左右のチャネルの音声信号を生成する。また、音声生成部170は、生成した左右のチャネルの音声信号をユーザ端末200へ送信する。
一方、ユーザ端末200は、ユーザ情報提供部210および音声出力部220を有する。
ユーザ情報提供部210は、センサ11による検出結果を基にユーザの視線方向を算出し、視線方向を示す情報を音声処理装置100へ送信する。ユーザの視線方向を示す情報は、センサ11から検出結果が出力される毎に随時送信される。音声出力部220は、音声処理装置100から受信した音声信号をアナログ化し、アナログ音声信号を増幅してヘッドホン12へ送信する。
次に、音源および仮想スピーカが配置された状態で、音源から出力される音声信号から左右のチャネルの音声信号を生成する方法について説明する。なお、これ以降の説明では、鉛直方向(z軸方向)の座標については無視し、ユーザの視線方向は水平方向(x軸方向およびy軸方向)に平行であるとともに、音源および仮想スピーカの高さ(z軸方向の座標)はユーザの頭部(正確には耳)の高さと同じであると考える。
図6は、左右のチャネルの音声信号の生成例について示す図である。ユーザ30は、本実施の形態の音声処理システムを用いて音声を聞く者である。音源31は、あらかじめユーザ30の周りに配置されているm個(mは、1以上の整数)の音源に含まれる音源の1つである。仮想スピーカ32,33は、仮想スピーカ配置部150が配置したn個(nは、1以上かつmより小さい整数)の仮想スピーカに含まれる仮想スピーカである。ユーザ30を中心とした円周34上において、仮想スピーカ32(V0)はユーザ30の視線方向35から右回転方向にθv0°移動させた位置に配置され、仮想スピーカ33(V1)はユーザ30の視線方向35から右回転方向にθv1°移動させた位置に配置されている。
音源分配部160は、音源それぞれの音声信号を、ユーザ30から見て円周34に沿った方向に対して各音源に近接する1または2の仮想スピーカに分配する。例えば、音源31から出力される音声信号は、音源分配部160により、仮想スピーカ配置部150により配置された複数の仮想スピーカのうちユーザ30から見て円周34に沿った方向に対して音源31に近接する仮想スピーカ32,33に分配される。
なお、音源の音声信号を2つの仮想スピーカに分配する場合には、ユーザと音源と2つの仮想スピーカとの位置関係に応じて重み付けされた音声信号が、各仮想スピーカに分配される。例えば、図6の例において、ユーザ30と音源31とを結ぶ直線と、ユーザ30と仮想スピーカ32(V0)とを結ぶ直線とがなす角をθpとし、ユーザ30と音源31とを結ぶ直線と、ユーザ30と仮想スピーカ33(V1)とを結ぶ直線とがなす角をθqとする。この場合、音源分配部160は、音源31の音声信号に、重み係数{θq/(θp+θq)}と、ユーザ30と音源31との距離に応じた重み係数とを乗じた音声信号を、仮想スピーカ32(V0)に分配する。また、音源分配部160は、音源31の音声信号に、重み係数{θp/(θp+θq)}と、ユーザ30と音源31との距離に応じた重み係数とを乗じた音声信号を、仮想スピーカ33(V1)に分配する。ここで、ユーザ30と音源31との距離に応じた重み係数は、距離が遠くなるほど小さく設定される。
図5に示した音声生成部170は、図6に示すように、右チャネルの音声信号を出力するための音声生成部171と、左チャネルの音声信号を出力するための音声生成部172とを有する。
音声生成部(右)171は、例えば、仮想スピーカ32(V0)に分配された音声信号と、仮想スピーカ32が配置された位置を示すθv0°に対応する右チャネルのHRTFとを畳み込み演算する。同様に、音声生成部(右)171は、仮想スピーカ33(V1)に分配された音声信号と、仮想スピーカ33(V1)が配置された位置を示すθv1°に対応する右チャネルのHRTFとを畳み込み演算する。そして、上記のように各音源について畳み込み演算された信号を合成することで右チャネルの音声信号を生成する。
同様に、音声生成部(左)172は、n個の各仮想スピーカに分配された音声信号と各仮想スピーカの位置に対応する左チャネルのHRTFとを用いて合成することで左チャネルの音声信号を生成する。
このように、複数の音源それぞれからの音声信号をこれらの音源の数より少ない複数の仮想スピーカに分配後に、左右のチャネルの音声信号を生成することで、畳み込み演算の処理の回数を音源の数より少なくし、音声生成部170の処理負荷を軽減することができる。よって、左右チャネルの音声信号を迅速に生成でき、音声出力のリアルタイム性を維持できる。
しかしながら、上記のように音源の音声信号を音源より少ない数の仮想スピーカに分配する方法においては、音源と仮想スピーカの位置が異なるため、音源と仮想スピーカそれぞれに対応するHRTFも異なる。そのため、上記のように仮想スピーカに分配された音声信号を用いて生成される音声信号は、各音源の音像の定位感が減少する場合がある。例えば、図6の音源31の音声信号は、音源31の位置に対応するHRTFを用いて処理されずに、音源31とは異なる位置にある仮想スピーカ32(V0)および仮想スピーカ33(V1)の各位置に対応するHRTFを用いて処理される。この場合、本来使用されるべきHRTFとは異なるHRTFを用いた演算が行われることから、ユーザ30は、音源31の音像を正しい方向に認識できない可能性がある。
そこで、図7〜図13では、ユーザの周辺に配置されている各音源の音像の定位感が向上するように仮想スピーカを配置する方法について説明する。
図7は、音源と仮想スピーカとの位置関係の例を示す図である。ユーザ30の周辺には、音源41a,41bを含む複数の音源が配置されている。音源41aは、仮想スピーカ42aおよび仮想スピーカ42bと、円周34に沿った方向に隣り合っており、音源41bは、仮想スピーカ42bおよび仮想スピーカ42cと、円周34に沿った方向に隣り合っている。
角度θa1は、ユーザ30から仮想スピーカ42aへの方向とユーザ30から音源41aへの方向との間の角度であり、角度θa2は、ユーザ30から仮想スピーカ42bへの方向とユーザ30から音源41aへの方向との間の角度である。同様に、角度θb1は、ユーザ30から仮想スピーカ42bへの方向とユーザ30から音源41bへの方向との間の角度であり、角度θb2は、ユーザ30から仮想スピーカ42cへの方向とユーザ30から音源41bへの方向との間の角度である。
ここで、仮想スピーカを用いて音声信号を生成する際、ユーザ30から見た仮想スピーカの方向と音源の方向との間の角度が小さいほど、音源の音像の定位感に近い音声信号を生成できる。そのため、仮想スピーカ42a,42b,42cを用いて音声信号を生成するとき、角度θa1,θa2,θb1,θb2の最大値が最小になるように各仮想スピーカを配置した場合に最も音源41a,41bの音像の定位感が向上する。
このように、仮想スピーカ配置部150は、隣り合う2つの仮想スピーカそれぞれと、ユーザ30から見てこれら2つの仮想スピーカの間に位置する音源との円周34に沿った方向の距離が小さくなるように、各仮想スピーカを配置する。これにより、本来使用されるべきHRTFと実施の演算で使用されるHRTFとの誤差が減少する。したがって、仮想スピーカから出力される音声信号を用いて生成した左右のチャネルの音声信号が生成された際、各音源の音像の定位感を向上できる。
なお、音源とユーザとの距離は、音源分配部160などで音源の音量により補間するため、音像の定位感に影響しない。
次に、まず、図8で、仮想スピーカの数が音源の数以上である場合の仮想スピーカの配置方法について説明する。
図8は、仮想スピーカの数が仮想音源の数以上である場合の仮想スピーカの配置方法の例を示す図である。ユーザ30の周辺に音源43a,43bが配置されている。このとき、円周34上に、仮想スピーカ51,52,53,54,55,56,57,58を配置する場合、まず、仮想スピーカ配置部150は、仮想スピーカ51,52,53,54,55,56,57,58を円周34上に均等になるよう配置する。次に、仮想スピーカ配置部150は、ユーザ30から見て音源との円周34に沿った方向の距離が最も近い仮想スピーカをユーザ30から当該音源への方向になるように円周34上に沿って移動させる。
例えば、仮想スピーカ配置部150は、音源43aについて円周34に沿った方向の距離が最も近い仮想スピーカ52を、円周34上において、ユーザ30から音源43aへの方向になるように配置する。また、仮想スピーカ配置部150は、音源43bについて円周34に沿った方向の距離が最も近い仮想スピーカ54を、円周34上において、ユーザ30から音源43bへの方向になるように配置する。
これにより、仮想スピーカ52のHRTFは音源43aと同じHRTFが適用され、仮想スピーカ54のHRTFは音源43bと同じHRTFが適用される。したがって、音声生成部170は、音源43a,43bの各音像がそれぞれの方向に正確に定位した音声信号を生成できる。
このように、仮想スピーカの数が音源の数以上の場合は、円周34上において、ユーザ30から各音源の方向に仮想スピーカを配置することで、各音源と同じHRTFを適用できるため、各音源の音像を各音源の方向に正確に定位させることができる。
なお、移動させた仮想スピーカ52,54以外の仮想スピーカについては、音源分配部160で音源41,42から出力される音声信号を分配しないようにしてもよい。また、仮想スピーカ配置部150により、移動させた仮想スピーカ52,54以外の仮想スピーカを配置しないようにしてもよい。
次に、図9〜図13で、仮想スピーカの数が音源の数未満である場合の仮想スピーカの配置方法について説明する。
図9は、仮想スピーカの数が仮想音源の数未満である場合の仮想スピーカの配置方法の例を示す第1の図である。ユーザ30の周辺には、音源61(音源ID=#1)〜音源76(音源ID=#16)の16個の音源が配置されている(以下の説明において、“音源ID=”の記載は省略する)。この場合において、8個の仮想スピーカを配置する場合について説明する。以下、図10〜図13についても同様とする。
まず、仮想スピーカ配置部150は、ユーザ30から見て円周34に沿った方向に隣り合う2つの音源間の、ユーザ30を中心として円周に沿った方向の角度を算出する。
以下、例えば、音源61(#1)と音源62(#2)間のユーザ30を中心として円周34に沿った方向の角度をSθ1−2のように表すものとし、音源62(#2)と音源63(#3)間の当該角度をSθ2−3のように表すものとする。他の2つの音源間のユーザ30を中心として円周に沿った方向の角度についても同様に表すものとする。
図10は、仮想スピーカの数が仮想音源の数未満である場合の仮想スピーカの配置方法の例を示す第2の図である。次に、仮想スピーカ配置部150は、円周34に沿った方向の範囲のうち、図9で算出した各音源間の角度がしきい値以上である音源のペアを選択し、選択したペアに含まれる各音源を「両端音源」と特定する。この「両端音源」とは、ユーザ30から見て後述する「配置領域」の候補となる領域の両端の方向に位置する音源であることを意味する。
しきい値は、例えば、360°を仮想スピーカの数“8”で除算した値(すなわち45°)に設定される。例えば、角度Sθ4−5および角度Sθ8−9のみが45°以上であったとすると、円周34に沿った方向の範囲のうち、音源64(#4)、音源65(#5)、音源68(#8)および音源69(#9)が仮想スピーカ配置部150により両端音源として特定される。
なお、しきい値は、360°を仮想スピーカの数で除算した値より小さい値であってもよい。
次に、仮想スピーカ配置部150は、特定された各両端音源が位置する方向に、それぞれ仮想スピーカを配置する。図10の場合、仮想スピーカ配置部150は、音源64(#4)の方向に仮想スピーカ81を配置し、音源65(#5)の方向に仮想スピーカ82を配置し、音源68(#8)の方向に仮想スピーカ83を配置し、音源69(#9)の方向に仮想スピーカ84を配置する。
次に、仮想スピーカ配置部150は、ユーザ30から見て円周34の方向に隣り合う両端音源に挟まれた領域のうち、両端音源以外の音源がさらに含まれている領域を、仮想スピーカをさらに配置するための「配置領域」として特定する。
図10の場合、音源65(#5)および音源68(#8)に挟まれた領域Tθ5−8には音源66(#6)および音源67(#7)が含まれる。また、音源69(#9)および音源64(#4)に挟まれた領域Tθ9−4には音源61(#1)〜音源63(#3),音源70(#10)〜音源76(#16)が含まれる。したがって、領域Tθ5−8と領域Tθ9−4とが、配置領域として特定される。
図11は、仮想スピーカの数が仮想音源の数未満である場合の仮想スピーカの配置方法の例を示す第3の図である。次に、仮想スピーカ配置部150は、特定された配置領域それぞれにおける、すでに配置された隣り合う2つの仮想スピーカ間の円周34に沿った方向の角度を算出する。例えば、図11の場合、領域Tθ5−8における、隣り合う2つの仮想スピーカ82,83間の円周34に沿った方向の角度は角度Sθ5−8となる。また、領域Tθ9−4における、隣り合う2つの仮想スピーカ84および仮想スピーカ81との間の円周34に沿った方向の角度は角度Sθ9−4となる。
次に、仮想スピーカ配置部150は、算出された仮想スピーカ間の角度が最大である配置領域に、仮想スピーカ間の間隔が均等になるように未配置の仮想スピーカを1つ配置する。図11では、角度Sθ5−8<角度Sθ9−4とすると、仮想スピーカ配置部150は、領域Tθ9−4に仮想スピーカ間の間隔が均等になるように仮想スピーカ85を配置する。
図12は、仮想スピーカの数が仮想音源の数未満である場合の仮想スピーカの配置方法の例を示す第4の図である。次に、仮想スピーカ配置部150は、図11と同様に、特定された配置領域それぞれにおける、すでに配置された隣り合う2つの仮想スピーカ間の円周34に沿った方向の角度を算出し、算出された角度が最大である配置領域に仮想スピーカを配置する。図12では、領域Tθ5−8において角度Sθ5−8が算出され、領域Tθ9−4において(角度Sθ9−4)/2が算出される。そして、角度Sθ5−8>(角度Sθ9−4)/2とすると、領域Tθ5−8に仮想スピーカ間の距離が均等になるように仮想スピーカ86が配置される。
図13は、仮想スピーカの数が仮想音源の数未満である場合の仮想スピーカの配置方法の例を示す第5の図である。次に、仮想スピーカ配置部150は、図11、図12と同様に、特定された配置領域それぞれにおける、すでに配置された隣り合う2つの仮想スピーカ間の円周34に沿った方向の角度を算出し、算出された角度が最大である配置領域に仮想スピーカを配置する。図13では、領域Tθ5−8において(角度Sθ5−8)/2が算出され、領域Tθ9−4において(角度Sθ9−4)/2が算出される。そして、(角度Sθ5−8)/2<(角度Sθ9−4)/2とすると、領域Tθ9−4に仮想スピーカ間の距離が均等になるように仮想スピーカ87が配置される。以下、未配置の仮想スピーカが無くなるまで図13の処理を繰り返す。
図9〜図13で示すように、仮想スピーカ配置部150は、まず、ユーザ30から見て円周34に沿った方向に隣り合う2つの音源間の、円周34に沿った方向の角度に基づいて配置領域を特定する。そして、特定された配置領域それぞれにおける、隣り合う2つの仮想スピーカ間の円周34に沿った方向の角度が最大である配置領域に仮想スピーカを配置することを、未配置の仮想スピーカが無くなるまで繰り返す。
これにより、隣り合う2つの仮想スピーカそれぞれと、ユーザ30から見て当該2つの仮想スピーカの間に位置する音源との円周34に沿った方向の距離が小さくなるように、各仮想スピーカを配置できる。したがって、本来使用されるべきHRTFと実施の演算で使用されるHRTFとの誤差を小さくすることができる。
次に、音声処理装置100の処理において使用されるテーブル情報の例について説明する。
図14は、ユーザ状態テーブルの例について示す図である。ユーザ状態テーブル111は、ユーザ情報取得部140が取得するユーザの状態を示す情報を一時的に格納するテーブルである。ユーザ状態テーブル111は、配置管理情報記憶部110に記憶される。ユーザ状態テーブル111は、ユーザ端末200からユーザの視線方向を示す情報を受信したり、ユーザの位置情報を検出したりする毎に随時更新される。ユーザ状態テーブル111は、ユーザID、座標および頭部姿勢角度の項目を有する。
ユーザIDの項目には、ユーザを識別するための識別子が設定される。
座標の項目には、ユーザの頭部の位置の座標が設定される。なお、図14において、本項目は3次元で設定されているが、2次元で設定されてもよい。以下で説明する座標についても同様である。
頭部姿勢角度の項目には、所定の基準方向(例えば、北方向)に対するユーザの視線方向の角度が設定される。なお、基準方向は水平方向に沿った方向であるものとする。
図15は、音源管理テーブルの例について示す図である。音源管理テーブル112は、ユーザの周りに配置された音源に関する情報を格納するテーブルである。音源管理テーブル112には、ユーザの視線方向からユーザを中心とした円周に沿って所定の方向(例えば、右回転方向)に存在する順に音源に関する情報が一時的に記憶される。音源管理テーブル112は、配置管理情報記憶部110に記憶されている。音源管理テーブル112は、ユーザID、音源ID、音源位置および両端フラグの項目を有する。
ユーザIDの項目には、ユーザを識別するための識別子が設定される。
音源IDの項目には、音源を識別するための識別子が設定される。
音源位置の項目には、音源の位置を示す情報が設定される。音源の位置を示す情報は、例えば、ユーザの位置および視線方向を基準とした音源の相対的な座標でもよいし、音源の緯度経度でもよい。また、音源の位置を示す情報は、ユーザの視線方向とユーザから見た音源の方向との間の角度でもよい。
両端フラグの項目には、音源が両端音源であるか否かを示す情報が設定される。例えば、音源が両端音源である場合は“TRUE”が設定され、音源が両端音源でない場合は“FALSE”が設定される。両端フラグの初期値は、“FALSE”である。
なお、図示しないが、音源情報記憶部120には、例えば管理者の設定操作により、各音源の位置情報が音源IDに対応付けてあらかじめ登録されており、音源管理テーブル112の音源IDおよび音源位置の各項目には、音源情報記憶部120に登録された各音源の音源IDおよび位置情報が設定される。また、音源管理テーブル112における音源の登録順は、ユーザ情報取得部140により、対応するユーザの位置が移動する度に更新される。
図16は、仮想スピーカ位置テーブルの例について示す図である。仮想スピーカ位置テーブル113は、仮想スピーカの位置に関する情報を格納するテーブルである。仮想スピーカ位置テーブル113は、配置管理情報記憶部110に一時的に記憶される。仮想スピーカ位置テーブル113は、ユーザID、仮想スピーカID、スピーカ位置および配置確定フラグの項目を有する。
ユーザIDの項目には、ユーザを識別するための識別子が設定される。
仮想スピーカIDの項目には、仮想スピーカを識別するための識別子が設定される。
スピーカ位置の項目には、仮想スピーカの位置を示す情報が設定される。仮想スピーカの位置を示す情報は、例えば、ユーザの位置および視線方向を基準とした仮想スピーカの相対的な座標でもよいし、仮想スピーカの絶対座標でもよい。また、スピーカの位置を示す情報は、ユーザの向きとユーザから見た仮想スピーカの方向との間の角度でもよい。
配置確定フラグの項目には、配置する仮想スピーカの位置が確定しているか否かを示す情報が設定される。例えば、仮想スピーカの位置が確定している場合は“TRUE”が設定され、仮想スピーカの位置が確定していない場合は“FALSE”が設定される。配置確定フラグの初期値は、“FALSE”である。
図17は、配置情報の例について示す図である。配置情報114は、配置する仮想スピーカの数に関する情報である。配置情報114は、配置管理情報記憶部110に一時的に記憶される。配置情報114は、ユーザID,配置済み、未配置および合計の項目を有する。
ユーザIDの項目には、ユーザを識別するための識別子が設定される。
配置済みの項目には、配置済みの仮想スピーカの数が設定される。配置済みの初期値は“0”である。
未配置の項目には、未配置である仮想スピーカの数が設定される。未配置の初期値は合計の項目と同じ値である。
合計の項目には、配置する仮想スピーカ全体の数が設定される。すなわち、配置済みの仮想スピーカと未配置の仮想スピーカとの合計が設定される。
図18は、配置領域管理テーブルの例について示す図である。配置領域管理テーブル115は、仮想スピーカを配置する配置領域に関する情報を格納するテーブルである。配置領域管理テーブル115は、配置管理情報記憶部110に一時的に記憶される。配置領域管理テーブル115は、ユーザID、領域ID、両端角度、探索フラグ、角度(分割後)および分割数の項目を有する。
ユーザIDの項目には、ユーザを識別するための識別子が設定される。
領域IDの項目には、配置領域を識別するための識別子が設定される。
両端角度の項目には、配置領域の両端の間の、ユーザを中心として円周に沿った方向の角度が設定される。
探索フラグの項目には、仮想スピーカを1つ追加する配置領域か否かを示す情報が設定される。例えば、仮想スピーカを追加する配置領域である場合は“TRUE”が設定され、仮想スピーカを追加する配置領域でない場合は“FALSE”が設定される。仮想スピーカを追加する配置領域か否かは、配置領域毎に均等に配置された仮想スピーカ間の、ユーザを中心として円周に沿った方向の角度が他の配置領域と比べ最大であるか否かで判断される。
角度(分割後)の項目には、配置領域に均等に配置された仮想スピーカ間の、ユーザを中心として円周に沿った方向の角度が設定される。具体的には、角度(分割後)の項目には、両端角度の項目に設定された角度を分割数の項目に設定された値によって除算した数値が設定される。分割数の項目には、配置領域が、その両端を除く仮想スピーカによって分割された数が設定され、具体的には、配置領域に配置される仮想スピーカの数−1として算出された値が設定される。
領域ID、両端角度、探索フラグ、角度(分割後)および分割数の初期値は、空欄である。
次に、音声処理装置100の処理についてフローチャートを用いて説明する。
図19は、仮想スピーカの配置処理の例を示すフローチャートである。図19の処理において、音源情報記憶部120に音源の位置情報および音源が出力する音声信号が記憶されているものとする。また、図19の処理は、ユーザ毎に行われるものとする。したがって、図19(および図20)の処理においては、ユーザ状態テーブル111などユーザIDの項目を含む各テーブルとしては、処理対象のユーザに対応するユーザIDが登録されているテーブルが利用される。
(ステップS11)ユーザ情報取得部140は、ユーザの状態を示す情報を取得する。ユーザの状態を示す情報には、ユーザの視線方向を示す情報およびユーザの位置情報が含まれる。
ユーザ情報取得部140は、ユーザ端末200からユーザの視線方向を示す情報を受信する。また、ユーザ端末200の位置を示す情報について、ユーザ情報取得部140は、アクセスポイント21a〜21dにおける信号の受信時刻の差、あるいは受信電波強度の差に基づいて、三角法を用いてユーザ端末200の位置を検出する。
そして、ユーザ情報取得部140は、取得したユーザの状態を示す情報をユーザ状態テーブル111に一時的に格納する。この際、ユーザ情報取得部140は、座標の項目にユーザ端末200の位置を示す情報を設定し、頭部姿勢角度の項目にユーザの視線方向と所定の基準方向(例えば、北方向)との間の角度を設定する。
(ステップS12)仮想スピーカ配置部150は、音源情報記憶部120から、各音源に関する情報を読み出す。音源に関する情報には、音源を識別する音源ID、音源の位置情報および音源の出力する音声信号が含まれる。
(ステップS13)仮想スピーカ配置部150は、ユーザ状態テーブル111に格納されたユーザの視線方向や位置を示す情報およびステップS12で確認した各音源の位置情報に基づいて、音源に関する情報を音源管理テーブル112に格納する。
具体的には、まず、仮想スピーカ配置部150は、ユーザ状態テーブル111からユーザの状態を示す情報を読み出す。次に、仮想スピーカ配置部150は、読み出したユーザの情報とステップS12で確認した音源の座標とに基づいて、ユーザの視線方向からユーザを中心とした円周(以下、所定の円周)に沿って右回転方向に存在する音源を順に判別して、その判別順に各音源に関する情報を音源管理テーブル112に登録する。その際、仮想スピーカ配置部150は、音源位置の項目にステップS12で確認した音源の位置情報を設定し、両端音源フラグの項目に初期値として“FALSE”を設定する。
(ステップS14)仮想スピーカ配置部150は、配置する仮想スピーカの数がステップS13で格納した音源の数未満であるか判定する。配置する仮想スピーカの数が格納した音源の数未満の場合、処理をステップS21へ進める。配置する仮想スピーカの数が格納した音源の数以上の場合、処理をステップS15へ進める。
(ステップS15)仮想スピーカ配置部150は、所定の円周上において、音源それぞれについてユーザと音源とを結ぶ直線上に仮想スピーカを配置する。このとき、仮想スピーカ配置部150は、配置した各仮想スピーカに関する情報を仮想スピーカ位置テーブル113に登録する。この際、仮想スピーカ配置部150は、スピーカ位置の項目に配置した仮想スピーカの位置情報を設定し、配置確定フラグの項目に“TRUE”を設定する。仮想スピーカの位置情報は、ステップS11で取得したユーザの座標と所定の円周の半径とユーザから見て当該仮想スピーカと同じ方向に配置されている音源の座標との位置関係に基づいて算出される。
なお、所定の円周に関する情報(すなわち、ユーザと仮想スピーカとの距離)は、例えば、HDD103などの記憶領域にあらかじめ記憶されている。
(ステップS16)音源分配部160は、音源情報記憶部120に記憶された各音源から出力される音声信号を、所定の円周に沿って隣り合う2つの仮想スピーカに分配する。仮想スピーカに分配される音声信号は、具体的には、図6で説明したように、ユーザと音源と2つの仮想スピーカとの位置関係に応じて重み付けすることで生成される。
(ステップS17)音声生成部170は、分配された音声信号を用いて左右チャネルの音声信号を生成する。
具体的には、まず、音声生成部170は、仮想スピーカ位置テーブル113に登録された各仮想スピーカのスピーカ位置に基づいて、ユーザの視線方向とユーザから仮想スピーカの配置された方向との間の角度を算出する。次に、音声生成部170は、算出した各角度と一致する左右のHRTFをHRTF情報記憶部130から検索する。そして、音声生成部170は、音源分配部160により分配された音声信号と検索された左右のHRTFとを畳み込み演算した信号を合成し、左右のチャネルの音声信号を生成する。
畳み込み演算の例として、時刻τから時刻tまでの音声信号において、左右のチャネルの音声信号をh(t)とし、分配された音声信号の関数をf(t)とし、HRTFをg(t)とした場合、以下のような畳み込み積分を用いることができる。
そして、音声生成部170は、生成した左右のチャネルの音声信号をユーザ端末200へ送信する。
その後、ユーザ端末200の音声出力部220は、音声処理装置100から左右のチャネルの音声信号を受信する。音声出力部220は、受信した音声信号をアナログ音声信号に変換し、変換されたアナログ音声信号をヘッドホン12に出力する。
図20は、仮想スピーカの配置処理の例を示すフローチャート(続き)である。
(ステップS21)仮想スピーカ配置部150は、図9〜図10で説明したように、両端音源を特定する。
具体的には、まず、仮想スピーカ配置部150は、音源管理テーブル112からユーザの周辺に配置された複数の音源に関する情報を取得する。次に、仮想スピーカ配置部150は、取得した音源それぞれの音源位置に基づいて、図9で説明したように、ユーザから見て所定の円周に沿った方向に隣り合う2つの音源間の、円周に沿った方向の角度を算出する。次に、図10で説明したように、所定の円周に沿った方向の範囲のうち、算出した各音源間の角度がしきい値以上である音源のペアを特定する。そして、仮想スピーカ配置部150は、特定した音源のペアに含まれる音源を両端音源と特定し、音源管理テーブル112において、その音源の両端フラグの項目を“TRUE”に更新する。
(ステップS22)仮想スピーカ配置部150は、図10で説明したように、所定の円周上において、各両端音源が位置する方向にそれぞれ仮想スピーカを配置する。このとき、仮想スピーカ配置部150は、図19のステップS15と同様に、配置した各仮想スピーカに関する情報を仮想スピーカ位置テーブル113に格納する。
そして、仮想スピーカ配置部150は、配置情報114における配置済みの項目の値を、格納した仮想スピーカの数を加算した値に更新するとともに、未配置の項目の値を、格納した仮想スピーカの数を減算した値に更新する。
この後のステップS23〜S27では、初期配置によって配置されたものを除く残りの仮想スピーカを配置するための処理が行われる。
(ステップS23)仮想スピーカ配置部150は、ステップS22ですでに配置された仮想スピーカに挟まれた複数の範囲のうち、その両端以外の位置にも音源が存在している範囲を配置領域として特定する。
具体的には、仮想スピーカ配置部150は、音源管理テーブル112を参照して、両端フラグが“TRUE”である両端音源の間に、両端フラグが“FALSE”である音源のみが含まれている領域を配置領域として特定する。
次に、仮想スピーカ配置部150は、特定した配置領域に関する情報を配置領域管理テーブル115に登録する。この際、仮想スピーカ配置部150は、両端角度および角度(分割後)の項目にユーザから見た両端音源同士の各方向の間の角度を設定し、探索フラグの項目に“FALSE”を設定し、分割数に“1”を設定する。
(ステップS24)仮想スピーカ配置部150は、図11〜図13で説明したように、ステップS23で特定した配置領域から仮想スピーカを1つ追加する配置領域を選択する。
具体的には、仮想スピーカ配置部150は、配置領域管理テーブル115から、角度(分割後)の値が最大である配置領域を選択する。そして、仮想スピーカ配置部150は、配置領域管理テーブル115について、選択した配置領域の探索フラグを“TRUE”に更新する。
(ステップS25)仮想スピーカ配置部150は、図11〜図13で説明したように、仮想スピーカを1つ配置する。
具体的には、仮想スピーカ配置部150は、配置領域管理テーブル115について、探索フラグが“TRUE”である探索領域の分割数の項目を当該分割数に1加算した値に更新する。また、仮想スピーカ配置部150は、配置領域管理テーブル115について、探索フラグが“TRUE”である配置領域の角度(分割後)の項目を、両端角度の項目に設定された値を更新後の分割数に設定された値によって除算した値に更新する。また、仮想スピーカ配置部150は、配置領域管理テーブル115について、探索フラグが“TRUE”である配置領域の探索フラグの項目を“FALSE”に更新する。
そして、仮想スピーカ配置部150は、配置情報114の配置済みの項目を1加算した値に更新し、当該配置情報114の未配置の項目を1減算した値に更新する。
(ステップS26)仮想スピーカ配置部150は、図11〜図13で説明したように、全ての仮想スピーカを配置済みか判定する。全ての仮想スピーカを配置済みの場合、処理をステップS27へ進める。全ての仮想スピーカを配置済みでない場合、処理をステップS24へ進める。全ての仮想スピーカを配置済みであるか否かは、例えば、配置情報114の未配置の項目が“0”であるかにより判定できる。
(ステップS27)仮想スピーカ配置部150は、図11〜図13で説明したように、配置領域それぞれについて、隣り合う2つの仮想スピーカ間の、ユーザを中心とした角度が均等になるように、所定の円周上に配置された残りの仮想スピーカの座標を仮想スピーカ位置テーブル113に登録する。
具体的には、仮想スピーカ配置部150は、配置領域管理テーブル115から配置領域を順次選択し、選択された配置領域のそれぞれについて次の処理を実行する。
まず、仮想スピーカ配置部150は、配置領域管理テーブル115から選択された配置領域についての角度(分割後)を読み出す。仮想スピーカ配置部150は、所定の円周上において、選択された配置領域の一端から一方向(例えば右回り方向)に対し、読み出した角度(分割後)毎の位置に仮想スピーカを配置するよう、「選択した配置領域の分割数−1」分の仮想スピーカの位置情報(例えば、座標)を算出する。そして、仮想スピーカ配置部150は、仮想スピーカ位置テーブル113について、配置する仮想スピーカに関する情報を更新する。具体的には、仮想スピーカ配置部150は、配置決定フラグが“FALSE”である仮想スピーカについて、スピーカ位置の項目に算出された位置情報を登録し、配置決定フラグの項目を“TRUE”に更新する。
そして、仮想スピーカ配置部150は、処理をステップS16へ進める。
次に、図21〜図25では、図20のステップS21〜ステップS25のように仮想スピーカを配置した場合の処理の例を具体的に説明する。
図21は、仮想スピーカの配置の例を示す第1の図である。図20のステップS21では、配置領域の両端に含まれる音源を特定する。ここでは、図10の例のように、角度がしきい値以上となる音源のペアとして、音源ID=#4,#5のペアと、音源ID=#8,#9のペアとが抽出されたとする。その結果、両端音源として音源ID=#4,#5,#8,#9である音源が特定される。
そのため、仮想スピーカ配置部150は、音源管理テーブル112aのように、音源IDが#4,#5,#8および#9である音源の両端フラグの項目を“TRUE”に更新する。
図22は、仮想スピーカの配置の例を示す第2の図である。図20のステップS22では、仮想スピーカ配置部150は、所定の円周上において、ユーザ30から見て図20のステップS21で特定された音源それぞれが位置する方向に、仮想スピーカID=V1,V2,V3,V4である仮想スピーカを配置する。仮想スピーカ配置部150は、仮想スピーカ位置テーブル113aのように、仮想スピーカID=V1,V2,V3,V4にそれぞれ対応するスピーカ位置の項目に、音源ID=#4,#5,#8,#9である音源の方向にそれぞれ配置する仮想スピーカの位置情報を登録し、対応する配置確定フラグの項目を“TRUE”に更新する。
また、図20のステップS23では、仮想スピーカ配置部150は、音源管理テーブル112aに基づき、隣り合う両端音源に挟まれた領域のうち、その両端以外の位置にも音源が存在している領域を配置領域として特定する。その結果、領域ID=Tθ5−8,Tθ9−4が配置領域として特定されたとする。この場合、仮想スピーカ配置部150は、配置領域管理テーブル115aのように、各配置領域の領域ID、両端角度、探索フラグ、角度(分割後)および分割数が登録される。
また、仮想スピーカ位置テーブル113aが示すように、配置確定フラグが“TRUE”である仮想スピーカの数は4つである。そのため、図示していないが、配置情報114についても、配置済みの仮想スピーカが“0”から“4”に更新され、未配置の仮想スピーカが“8”から“4”に更新される。
図23は、仮想スピーカの配置の例を示す第3の図である。図20のステップS24では、ステップS23で特定した配置領域から仮想スピーカを1つ追加する配置領域が選択される。また、図20のステップS25では、選択した領域に仮想スピーカが1つ配置される。
具体的には、まず、図20のステップS24では、仮想スピーカ配置部150は、配置領域の角度(分割後)が最大である配置領域を選択する。配置領域管理テーブル115aのように、領域IDがTθ9−4である配置領域の両端角度は80°であり、領域IDがTθ5−8である配置領域の両端角度は30°である。そのため、仮想スピーカ配置部150は、配置する仮想スピーカを1つ追加する領域として、領域IDがTθ9−4である配置領域を選択する。
次に、図20のステップS25では、仮想スピーカ配置部150は、配置領域管理テーブル115bのように、選択された領域IDがTθ9−4である配置領域の探索フラグを“TRUE”に更新する。
そして、仮想スピーカ配置部150は、配置領域管理テーブル115cのように、探索フラグが“TRUE”である配置領域において、分割数を1加算した値“2”に更新し、角度(分割後)の項目を両端角度の項目に設定された値を更新後の分割数に設定された値によって除算した値“40”に更新し、探索フラグの項目を“FALSE”に更新する。そして、仮想スピーカ配置部150は、配置情報114bのように、配置済みの仮想スピーカを1加算した値“5”に更新し、未配置の仮想スピーカを1つ減算した値“3”に更新する。
図24は、仮想スピーカの配置の例を示す第4の図である。次に、仮想スピーカ配置部150は、各配置領域において、図23と同様の処理を実行する。配置領域管理テーブル115cが示すように、角度(分割後)が最大である配置領域の領域IDはTθ9−4である。
そのため、仮想スピーカ配置部150は、配置領域管理テーブル115dのように、領域IDがTθ9−4である配置領域の分割数を1追加した値“3”に更新し、領域IDがTθ9−4である配置領域の角度(分割後)を両端角度/更新後の分割数“26”に更新する。また、仮想スピーカ配置部150は、配置情報114cのように、配置済みの仮想スピーカを1加算した値“6”に更新し、未配値の仮想スピーカを1減算した値“2”に更新する。
次に、仮想スピーカ配置部150は、仮想スピーカを追加後の各配置領域について図23と同様の処理を実行する。配置領域管理テーブル115dが示すように、角度(分割後)が最大である配置領域の領域IDはTθ5−8である。
そのため、仮想スピーカ配置部150は、配置領域管理テーブル115eのように、領域IDがTθ5−8である配置領域の分割数を1追加した値“2”に更新し、領域IDがTθ5−8である配置領域の角度(分割後)を両端角度/更新後の分割数“15”に更新する。また、仮想スピーカ配置部150は、配置情報114dのように、配置済みの仮想スピーカを1加算した値“7”に更新し、未配値の仮想スピーカを1減算した値“1”に更新する。
図25は、仮想スピーカの配置の例を示す第5の図である。未配値の仮想スピーカそれぞれについて、図23〜図24のように、配置する配置領域を算出した後、図20のステップS27において、仮想スピーカ配置部150は、配置領域それぞれについて、隣り合う2つの仮想スピーカ間の、ユーザ30を中心とした角度が均等になるように、追加した仮想スピーカを所定の円周上に配置する。各配置領域に配置される仮想スピーカ間の角度は、配置領域管理テーブル115において各配置領域に対応付けられた角度(分割後)の値となる。
その結果、仮想スピーカ位置テーブル113bのように、図23〜図24で新たに配置された仮想スピーカID=V5,V6,V7,V8である仮想スピーカの座標および配置確定フラグが更新される。
第2の実施の形態の音声処理システムによれば、音声処理装置100は、ユーザ30から見て所定の円周に沿った方向に隣り合う2つの音源間の、ユーザ30を中心として所定の円周に沿った方向の角度を算出する。音声処理装置100は、算出した角度がしきい値以上となる仮想音源を両端音源として特定する。
次に、ユーザ30から見て、特定された各両端音源が位置する方向にそれぞれ仮想スピーカを配置する。そして、所定の円周上において、すでに配置された仮想スピーカに挟まれた領域(すなわち、両端音源に挟まれた領域)のうち、その両端以外の位置にも音源が存在している領域を配置領域と特定する。
そして、特定された配置領域それぞれにおける、隣り合う2つの仮想スピーカ間のユーザ30を中心とした角度が最大である配置領域に仮想スピーカ間の間隔が均等になるように未配置の仮想スピーカを1つ配置する処理を、未配置の仮想スピーカが無くなるまで繰り返す。
これにより、仮想スピーカとユーザ30とを結ぶ直線と、仮想スピーカに隣り合う音源とユーザ30とを結ぶ直線との角度を減らすことができる。ここで、音源が出力する音声信号を仮想スピーカに分配する際、仮想スピーカとユーザ30とを結ぶ直線と、仮想スピーカに隣り合う音源とユーザ30とを結ぶ直線との角度が小さい方が、HRTFの誤差が減少して、音像の定位感の減少を抑制できる。そのため、仮想スピーカとユーザ30とを結ぶ直線と、仮想スピーカに隣り合う音源とユーザ30とを結ぶ直線との角度を減らすことで、各音源の音像の定位感の減少を抑制できる。よって、複数の仮想音源の音像を定位させる処理の負荷を軽減しつつ、音像の定位感を向上できる。
[第2の実施の形態の変形例]
次に、第2の実施の形態の変形例について説明する。以下の変形例は、聴取者に対して所望の範囲の方向に存在する音源の方位感をより向上させるものである。例えば、聴取者の後方に存在する音源の方位感より、前方に存在する音源の方位感をより向上させたい場合がある。これは、人間の方位感が後方より前方の方が曖昧になりやすいからである。この場合、後方の範囲の方向より前方の範囲の方向に仮想スピーカを多く配置することで実現できる。そこで、図26〜図27では、各配置領域の位置によって重み付けをすることで、ユーザ30の前方に存在する配置領域により仮想スピーカをより多く配置する例について説明する。図26〜図27において、第2の実施の形態と差異のある点を説明し、第2の実施の形態と同じ構成や処理については説明を省略する。
図26は、配置領域に対する重みの設定方法の例を示す図である。円周34は、領域K1,K2,K3,K4に分割される。領域K1はユーザ30の前方に存在し、領域K2はユーザ30の左側に存在し、領域K3はユーザ30の右側に存在し、領域K4はユーザの後方に存在する。例えば、領域K1には1.0の重みが設定され、領域K2,K3には0.8の重みが設定され、領域K4には0.6の重みが設定されている。このように、ユーザ30の後方よりも前方の方が重みの値が大きく設定される。
ここで、円周34上に配置領域T1,T2が存在するものとする。配置領域T1における両端の方向の間の角度を2等分した方向35aは領域K1に含まれるため、配置領域T1の重みは1.0となる。また、配置領域T2における両端の方向の間の角度2等分した方向35bは領域K4に含まれるため、配置領域T2の重みは0.6となる。
図27は、重みを考慮した仮想スピーカの配置の変形例を示す図である。配置領域管理テーブル116a,116bは、配置領域管理テーブル115に角度(重み付け後)および重みの項目が追加されている。角度(重み付け後)の項目には、角度(分割後)の値に重みを乗じた値が設定される。重みの項目には、図26で説明したように、配置領域の位置に応じた重みが設定される。
ここで、図20のステップS24〜ステップS25で、仮想スピーカを追加する配置領域を特定し、仮想スピーカを配置する例について説明する。
まず、第2の実施の形態のシステムの変形例では、配置領域の角度(分割後)ではなく、角度(重み付け後)が最大である配置領域に仮想スピーカを追加するようにする。配置領域管理テーブル116aの例では、領域IDがTθ9−4である配置領域が仮想スピーカを追加する領域として選択され、当該配置領域の探索フラグが“TRUE”に更新される。
そして、配置領域管理テーブル116bのように、領域IDがTθ9−4である配置領域の角度(分割後)、角度(重み付け後)および分割数が更新される。すなわち、領域IDがTθ9−4よりも後方に位置する、領域IDがTθ5−8である配置領域の角度が、重み付けによって本来よりも小さく補正されて演算に利用される。これにより、より前方に位置する領域IDがTθ9−4の配置領域の方に仮想スピーカが優先的に追加され、その結果、前方の方位感が向上するようになる。
なお、図26で説明した領域の数を4つ以上に設定してもよい。また、領域K1,K2,K3,K4毎に配置できる仮想スピーカの最大数を設定できるようにしてもよい。
第2の実施の形態の変形例によれば、音声処理装置100は、配置領域の位置に基づいて仮想スピーカ間の角度に重み付けをすることで、ユーザ30の所望の方向に仮想スピーカを多く配置することができる。仮想スピーカを多く配置すればユーザ30から見た音源の方向とユーザ30から見た仮想スピーカの方向との間の角度を小さくできる。よって、ユーザ30が所望する方向に配置された複数の音源の音像の定位感が向上する。
なお、前述のように、第1の実施の形態の情報処理は、音声処理装置1にプログラムを実行させることで実現でき、第2の実施の形態の情報処理は、音声処理装置100やユーザ端末200にプログラムを実行させることで実現できる。このようなプログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体15)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。
プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク10経由でプログラムを配布することもできる。コンピュータは、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、記憶装置(例えば、HDD103)に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワーク10を介して受信したプログラムを直接実行してもよい。また、上記の情報処理の少なくとも一部を、DSP、ASIC、PLD(Programmable Logic Device)などの電子回路で実現することも可能である。