JP2015079131A - 音響信号処理装置および音響信号処理プログラム - Google Patents
音響信号処理装置および音響信号処理プログラム Download PDFInfo
- Publication number
- JP2015079131A JP2015079131A JP2013216255A JP2013216255A JP2015079131A JP 2015079131 A JP2015079131 A JP 2015079131A JP 2013216255 A JP2013216255 A JP 2013216255A JP 2013216255 A JP2013216255 A JP 2013216255A JP 2015079131 A JP2015079131 A JP 2015079131A
- Authority
- JP
- Japan
- Prior art keywords
- sound
- acoustic
- acoustic signal
- unit
- frequency domain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000006243 chemical reaction Methods 0.000 claims abstract description 46
- 238000004364 calculation method Methods 0.000 claims description 85
- 230000006870 function Effects 0.000 claims description 63
- 238000000034 method Methods 0.000 claims description 55
- 230000004044 response Effects 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 29
- 230000005236 sound signal Effects 0.000 claims description 22
- 230000003111 delayed effect Effects 0.000 claims description 6
- 230000001131 transforming effect Effects 0.000 claims description 4
- 238000002156 mixing Methods 0.000 claims description 3
- 239000013598 vector Substances 0.000 abstract description 14
- 238000005070 sampling Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 16
- 238000007792 addition Methods 0.000 description 12
- 230000000694 effects Effects 0.000 description 7
- 230000011218 segmentation Effects 0.000 description 4
- 239000000470 constituent Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000004807 localization Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000010521 absorption reaction Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005401 electroluminescence Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Images
Landscapes
- Reverberation, Karaoke And Other Acoustics (AREA)
Abstract
【課題】演算処理量を低減可能な音響信号処理装置および音響信号処理プログラムを提供することである。【解決手段】遅延量調整部7は、複数の反射音V1,V2,…,Vkの遅延時間差をFFTシフトサイズに相当する時間の整数倍に調整する。音響ブロック選択部9は、直接音V0に対応する音響ブロックを選択し、調整後の遅延時間差に基づいて複数の反射音V1,V2,…,Vkに対応する音響ブロックを選択する。畳み込み演算部10は、選択された音響ブロックおよび選択された分割HRTFブロックを用いて、直接音V0および複数の反射音V1,V2,…,Vkについての周波数領域での畳み込み演算を行い、畳み込み演算の結果を複素ベクトル加算する。時間領域変換部11は、畳み込み演算部10の演算結果をIFFTにより時間領域の音響信号に順次変換する。【選択図】図1
Description
本発明は、音響空間における音を再現するための音響信号を出力する音響信号処理装置および音響信号処理プログラムに関する。
コンサートホールまたは劇場等の音響空間における音響効果をリスニングルームにおいて再現するための種々の技術が開発されている(特許文献1〜3参照)。
音響空間内の音源から放射された音は、受聴者に直接到達するとともに、音響空間の壁または天井等により1回または複数反射した後に到達する。複数の反射音は、直接音に対してそれぞれの音線経路の長さに応じた遅延時間をもって受聴者に到来する。リスニングルームにおいて音響空間の音響効果を再現するために、音響空間内での複数の反射音と同じ遅延時間を有する複数の反射音が再生される。特許文献1に記載された反射音抽出装置では、予め記憶された複数の反射音と音楽信号とを畳み込むことにより音場が再現される。特許文献2に記載された残響付与装置では、発音点から受音点の方向が発音点の向きとして特定され、特定された発音点の向きを反映させたインパルス応答と音響効果を付与すべき音響信号との畳み込み演算が行われる。特許文献3に記載された残響付与装置では、発音点および受音点の指向特性等に応じて求められた音線合成ベクトルからインパルス応答が特定され、このインパルス応答が音響信号に畳み込み演算される。
また、仮想的な音響空間における反射音を再現するためには、異なる遅延時間を有する複数の反射音の音響信号と頭部伝達関数との畳み込み演算を行うことが考えられる。
上記のように、実際の音響空間または仮想的な音響空間における複数の反射音を再現するためには、それぞれ異なる遅延時間を有する複数の音響信号とインパルス応答または頭部伝達関数との畳み込み演算を行う必要がある。
しかしながら、多数の反射音に対応する多数の音響信号が存在するため、畳み込み演算の処理量が増大する。その場合、リアルタイムな音響信号の入力に対して演算処理が遅れないように、高速動作が可能な演算処理装置を用いる必要がある。それにより、コストが増加するとともにシステムの小型化が困難となる。一方、比較的安価な演算処理装置を用いた場合には、音響信号のリアルタイムの入力に演算処理が遅れないように、音の再現精度を低下させざるを得ない。
本発明の目的は、演算処理量を低減可能な音響信号処理装置および音響信号処理プログラムを提供することである。
(1)本発明に係る音響信号処理装置は、第1の音源により放射されて受音点に到来する第1の音と少なくとも1つの第2の音源により放射されて第1の音から遅延して受音点に到来する少なくとも1つの第2の音とを混合した音を表す音響信号を出力する音響信号処理装置であって、第1の音と第2の音との間の遅延時間差を算出する算出部と、第1の音源により放射される第1の音を表す原音響信号を時間軸上で一定のシフト量ずつシフトしつつ順次時間−周波数変換することにより周波数領域の音響信号を得る第1の変換部と、算出部により算出された遅延時間差を時間−周波数変換のシフト量に相当する時間の整数倍に調整する調整部と、第1の変換部により得られた周波数領域の音響信号から第1の音に対応する第1の信号部分を選択し、調整部により調整された遅延時間差に基づいて、第1の変換部により得られた周波数領域の音響信号から第2の音に対応する第2の信号部分を選択する選択部と、第1の音源から受音点までの第1の音響伝達関数と選択部により選択された第1の信号部分との第1の畳み込み演算および第2の音源から受音点までの第2の音響伝達関数と選択部により選択された第2の信号部分との第2の畳み込み演算を周波数領域で行い、第1および第2の畳み込み演算の結果の加算を行う演算部と、演算部による加算の結果を時間領域の音響信号に変換する第2の変換部とを備えるものである。
この音響信号処理装置においては、第1の音源に対応する第1の音と少なくとも1つの第2の音源に対応する少なくとも1つの第2の音との間の遅延時間差が算出される。さらに、算出された遅延時間差が時間−周波数変換のシフト量に相当する時間の整数倍に調整される。
第1の音を表す原音響信号が時間軸上で一定のシフト量ずつシフトされつつ順次時間−周波数変換されることにより周波数領域の音響信号が得られる。周波数領域の音響信号から第1の音に対応する第1の信号部分が選択され、調整された遅延時間差に基づいて、第2の音に対応する第2の信号部分が選択される。第1の音響伝達関数と第1の信号部分との第1の畳み込み演算および第2の音響伝達関数と第2の信号部分との第2の畳み込み演算が周波数領域で行われ、第1および第2の畳み込み演算の結果の加算が行われる。加算の結果が時間領域の音響信号に変換される。
この場合、周波数領域の音響信号における第1の信号部分と第2の信号部分との間の遅延時間差は時間−周波数変換のシフト量に相当する時間の整数倍であるため、第2の信号部分として、以前の時間−周波数変換により既に得られている第1の信号部分を用いることができる。そのため、第2の信号部分を得るための時間−周波数変換が不要である。また、第1および第2の畳み込み演算の結果の加算が周波数領域で行われるので、原音響信号の1つの信号部分(第1または第2の信号部分)当たり、音響ブロック周波数領域から時間領域への1回の変換により時間領域の音響信号を得ることができる。それにより、演算回数を低減することができる。その結果、受音点に到来する音を表す音響信号を出力するための演算処理における処理量を低減することが可能となる。
(2)第1の変換部は、原音響信号から第1のサンプル数の単位ブロックを順次取得し、単位ブロックを含みかつ第1のサンプル数よりも多い第2のサンプル数の音響信号を高速フーリエ変換し、第1の変換部、演算部および第2の変換部は、オーバラップセーブ法またはオーバラップアド法により高速フーリエ変換、第1および第2の畳み込み演算ならびに時間領域の音響信号への変換を行い、高速フーリエ変換のシフト量は単位ブロックのサンプル数に等しくてもよい。
この場合、単位ブロックのサイズを小さくすることにより、遅延時間差の調整による誤差および畳み込み演算における遅延時間を低減することができる。それにより、受音点に到来する音を高い精度で再現することができる。
(3)第1の音響伝達関数は複数の第1の分割伝達関数を含み、複数の第1の分割伝達関数は、第1の音源から受音点までの時間領域の第1の音響応答特性の分割により得られた複数の第1の分割応答特性が高速フーリエ変換されることにより得られ、第2の音響伝達関数は複数の第2の分割伝達関数を含み、複数の第2の分割伝達関数は、第2の音源から受音点までの時間領域の第2の音響応答特性の分割により得られた複数の第2の分割応答特性が高速フーリエ変換されることにより得られ、選択部は、複数の第1の分割伝達関数の分割数に応じた数の第1の信号部分を選択し、複数の第2の分割伝達関数の分割数に応じた数の複数の第2の信号部分を選択し、演算部は、複数の第1の分割伝達関数と選択部により選択された複数の第1の信号部分との第1の畳み込み演算および複数の第2の分割伝達関数と選択部により選択された複数の第2の信号部分との第2の畳み込み演算を周波数領域で行ってもよい。
この場合、各第1の信号部分のサイズが小さくなり、各第2の信号部分のサイズが小さくなる。それにより、時間領域の音響信号を高速フーリエ変換する際の演算回数が低減される。したがって、受音点に到来する音を表す音響信号を出力するための演算処理における処理量をより低減することが可能となる。
また、単位ブロックのサイズを小さくすることができるので、遅延時間差の調整による誤差および畳み込み演算における遅延時間を低減することができる。それにより、受音点に到来する音をより高い精度で再現することができる。
(4)第1の音は、第1の音源から反射することなく受音点に到来する直接音であり、第2の音は、第1の音源から反射しつつ到来する反射音であり、第2の音源は、反射音を仮想的に放射する仮想音源であってもよい。
この場合、実際の音響空間または仮想的な音響空間において受音点に到来する音を再現することが可能となる。
(5)本発明に係る音響信号処理プログラムは、第1の音源により放射されて受音点に到来する第1の音と少なくとも1つの第2の音源により放射されて第1の音から遅延して受音点に到来する少なくとも1つの第2の音とを混合した音を表す音響信号を出力するためにコンピュータにより実行可能な音響信号処理プログラムであって、第1の音と第2の音との間の遅延時間差を算出する処理と、第1の音源により放射される第1の音を表す原音響信号を時間軸上で一定のシフト量ずつシフトしつつ時間−周波数変換することにより周波数領域の音響信号を得る処理と、算出された遅延時間差を時間−周波数変換のシフト量に相当する時間の整数倍に調整する処理と、周波数領域の音響信号から第1の音に対応する第1の信号部分を選択し、調整された遅延時間差に基づいて、周波数領域の音響信号から第2の音に対応する第2の信号部分を選択する処理と、第1の音源から受音点までの第1の音響伝達関数と選択された第1の信号部分との第1の畳み込み演算および第2の音源から受音点までの第2の音響伝達関数と選択された第2の信号部分との第2の畳み込み演算を周波数領域で行い、第1および第2の畳み込み演算の結果の加算を行う処理と、加算の結果を時間領域の音響信号に変換する処理とを、コンピュータに実行させるものである。
この音響信号処理プログラムによれば、周波数領域の音響信号における第1の信号部分と第2の信号部分との間の遅延時間差は時間−周波数変換のシフト量に相当する時間の整数倍であるため、第2の信号部分として、以前の時間−周波数変換により既に得られている第1の信号部分を用いることができる。そのため、第2の信号部分を得るための時間−周波数変換が不要である。また、第1および第2の畳み込み演算の結果の加算が周波数領域で行われるので、原音響信号の1つの信号部分(第1または第2の信号部分)当たり、周波数領域から時間領域への1回の変換により時間領域の音響信号を出力することができる。それにより、演算回数を低減することができる。その結果、受音点に到来する音を表す音響信号を出力するための演算処理における処理量を低減することが可能となる。
本発明によれば、受音点に到来する音を表す音響信号を出力するための演算処理における処理量を低減することが可能となる。
以下、本発明の実施の形態に係る音響信号処理装置および音響信号プログラムについて図面を用いて詳細に説明する。
(1)音響信号処理装置の機能的な構成
図1は本発明の一実施の形態に係る音響信号処理装置の構成を示す機能ブロック図である。図2は仮想的な音響空間を示す模式図である。図3は図1の音響信号処理装置のハードウエア構成の一例を示すブロック図である。
図1は本発明の一実施の形態に係る音響信号処理装置の構成を示す機能ブロック図である。図2は仮想的な音響空間を示す模式図である。図3は図1の音響信号処理装置のハードウエア構成の一例を示すブロック図である。
図1の音響信号処理装置100は、仮想的な音響空間(以下、仮想空間と呼ぶ)内で受音点に到来する音を表す音響信号を出力する。ここで、図2を参照して仮想空間の一例を説明する。
図2において、仮想空間300内に主音源S0および受音点Rが配置される。仮想空間300、主音源S0および受音点Rはコンピュータプログラム上で仮想的に作成される。主音源S0から音が前後、左右および上下の3次元方向に放射される。主音源S0から放射された音は、受音点Rに直接音V0として到達するとともに、仮想空間300の壁または天井等により1回または複数回反射され、受音点Rに複数の反射音V1,V2,V3,V4,…,Vkとして到達する。ここで、kは自然数であり、反射音の数を表す。図2では、複数の反射音V1,V2,V3,V4,…,Vkの方向が2次元方向で表されているが、複数の反射音V1,V2,V3,V4,…,Vkの方向が3次元方向で表されてもよい。
複数の反射音V1,V2,V3,V4,…,Vkは、等価的にそれぞれ仮想音源S1,S2,S3,S4,…,Skから放射されるものとみなすことができる。仮想音源S1,S2,S3,S4,…,Skは、受音点Rから反射音V1,V2,V3,V4,…,Vkの入射方向と逆方向に向かう直線上に位置する。受音点Rと仮想音源S1,S2,S3,S4,…,Skとの間の距離は、反射音V1,V2,V3,V4,…,Vkが主音源S0から受音点Rに到達するまでの経路の長さに等しい。
以下、主音源S0から放射された音が直接音V0として受音点Rに到達するまでの時間を遅延量と呼ぶ。同様に、主音源S0から放射された音が反射音V1,V2,…,Vkとして受音点Rに到達するまでの時間を遅延量と呼ぶ。反射音V1,V2,…,Vkの遅延量は、直接音V0の遅延量よりも大きい。反射音V1,V2,…,Vkの遅延量と直接音V0の遅延量との差を遅延時間差と呼ぶ。
受音点Rに到来する音の方向ごとに周波数領域の頭部伝達関数(HRTF;Head-Related Transfer Function)が予め求められる。すなわち、複数の方向に対応する複数の頭部伝達関数が予め求められる。ここで、受音点Rに到来する音の方向が3次元方向で表されている場合、複数の3次元方向にそれぞれ対応する頭部伝達関数が予め求められる。受音点Rでの直接音V0の到来方向に対応する頭部伝達関数は、主音源S0から受音点Rまでの音の伝達特性を示す。受音点Rでの反射音V1,V2,…,Vkの到来方向に対応する頭部伝達関数は、それぞれ仮想音源S1,S2,…,Skから受音点Rまでの音の伝達特性を示す。これらの頭部伝達関数は、後述するように受音点Rに到来する音を表す音響信号を算出するために用いられる。
図1において、音響信号処理装置100は、部屋形状指示部1、主音源位置指示部2、頭部伝達関数データベース(以下、HRTFデータベースと呼ぶ)3、および頭部伝達関数ブロック選択部(以下、HRTFブロック選択部と呼ぶ)4を含む。また、音響信号処理装置100は、仮想音源位置算出部5、遅延量算出部6、遅延量調整部7、遅延ブロック数算出部8、および音響ブロック選択部9を含む。さらに、音響信号処理装置100は、畳み込み演算部10、時間領域変換部11、音響信号出力部12、音響信号入力部13、周波数領域変換部14、および周波数領域音響バッファ15を含む。音響信号処理装置100の全体は同一のサンプリング周波数で動作する。音響信号処理装置100の全体のサンプリング周波数をサンプリング周波数fsと表記する。サンプリング周波数fsは、例えば48kHzである。
部屋形状指示部1は、仮想空間の形状(以下、部屋形状と呼ぶ)を指示する部屋データを出力する。例えば、部屋形状指示部1は、ユーザが画面上でマウス等の入力装置を用いて描画した部屋形状を示す部屋データを出力し、または予め準備された複数の部屋形状のうちユーザにより選択された部屋形状を示す部屋データを出力する。あるいは、部屋形状指示部1は、プログラム上で動的に部屋データを出力してもよい。例えば、ビデオゲームにおいてキャラクターの位置によりプログラムが適切な部屋データを選択してもよい。この場合、ビデオゲームのプログラムの一部が部屋形状指示部1に相当する。
主音源位置指示部2は、仮想空間内での主音源S0の位置を示す位置データを出力する。例えば、主音源位置指示部2は、ユーザが画面上で描画した部屋形状を有する仮想空間内での主音源S0の位置を示す位置データを出力する。あるいは、主音源位置指示部2は、プログラム上で動的に位置データを出力してもよい。例えば、ビデオゲームにおけるキャラクターの位置を示す位置データをプログラムが出力してもよい。この場合、ビデオゲームのプログラムの一部が主音源位置指示部2に相当する。主音源S0の位置データは、例えば、受音点Rから主音源S0へ向かう方向および受音点Rから主音源S0までの距離を表すベクトルデータからなる。
仮想音源位置算出部5は、部屋形状指示部1から出力される部屋データおよび主音源位置指示部2から出力される位置データに基づいて、受音点Rに到来する複数の反射音V1,V2,…,Vkを仮想的に放射する複数の仮想音源S1,S2,…,Skの位置を算出する。仮想音源位置算出部5からは、複数の仮想音源S1,S2,…,Skの位置を示す位置データが出力される。仮想音源S1,S2,…,Skの位置データは、例えば、受音点Rから仮想音源S1,S2,…,Skへ向かう方向と受音点Rから仮想音源S1,S2,…,Skまでの距離とを表すベクトルデータからなる。また、仮想音源位置算出部5は、直接音V0に対する複数の反射音V1,V2,…,Vkの振幅減衰量を算出する。振幅減衰量は、各反射音V1,V2,…,Vkごとに、音の経路の長さ(距離)、反射の回数および各反射面の吸音率等に基づいて算出される。なお、振幅減衰量の算出処理が音の周波数帯域により異なるように行われてもよい。
遅延量算出部6は、主音源位置指示部2から出力される位置データに基づいて直接音V0の遅延量を算出するとともに、仮想音源位置算出部5から出力される位置データに基づいて複数の反射音V1,V2,…,Vkの遅延量をそれぞれ算出する。ここで、複数の反射音V1,V2,…,Vkの遅延量と直接音V0の遅延量との差を遅延時間差と呼ぶ。
遅延量調整部7は、複数の反射音V1,V2,…,Vkの遅延時間差がサンプリング周波数fsとFFT(高速フーリエ変換)シフトサイズとにより定まる時間の整数倍になるように複数の反射音V1,V2,…,Vkの遅延量を調整する。なお、FFTシフトサイズについては後述する。具体的には、各反射音の遅延時間差がFFTシフトサイズをサンプリング周波数fsで除算することにより得られる時間の整数倍になるように各反射音の遅延量が調整される。この場合、調整後の反射音V1,V2,…,Vkの遅延量と調整前の反射音V1,V2,…,Vkの遅延量と間の誤差が最小となるように整数が選択される。
遅延ブロック数算出部8は、複数の反射音V1,V2,…,Vkについての遅延ブロック数を算出する。ここで、遅延ブロック数とは、調整後の遅延時間差に相当する単位ブロック(フレーム)の数である。単位ブロックとは、一度に処理される音響信号のサンプル(すなわち音響信号の処理単位)である。本実施の形態では、単位ブロックはNサンプルからなる。Nは自然数である。
音響信号入力部13は、時間領域の音響信号を入力する。例えば、音響信号入力部13は、外部機器またはマイクロフォンから音響入力端子に与えられるアナログの音響信号をサンプリング周波数fsでデジタルの音響信号に変換する。あるいは、音響信号入力部13は、光学ディスク、磁気ディスクまたはメモリカード等の記憶媒体に記憶されたデジタルの音響信号を入力する。以下、音響信号入力部13により入力された時間領域の音響信号を原音響信号と呼ぶ。原音響信号のサンプリング周波数はfsである。
周波数領域変換部14は、音響信号入力部13により入力された原音響信号をFFT(高速フーリエ変換)により周波数領域の音響信号の信号部分に順次変換する。以下、周波数領域の音響信号の信号部分を音響ブロックと呼ぶ。周波数領域変換部14により変換された音響ブロックは、周波数領域音響バッファ15に順次格納される。
音響ブロック選択部9は、遅延ブロック数算出部8により算出された遅延ブロック数に基づいて、周波数領域音響バッファ15に格納された音響ブロックから、直接音V0および複数の反射音V1,V2,…,Vkに対応する音響ブロックを選択する。
一方、HRTFデータベース3には、周波数領域の複数組の分割頭部伝達関数(以下、分割HRFTブロックと呼ぶ)が予め格納される。分割HRTFブロックの詳細については後述する。複数組の分割HRTFブロックは、受音点Rに到来する音の複数の方向に対応して予め準備されている。受音点Rに到来する音の方向が3次元方向で表される場合、複数組の分割HRTFブロックはそれぞれ3次元方向に対応する。
HRTFブロック選択部4は、主音源位置指示部2および仮想音源位置算出部5から出力される位置データに基づいて、HRTFデータベース3に格納される複数組の分割HRTFブロックから、直接音V0および複数の反射音V1,V2,V3,…,Vkに対応する分割HRTFブロックを選択する。
畳み込み演算部10は、音響ブロック選択部9により選択された音響ブロックおよびHRTFブロック選択部4により選択された分割HRTFブロックを用いて、直接音V0および複数の反射音V1,V2,…,Vkについての周波数領域での畳み込み演算を行い、畳み込み演算の結果を複素ベクトル加算する。この場合、畳み込み演算部10は、仮想音源位置算出部5により算出された振幅減衰量に基づいて音響ブロックにおける各周波数成分の振幅を調整する。
時間領域変換部11は、畳み込み演算部10の演算結果をIFFT(逆高速フーリエ変換)により時間領域の音響信号に順次変換する。
音響信号出力部12は、時間領域変換部11により変換されたサンプリング周波数fsの音響信号を出力する。例えば、音響信号出力部12は、サンプリング周波数fsのデジタルの音響信号をアナログの音響信号に変換し、音響出力端子を通してヘッドフォンまたはスピーカにアナログの音響信号を出力する。それにより、ヘッドフォンまたはスピーカから音が発生される。
本実施の形態では、分割HRTFブロックを用いたオーバラップセーブ(Overlap-Save)法により周波数領域での畳み込み演算が行われる。以下、分割HRTFブロックを用いたオーバラップセーブ法を分割オーバラップセーブ法と呼ぶ。
(2)音響信号処理装置のハードウエア構成
図3は音響信号処理装置100のハードウエア構成の一例を示すブロック図である。
図3は音響信号処理装置100のハードウエア構成の一例を示すブロック図である。
図3の音響信号処理装置100は、CPU(中央演算処理装置)110、ROM(リードオンリメモリ)120、RAM(ランダムアクセスメモリ)130、記憶装置140、表示装置150、入力装置160および出力装置170を含む。
ROM120は、例えば不揮発性メモリからなり、システムプログラムおよび音響信号処理プログラム等のコンピュータプログラムを記憶する。RAM130は、例えば揮発性メモリからなり、CPU110の作業領域として用いられるとともに、各種データを一時的に記憶する。CPU110は、ROM120に記憶された音響信号処理プログラムをRAM130上で実行することにより後述する音響信号処理を行う。この場合、図1の各構成要素の機能が実現される。
記憶装置140は、ハードディスク、光学ディスク、磁気ディスクまたはメモリカード等の記憶媒体を含む。この記憶装置140には、図1のHRTFデータベース3および周波数領域音響バッファ15が構成される。上記の音響信号処理プログラムが記憶装置140に記憶されてもよい。また、例えば、図1の音響信号処理装置100がビデオゲームのプログラムの一部として構成される場合、ビデオゲームのプログラムが記憶装置140に記憶されてもよい。
なお、本実施の形態における音響信号処理プログラムは、コンピュータが読み取り可能な記録媒体に格納された形態で提供されてROM120または記憶装置140にインストールされてもよく、通信網を介した配信の形態で提供されてROM120または記憶装置140にインストールされてもよい。
表示装置150は、液晶表示装置、有機EL(エレクトロルミネッセンス)表示装置またはプラズマディスプレイ装置等からなる。入力装置160は、マウス、キーボード、および音響入力端子等を含む。入力装置160がビデオゲーム用のコントローラであってもよい。
表示装置150および入力装置160は、例えばユーザが画面上で部屋形状および主音源の位置を指示するために用いられる。表示装置150および入力装置160がタッチパネルとして一体化されてもよい。
出力装置170は、音響出力端子およびヘッドフォン等を含む。出力装置170がスピーカを含んでもよい。出力装置170の音響出力端子からは音響信号処理により得られた音響信号が出力される。
音響信号処理装置100は、CPU110の代わりにDSP(Digital Signal Processor)を備えてもよく、またはCPU110に加えてDSPを備えてもよい。また、図1の各構成要素の一部または全てが電子回路等のハードウエアにより構成されてもよい。
(3)頭部伝達関数
図4は時間領域の頭部インパルス応答および周波数領域の頭部伝達関数の説明図である。
図4は時間領域の頭部インパルス応答および周波数領域の頭部伝達関数の説明図である。
直接音V0に対応する時間領域の頭部インパルス応答(HRIR;;Head-Related Impulse Response)h0がM個の部分(以下、分割HRIRブロックと呼ぶ)に分割される。Mは自然数である。図4の例では、頭部インパルス応答h0が時間軸上で4つの分割HRIRブロックh0,0,h0,1,h0,2,h0,3に分割される。各分割HRIRブロックh0,0,h0,1,h0,2,h0,3はNサンプルからなる。頭部インパルス応答のサンプリング周波数は原音響信号のサンプリング周波数fsと等しい。
分割HRIRブロックh0,0の後にNサンプルの0が付加され、0を含む2NサンプルがFFTにより周波数領域の分割HRTFブロックH0,0に変換される。同様に、分割HRIRブロックh0,1,h0,2,h0,3を用いて周波数領域の分割HRTFブロックH0,1,H0,2,H0,3がそれぞれ得られる。
なお、分割HRIRブロックh0,0,h0,1,h0,2,h0,3の前にそれぞれNサンプルの0が付加されてもよい。
同様にして、反射音V1,V2,…,Vkの各々の方向に対応する時間領域の頭部インパルス応答がM個の分割HRIRブロックに分割され、M個の分割HRIRブロックがFFTによりM個の周波数領域の分割HRTFブロックに変換される。
図5はHRTFデータベース3に格納される複数組の分割HRTFブロックを示す模式図である。
図5に示すように、HRTFデータベース3には、k個の方向に対応するk組の分割HRTFブロックが予め格納されている。分割HRTFブロックH0,0,H0,1,H0,2,H0,3は直接音V0の方向に対応する。分割HRTFブロックH1,0,H1,1,H1,2,H1,3は反射音V1の方向に対応する。分割HRTFブロックH2,0,H2,1,H2,2,H2,3は反射音V2の方向に対応する。分割HRTFブロックHk,0,Hk,1,Hk,2,Hk,3は反射音Vkの方向に対応する。
(4)音響ブロック
図6は時間領域の原音響信号および周波数領域の音響ブロックの説明図である。図6において、時間は右から左へ経過する。
図6は時間領域の原音響信号および周波数領域の音響ブロックの説明図である。図6において、時間は右から左へ経過する。
原音響信号VINにおいて、単位ブロックvnが現在入力されている。単位ブロックvn−1,vn−2,vn−3,vn−4は、それぞれ1回前、2回前、3回前および4回前に入力された単位ブロックである。各単位ブロックvn,vn−1,vn−2,vn−3,vn−4のサイズはNサンプルである。
単位ブロックvn,vn−1からなる信号部分xnがFFTにより周波数領域の音響ブロックXnに変換される。同様に、単位ブロックvn−1,vn−2からなる信号部分xn−1がFFTにより周波数領域の音響ブロックXn−1に変換され、単位ブロックvn−2,vn−3からなる信号部分xn−2がFFTにより周波数領域の音響ブロックXn−2に変換され、単位ブロックvn−3,vn−4からなる信号部分xn−3がFFTにより周波数領域の音響ブロックXn−3に変換される。音響ブロックXn,Xn−1,Xn−2,Xn−3は図1の周波数領域音響バッファ15に順次格納される。
ここで、1度のFFTで処理される信号部分のサイズをFFTサイズと呼ぶ。図6の例では、FFTサイズは2Nサンプルである。また、時間軸上で各FFTの対象である単位ブロックとその前のFFTの対象である単位ブロックとのずれ量をFFTシフトサイズと呼ぶ。図6の例では、FFTシフトサイズSSはNサンプルであり、単位ブロックのサイズに等しい。この場合、FFTサイズはFFTシフトサイズSSの2倍となっている。なお、FFTサイズとFFTシフトサイズSSとの関係は、本例に限定されず、FFTサイズがFFTシフトサイズSSの2倍以外(例えば4倍)のサイズであってもよい。
(5)遅延量の調整
図7は直接音V0および反射音V1,V2,…,Vkに対応する頭部インパルス応答、分割HRTFブロック、調整前の遅延量、調整後の遅延量および遅延ブロック数を示す図である。図7において、M1,M2,…Mkは整数である。
図7は直接音V0および反射音V1,V2,…,Vkに対応する頭部インパルス応答、分割HRTFブロック、調整前の遅延量、調整後の遅延量および遅延ブロック数を示す図である。図7において、M1,M2,…Mkは整数である。
直接音V0には、時間領域の頭部インパルス応答h0および周波数領域の1組の分割HRTFブロックH0,0,H0,1,H0,2,H0,3が対応する。直接音V0の調整前の遅延量はd0であり、調整後の遅延量もd0であり、遅延ブロック数は0である。
反射音V1には、時間領域の頭部インパルス応答h1および周波数領域の1組の分割HRTFブロックH1,0,H1,1,H1,2,H1,3が対応する。反射音V1の調整前の遅延量はd1である。図1の遅延量調整部7は、反射音V1の遅延量をd0+M1×SS/fsに調整する。この場合、遅延ブロック数はM1である。
同様に、反射音V2には、時間領域の頭部インパルス応答h2および周波数領域の1組の分割HRTFブロックH2,0,H2,1,H2,2,H2,3が対応する。反射音V2の調整前の遅延量はd2であり、調整後の遅延量はd0+M2×SS/fsであり、遅延ブロック数はM2である。また、反射音Vkには、時間領域の頭部インパルス応答hkおよび周波数領域の1組の分割HRTFブロックHk,0,Hk,1,Hk,2,Hk,3が対応する。反射音Vkの調整前の遅延量はdkであり、調整後の遅延量はd0+Mk×SS/fsであり、遅延ブロック数はMkである。
本例では、反射音V1,V2,…,Vkの遅延時間差は、M1×SS/fs、M2×SS/fsおよびMk×SS/fsにそれぞれ調整される。すなわち、反射音V1,V2,…,Vkの遅延時間差がFFTシフトサイズSSに相当する時間の整数倍に調整される。
(6)周波数領域での畳み込み演算
図8は周波数領域での分割HRTFブロックと音響ブロックとの畳み込み演算を示す図である。図8において、時間は右から左に経過する。
図8は周波数領域での分割HRTFブロックと音響ブロックとの畳み込み演算を示す図である。図8において、時間は右から左に経過する。
時間軸の左端部が現時点で入力されている原音響信号VINの部分である。現時点では、図6に示したように、原音響信号VINの2Nサンプルの部分がFFTにより音響ブロックXnに変換される。音響ブロックXn−1,Xn−2,…,Xn−12は、既に図1の周波数領域音響バッファ15に格納されている。
図8の例では、反射音V1の遅延時間差DL1はFFTシフトサイズSSに相当する時間の3倍であり、遅延ブロック数M1は3である。反射音Vkの遅延時間差DLkはFFTシフトサイズSSに相当する時間の9倍であり、遅延ブロック数Mkは9である。
図5のHRTFデータベース3に格納された複数組の分割HRTFブロックから、直接音V0に対応する分割HRTFブロックH0,0,H0,1,H0,2,H0,3が選択される。また、反射音V1に対応する分割HRTFブロックH1,0,H1,1,H1,2,H1,3が選択され、反射音Vkに対応する分割HRTFブロックHk,0,Hk,1,Hk,2,Hk,3が選択される。
直接音V0については、周波数領域で分割HRTFブロックH0,0,H0,1,H0,2,H0,3と音響ブロックXn,Xn−1,Xn−2,Xn−3との畳み込み演算が行われ、畳み込み演算結果Y0が得られる。反射音V1については、周波数領域で分割HRTFブロックH1,0,H1,1,H1,2,H1,3と(遅延ブロック数M1が3であるので)音響ブロックXn−3,Xn−4,Xn−5,Xn−6との畳み込み演算が行われ、畳み込み演算結果Y1が得られる。反射音Vkについては、周波数領域で分割HRTFブロックHk,0,Hk,1,Hk,2,Hk,3と(遅延ブロック数Mkが9であるので)音響ブロックXn−9,Xn−10,Xn−11,Xn−12との畳み込み演算が行われ、畳み込み演算結果Ykが得られる。畳み込み演算の詳細については後述する。
図1の仮想音源位置算出部5により反射音V1について算出された振幅減衰量に応じたゲインが畳み込み演算結果Y1に乗算される。同様に、反射音Vkについて算出された振幅減衰量に応じたゲインが畳み込み演算結果Ykに乗算される。それにより、畳み込み演算結果Y1,…,Ykの振幅が調整される。なお、振幅減衰量が0の場合にはゲインは1となる。畳み込み演算結果Y0および振幅調整後の畳み込み演算結果Y1,…,Ykが複素ベクトル加算され、加算結果がIFFTにより時間領域の音響信号ynに変換される。
図9は時間領域での音響信号のつなぎ合わせを示す図である。図9に示すように、今回の処理で得られた音響信号ynの前半部分のNサンプルが破棄される。音響信号ynの後半部分のNサンプルが前回の処理で得られた音響信号yn−1の後半部分のNサンプルとつなぎ合わさせる。この操作が順次行われることにより音響信号VOUTが逐次出力される。
なお、図4に示される周波数領域の各分割HRTFブロックの算出の際に各分割HRIRブロックの前にそれぞれNサンプルの0が付加された場合には、今回の処理で得られた音響信号ynの後半部分のNサンプルが破棄され、音響信号ynの前半部分のNサンプルが前回の処理で得られた音響信号yn−1の前半部分のNサンプルとつなぎ合わさせる。
(7)音響信号処理装置の全体の動作
図10は図1の音響信号処理装置100により行われる音響信号処理を示すフローチャートである。図10の音響信号処理は、図3のCPU110がROM120または記憶装置140に記憶された音響信号処理プログラムを実行することに行われる。
図10は図1の音響信号処理装置100により行われる音響信号処理を示すフローチャートである。図10の音響信号処理は、図3のCPU110がROM120または記憶装置140に記憶された音響信号処理プログラムを実行することに行われる。
図1の部屋形状指示部1は、部屋形状を指示する部屋データを出力する(ステップS1)。また、主音源位置指示部2は、指示された部屋形状を有する仮想空間内での主音源S0の位置を示す位置データを出力する(ステップS2)。
次に、仮想音源位置算出部5は、部屋データおよび主音源S0の位置データに基づいて、複数の仮想音源S1,S2,…,Skの位置を算出する(ステップS3)。それにより、仮想音源S1,S2,…,Skの位置を示す位置データが出力される。
遅延量算出部6は、主音源S0および仮想音源S1,S2,…,Skの位置データに基づいて、直接音V0および反射音V1,V2,…,Vkの遅延量をそれぞれ算出する(ステップS4)。遅延量調整部7は、複数の反射音V1,V2,…,Vkの遅延時間差をFFTシフトサイズに相当する時間(=SS/fs)の整数倍に調整する(ステップS5)。遅延ブロック数算出部8は、調整後の遅延時間差に基づいて複数の反射音V1,V2,…,Vkについての遅延ブロック数を算出する。
HRTFブロック選択部4は、主音源位置指示部2および仮想音源位置算出部5から出力される位置データに基づいて、HRTFデータベース3に格納される複数組の分割HRTFブロックから、直接音V0および複数の反射音V1,V2,…,Vkに対応する分割HRTFブロックを選択する(ステップS6)。
畳み込み演算部10、時間領域変換部11、音響信号出力部12および周波数領域変換部14は畳み込み演算処理を行う(ステップS7)。
図11は畳み込み演算処理の詳細を示すフローチャートである。図11における変数nは現在の処理を意味し、変数nの値は0から1ずつ増加する。Mは頭部伝達関数の分割数(分割HRTFブロックの数)を表し、kは反射音の数を表す。M1,…,Mkは、反射音V1,…,Vkについての遅延ブロック数を表す。
初期状態では変数nの値は0である(ステップS11)。図1の周波数領域変換部14は、サンプリング周波数fsの原音響信号VINの信号部分xnをFFTにより音響ブロックXnに変換する(ステップS12)。信号部分xnは、原音響信号VINから現在取得した単位ブロックvnと前回取得した単位ブロックvn−1とからなる(図6参照)。また、周波数領域変換部14は、音響ブロックXnを周波数領域音響バッファ15に格納する(ステップS13)。後述するステップS34で変数nの値が増加するにしたがって周波数領域音響バッファ15に順次音響ブロックXnが格納される。
ステップS14〜S19では、直接音V0についての畳み込み演算結果Y0が算出される。ステップS20〜S25では、反射音V1についての畳み込み演算結果Y1が算出され、ステップS26〜S31では、反射音Vkについての畳み込み演算結果Ykが算出される。ステップS14〜S19の処理、ステップS20〜S25の処理およびステップS26〜S31の処理は、並列的に実行される。
畳み込み演算部10は、まず、変数mの値を初期値0に設定し(ステップS14,S20,S26)、畳み込み演算結果Y0,Y1,…Ykを初期値0に設定する(ステップS15,S21,S27)。次に、畳み込み演算部10は、音響ブロックXn−mと分割HRTFブロックH0,mとの複素ベクトル乗算を行い、Y=Xn−m*H0,mを畳み込み演算結果として算出する(ステップS16)。次に、畳み込み演算部10は、前回の畳み込み演算結果Y0に今回の畳み込み演算結果Yを複素ベクトル加算する(ステップS17)。その後、変数mに1を加算し(ステップS18)、変数mがM−1よりも大きいか否かを判定する(ステップS19)。変数mがM−1になるまで、ステップS16〜S19の処理が繰り返し行われる。それにより、Y0=Xn*H0,0+Xn−1*H0,1+Xn−2*H0,2+…+Xn−M+1*H0,M−1が算出される。ここで、「*」は複素ベクトル乗算を意味し、「+」は複素ベクトル加算を意味する。図8の例では、M=4であるため、Y0=Xn*H0,0+Xn−1*H0,1+Xn−2*H0,2+Xn−3*H0,3が算出される。
上記の畳み込み演算において、音響ブロックXn−1,Xn−2,…,Xn−M+1は、以前の処理で既に算出され、周波数領域音響バッファ15に格納されている。
同様にして、ステップS22〜S25において、Y1=Xn−M1*H1,0+Xn−1−M1*H1,1+Xn−2−M1*H1,2+…+Xn−M+1−M1*H1,M−1が算出される。ここで、M1は反射音V1の遅延ブロック数である。図8の例では、M=4であり、M1=3であるため、Y1=Xn−3*H1,0+Xn−4*H1,1+Xn−5*H1,2+Xn−6*H1,3が算出される。
上記の畳み込み演算において、音響ブロックXn−M1,Xn−1−M1,Xn−2−M1…,Xn−M+1−M1は、以前の処理で既に算出され、周波数領域音響バッファ15に格納されている。
また、ステップS28〜S31において、Y1=Xn−Mk*Hk,0+Xn−1−Mk*Hk,1+Xn−2−Mk*Hk,2+…+Xn−M+1−Mk*Hk,M−1が算出される。ここで、Mkは反射音Vkの遅延ブロック数である。図8の例では、M=4であり、Mk=9であるため、Y1=Xn−9*Hk,0+Xn−10*Hk,1+Xn−11*Hk,2+Xn−12*Hk,3が算出される。
上記の畳み込み演算において、音響ブロックXn−Mk,Xn−1−Mk,Xn−2−Mk,…,Xn−M+1−Mkは、以前の処理で既に算出され、周波数領域音響バッファ15に格納されている。
時間領域変換部11は、畳み込み演算結果Y0,Y1,…,Ykを周波数領域で複素ベクトル加算し、複素ベクトル加算の結果をIFFTによりサンプリング周波数fsの時間領域の音響信号ynに変換する(ステップS32)。音響信号出力部12は、時間領域の音響信号ynを出力する(ステップS33)。その後、変数nの値が1増加され(ステップS34)、ステップS12〜S34の処理が行われる。上記のように、音響信号ynの前半部分が破棄され、残りの後半部分が前回の処理で得られた音響信号yn−1の後半部分につなぎ合わされる。
(8)実施の形態の効果
本実施の形態に係る音響信号処理装置100によれば、反射音V1,V2,…,Vkと直接音V0との遅延時間差がFFTシフトサイズに相当する時間の整数倍に調整されるので、反射音V1,V2,…,Vkに対応する音響ブロックとして、既に算出された直接音V0に対応する音響ブロックを用いることができる。そのため、反射音V1,V2,…,Vkに対応する音響ブロックを得るためのFFTが不要である。また、直接音V0および反射音V1,V2,…,Vkについての畳み込み演算結果Y0,Y1,…Ykの複素ベクトル加算が周波数領域で行われるので、1回のIFFTにより時間領域の音響信号VOUTを得ることができる。一方、畳み込み演算結果の加算が時間領域で行われる場合には、1つのFFTに対して(k+1)回のIFFTが必要となると考えられる。
本実施の形態に係る音響信号処理装置100によれば、反射音V1,V2,…,Vkと直接音V0との遅延時間差がFFTシフトサイズに相当する時間の整数倍に調整されるので、反射音V1,V2,…,Vkに対応する音響ブロックとして、既に算出された直接音V0に対応する音響ブロックを用いることができる。そのため、反射音V1,V2,…,Vkに対応する音響ブロックを得るためのFFTが不要である。また、直接音V0および反射音V1,V2,…,Vkについての畳み込み演算結果Y0,Y1,…Ykの複素ベクトル加算が周波数領域で行われるので、1回のIFFTにより時間領域の音響信号VOUTを得ることができる。一方、畳み込み演算結果の加算が時間領域で行われる場合には、1つのFFTに対して(k+1)回のIFFTが必要となると考えられる。
これらにより、畳み込み演算処理における演算回数を低減することができる。その結果、音響信号VOUTを出力するための演算処理における処理量を低減することが可能となる。
また、分割HRTFブロックを用いた分割オーバラップセーブ法が用いられるので、単位ブロックのサイズを小さくすることができる。それにより、FFTおよびIFFTにおける乗算回数を低減することができる。したがって、音響信号VOUTを出力するための演算処理における処理量をより低減することが可能となる。
さらに、FFTシフトサイズが単位ブロックのサイズと等しいため、単位ブロックのサイズを小さくすることにより、遅延時間差の調整による誤差および畳み込み演算における遅延時間を低減することができる。それにより、受音点Rに到来する音をより高い精度で再現することができる。
以上の結果、音の再現精度を低下させることなく音響信号処理装置100の低コスト化および小型化が可能となる。
(9)演算回数の比較
(a)本実施の形態および参考形態における演算回数
以下、本実施の形態に係る畳み込み演算処理における演算回数を参考形態に係る畳み込み演算処理における演算回路と比較する。
(a)本実施の形態および参考形態における演算回数
以下、本実施の形態に係る畳み込み演算処理における演算回数を参考形態に係る畳み込み演算処理における演算回路と比較する。
参考形態における音響信号処理では、反射音V1,V2,…,Vkの遅延量の調整が行われない。したがって、反射音V1,V2,…,Vkの遅延時間差は、FFTシフトサイズに相当する時間の整数倍とはならない。
図12は参考形態に係る畳み込み演算処理における周波数領域での分割HRTFブロックと音響ブロックとの畳み込み演算を示す図である。図12において、時間は右から左に経過する。
図12の例では、反射音V1の遅延時間差dl1および反射音Vkの遅延時間差dlkはFFTシフトサイズSSに相当する時間の整数倍ではない。原音響信号VINのFFTにより直接音V0に対応する音響ブロックX0,n,X0,n−1,X0,n−2,X0,n−3を算出するとともに、反射音V1に対応する音響ブロックX1,n,X1,n−1,X1,n−2,X1,n−3および反射音Vkに対応する音響ブロックXk,n,Xk,n−1,Xk,n−2,Xk,n−3をそれぞれ算出する必要がある。
直接音V0については、周波数領域で分割HRTFブロックH0,0,H0,1,H0,2,H0,3と音響ブロックX0,n,X0,n−1,X0,n−2,X0,n−3との畳み込み演算が行われ、周波数領域の音響信号Y0が得られる。反射音V1については、周波数領域で分割HRTFブロックH1,0,H1,1,H1,2,H1,3と音響ブロックX1,n,X1,n−1,X1,n−2,X1,n−3との畳み込み演算が行われ、周波数領域の音響信号Y1が得られる。反射音Vkについては、周波数領域で分割HRTFブロックHk,0,Hk,1,Hk,2,Hk,3と音響ブロックXk,n,Xk,n−1,Xk,n−2,Xk,n−3との畳み込み演算が行われる。
図13は参考形態に係る畳み込み演算処理の詳細を示すフローチャートである。
初期状態では変数nの値は0である(ステップS51)。ステップS52〜S59では、直接音V0についての畳み込み演算結果Y0が算出される。ステップS60〜S67では、反射音V1についての畳み込み演算結果Y1が算出され、ステップS68〜S75では、反射音Vkについての畳み込み演算結果Ykが算出される。
直接音V0について、原音響信号VINの信号部分x0,nがFFTにより音響ブロックX0,nに変換され(ステップS52)、音響ブロックX0,nが周波数領域音響バッファ15に格納される(ステップS53)。また、反射音V1について、原音響信号VINの信号部分x1,nがFFTにより音響ブロックX1,nに変換され(ステップS60)、音響ブロックX1,nが周波数領域音響バッファ15に格納される(ステップS61)。同様に、反射音Vkについて、原音響信号VINの信号部分xk,nがFFTにより音響ブロックXk,nに変換され(ステップS68)、音響ブロックXk,nが周波数領域音響バッファ15に格納される(ステップS69)。
ステップS54〜S59において、直接音V0について、Y0=X0,n*H0,0+X0,n−1*H0,1+X0,n−2*H0,2+…+X0,n−m*H0,mが算出される。ステップS62〜S67において、反射音V1について、Y1=X1,n*H1,0+X1,n−1*H1,1+X1,n−2*H1,2+…+X1,n−m*H1,mが算出される。ステップS68〜S75において、反射音Vkについて、Yk=Xk,n*Hk,0+Xk,n−1*Hk,1+Xk,n−2*Hk,2+…+Xk,n−m*Hk,mが算出される。
ステップS76〜S78の処理は、図11のステップS31〜S33の処理と同様である。
ここで、図11の実施の形態に係る畳み込み演算処理における演算回数と図13の参考形態に係る畳み込み演算処理における演算回数とを比較する。
単位ブロックのサイズをNサンプルとし、頭部伝達関数の分割数をMとし、主音源および仮想音源の数をkとする。この場合、FFTの対象となるサンプル数は2Nとなる。
FFTでの乗算回数およびIFFTでの乗算回数をそれぞれOAとし、ループを含む複素ベクトル積での乗算回数をOBとすると、乗算回数OA,OBは次式のようになる。
OA=2×(2N)×log2(2N)
OB=M×4×N
図11の実施の形態における演算回数PIは、次式のようになる。
OB=M×4×N
図11の実施の形態における演算回数PIは、次式のようになる。
PI=OA+k×OB+OA
図13の参考形態における演算回数PRは、次式のようになる。
図13の参考形態における演算回数PRは、次式のようになる。
PR=k×(OA+OB)+OA
単位ブロックのサイズNを32サンプルとし、頭部伝達関数の分割数Mを4とし、主音源および仮想音源の数kを100とすると、乗算回数OA,OBは次のようになる。
単位ブロックのサイズNを32サンプルとし、頭部伝達関数の分割数Mを4とし、主音源および仮想音源の数kを100とすると、乗算回数OA,OBは次のようになる。
OA=2×(2×32)×log2(2×32)=768
OB=4×4×32=512
これにより、図11の実施の形態における演算回数PIは、次式のようになる。
OB=4×4×32=512
これにより、図11の実施の形態における演算回数PIは、次式のようになる。
PI=768+100×512+768=52736
一方、図13の参考形態における演算回数PRは、次式のようになる。
一方、図13の参考形態における演算回数PRは、次式のようになる。
PR=100×(768+512)+768=128778
演算回数PIと演算回数PRとの比は次のように算出される。
演算回数PIと演算回数PRとの比は次のように算出される。
PI/PR=52736/128778≒0.4
したがって、本実施の形態に係る畳み込み演算処理によれば、参考形態に係る畳み込み演算処理に比べて演算回数が約60%削減される。仮想音源の数(反射音の数)が増加するほど、演算回数の削減の効果は顕著となる。
したがって、本実施の形態に係る畳み込み演算処理によれば、参考形態に係る畳み込み演算処理に比べて演算回数が約60%削減される。仮想音源の数(反射音の数)が増加するほど、演算回数の削減の効果は顕著となる。
なお、上記の演算回数の比較では、加算回数およびバッファに対する読み書きについては考慮していない。
(b)時間領域の畳み込み演算処理における演算回数
次に、時間領域の畳み込み演算処理を用いた音響信号処理における演算回数を算出する。
次に、時間領域の畳み込み演算処理を用いた音響信号処理における演算回数を算出する。
時間領域の畳み込み演算処理における演算回数OTは、次式のようになる。
OT=k×M×N2
単位ブロックのサイズNを32サンプルとし、頭部伝達関数の分割数Mを4とし、主音源および仮想音源の数kを100とすると、演算回数OTは次のようになる。
単位ブロックのサイズNを32サンプルとし、頭部伝達関数の分割数Mを4とし、主音源および仮想音源の数kを100とすると、演算回数OTは次のようになる。
OT=100×4×322=409600
これにより、図11の実施の形態における演算回数PIは、次式のようになる。
これにより、図11の実施の形態における演算回数PIは、次式のようになる。
本実施の形態に係る畳み込み演算処理における演算回数PIと時間領域の畳み込み演算処理における演算回数OTとの比は次のように算出される。
PI/OT=52736/409600≒0.13
したがって、本実施の形態に係る畳み込み演算処理によれば、時間領域の畳み込み演算処理に比べて、演算回数が約87%削減される。仮想音源の数(反射音の数)が増加するほど、演算回数の削減の効果は顕著となる。
したがって、本実施の形態に係る畳み込み演算処理によれば、時間領域の畳み込み演算処理に比べて、演算回数が約87%削減される。仮想音源の数(反射音の数)が増加するほど、演算回数の削減の効果は顕著となる。
(c)遅延量の調整による誤差
FFTシフトサイズSSを32サンプルとした場合、反射音V1,V2,…,Vkと直接音V0との間の遅延時間差の調整による遅延量の誤差は、最大16サンプルに相当する時間である。サンプリング周波数を48kHzとした場合、遅延量の誤差は次式のように算出される。
FFTシフトサイズSSを32サンプルとした場合、反射音V1,V2,…,Vkと直接音V0との間の遅延時間差の調整による遅延量の誤差は、最大16サンプルに相当する時間である。サンプリング周波数を48kHzとした場合、遅延量の誤差は次式のように算出される。
16/48000[Hz]≒0.00033[sec]=0.33[msec]
この遅延量の誤差に相当する距離の誤差は次式により算出される。
この遅延量の誤差に相当する距離の誤差は次式により算出される。
0.00033[sec]×340[m/sec]≒0.11[m]=11[cm]
仮想空間のサイズが11cm程度変化した場合の反射音の変化が音像定位および音の広がり感に与える影響はほとんどないと考えられる。
仮想空間のサイズが11cm程度変化した場合の反射音の変化が音像定位および音の広がり感に与える影響はほとんどないと考えられる。
FFTシフトサイズSSを16サンプルとした場合には、遅延量の誤差に相当する距離の誤差は約5.6cmとなり、音像定位および音の広がり感に与える影響はさらに小さくなる。
(10)他の実施の形態
(a)上記の実施の形態では、畳み込み演算処理に分割オーバラップセーブ法を用いているが、本発明はこれに限定されない。例えば、畳み込み演算処理に分割HRTFブロックを用いたオーバラップアド(Overlap-Add)法を用いてもよい。以下、分割HRTFブロックを用いたオーバラップアド法を分割オーバラップアド法と呼ぶ。
(a)上記の実施の形態では、畳み込み演算処理に分割オーバラップセーブ法を用いているが、本発明はこれに限定されない。例えば、畳み込み演算処理に分割HRTFブロックを用いたオーバラップアド(Overlap-Add)法を用いてもよい。以下、分割HRTFブロックを用いたオーバラップアド法を分割オーバラップアド法と呼ぶ。
図14は分割オーバラップアド法を用いた場合の時間領域の原音響信号および周波数領域の音響ブロックの説明図である。図14において、時間は右から左へ経過する。
分割オーバラップアド法では、原音響信号VINにおいて、現在入力されているNサンプルの単位ブロックvnにNサンプルの0が付加され、2Nサンプルの信号部分xnがFFTにより音響ブロックXnに変換される。同様に、単位ブロックvn−1にNサンプルの0が付加され、2Nサンプルの信号部分xn−1がFFTにより音響ブロックXn−1に変換される。また、単位ブロックvn−2にNサンプルの0が付加され、2Nサンプルの信号部分xn−2がFFTにより音響ブロックXn−2に変換される。さらに、単位ブロックvn−3にNサンプルの0が付加され、2Nサンプルの信号部分xn−3がFFTにより音響ブロックXn−3に変換される。この場合にも、FFTシフトサイズSSはNサンプルである。周波数領域での畳み込み演算は、分割オーバラップセーブ法を用いた場合と同様である。
図15は分割オーバラップアド法を用いた場合の時間領域での音響信号のつなぎ合わせを示す図である。図15に示すように、今回の処理で得られた音響信号ynの前半部分のNサンプルと前回の処理で得られた音響信号yn−1の後半部分のNサンプルとが加算される。この操作が順次行われることにより音響信号VOUTが逐次出力される。
(b)上記実施の形態では、周波数領域の頭部伝達関数が複数の分割HRTFブロックに分割されているが、これに限定されない。本発明は、頭部伝達関数の分割数Mが1の場合にも適用される。分割数Mが1の場合のオーバラップセーブ法は通常のオーバラップセーブ法であり、分割数Mが1の場合のオーバラップアド法は通常のオーバラップセーブ法である。
ここで、時間領域の音響信号の単位ブロックが例えば128サンプルからなるものとする。通常のオーバラップセーブ法では、128サンプルの時間領域の頭部インパルス応答に128サンプルの0を付加し、合計256サンプルをFFTにより周波数領域の頭部伝達関数に変換する。また、今回入力された128サンプルの音響信号と前回入力された128サンプルの音響信号とからなる256サンプルの信号部分をFFTにより周波数領域の音響ブロックに変換する。その後、周波数領域の頭部伝達関数と周波数領域の音響ブロックとを複素ベクトル乗算し、乗算結果をIFFTにより256サンプルの時間領域の音響信号に変換する。最後に、時間領域の音響信号の半分を破棄し、残りの128サンプルの音響信号を得る。今回得られた128サンプルの音響信号を前回得られた128サンプルの音響信号につなぎ合わせる。
通常のオーバラップアド法が通常のオーバラップセーブ法と異なるのは次の点である。今回入力された128サンプルの時間領域の音響信号に128サンプルの0を付加し、0を含む256サンプルの信号部分をFFTにより周波数領域の音響ブロックに変換する。IFFTにより得られた256サンプルの時間領域の音響信号を前回得られた256サンプルの時間領域の音響信号と128サンプル分重なるように加算する。
(c)上記実施の形態では、本発明が仮想空間における音を再現するために用いられるが、本発明はこれに限定されない。本発明は、実際の音響空間における音を再現するための残響付与装置に適用することも可能である。この場合、周波数領域の頭部伝達関数の代わりに、インパルス応答をFFTすることにより得られる周波数領域の音響伝達関数が用いられる。
(d)上記実施の形態では、音響信号入力部13が原音響信号VINを入力し、音響信号出力部12が音響信号ynを出力するが、本発明はこれに限定されない。音響信号入力部13がWAVファイル等のファイル形式の原音響信号を入力してもよく、音響信号出力部12がWAVファイル等のファイル形式の音響信号を出力してもよい。また、本発明は、音響シミュレーションを行うための音響シミュレーション装置に適用することも可能である。
(e)図11のステップS33において、音響信号出力部12は、音響信号ynを図7の遅延量d0分遅延させて出力してもよい。
(f)上記実施の形態では、原音声信号VINの全体の周波数帯域について図10および図11の音響信号処理が行われるが、これに限定されない。例えば、原音声信号VINの全体の周波数帯域が高域および低域に分割され、高域および低域の各々について上記の音響信号処理が行われてもよい。
(g)上記実施の形態では、時間領域の原音響信号を周波数領域の音響ブロックに変換するための時間−周波数変換としてFFTを用いているが、本発明はこれに限定されない。時間−周波数変換として、例えばラプラス変換、Z変換またはメリン(Mellin)変換等の他の直交変換を用いてもよい。また、上記実施の形態では、周波数領域の畳み込み演算結果の加算結果を時間領域の音響信号に変換するための周波数−時間変換としてIFFTを用いているが、本発明はこれに限定されない。周波数−時間変換として、例えば逆ラプラス変換、逆Z変換または逆メリン変換等の他の逆直交変換を用いてもよい。
(h)上記実施の形態では、音響信号処理装置100の全体が同一のサンプリング周波数fsで動作するが、これに限定されない。音響信号処理装置100の一部が適宜サンプリング周波数変換処理を行うことによりサンプリング周波数fsとは異なるサンプリング周波数で動作してもよい。
(i)上記実施の形態では、HRTFデータベース3に複数組の分割HRTFブロックが記憶されているが、例えば、複数組の分割HRTFブロックがインターネット上のサーバ等に記憶され、音響信号処理装置100がサーバ等から複数組の分割HRTFブロックをダウンロードして用いてもよい。この場合、音響信号処理装置100がHRTFデータベース3を備えなくてもよい。
(j)上記実施の形態では、単一の音響信号処理装置100について説明しているが、左耳用および右耳用の一対の音響信号処理装置100が設けられてもよい。この場合、図1に示される複数の構成要素のうち一部の構成要素が左耳用および右耳用の音響信号処理装置100に共通に用いられてもよい。
(11)請求項の各構成要素と実施の形態の各部との対応
以下、請求項の各構成要素と実施の形態の各部との対応の例について説明するが、本発明は下記の例に限定されない。
以下、請求項の各構成要素と実施の形態の各部との対応の例について説明するが、本発明は下記の例に限定されない。
上記実施の形態では、主音源S0が第1の音源の例であり、仮想音源S1,S2,…,Skが第2の音源の例であり、受音点Rが受音点の例であり、直接音V0が第1の音の例であり、反射音V1,V2,…,Vkが第2の音の例である。
遅延量算出部6が算出部の例であり、HRTFデータベース3が記憶部の例であり、遅延量調整部7が調整部の例であり、音響ブロック選択部9が選択部の例であり、周波数領域変換部14が第1の変換部の例であり、畳み込み演算部10が演算部の例であり、時間領域変換部11が第2の変換部の例である。
分割HRTFブロックH0,0,H0,1,H0,2,H0,3が第1の音響伝達関数または複数の第1の分割伝達関数の例であり、分割HRTFブロックH1,0,H1,1,H1,2,H1,3、分割HRTFブロックH2,0,H2,1,H2,2,H2,3および分割HRTFブロックHk,0,Hk,1,Hk,2,Hk,3が第2の音響伝達関数または複数の第2の分割伝達関数の例であり、頭部インパルス応答h0が第1の音響応答特性の例であり、頭部インパルス応答h1,h2,…,hkが第2の音響応答特性の例であり、分割HRIRブロックh0,0,h0,1,h0,2,h0,3が複数の第1の分割応答特性の例である。
原音響信号VINが原音響信号の例であり、FFTシフトサイズSSが一定のシフト量の例であり、音響ブロックXn,Xn−1,…,Xn−M+1が第1の信号部分の例であり、音響ブロックXn−M1,Xn−1−M1,…,Xn−M+1−M1および音響ブロックXn−Mk,Xn−1−Mk,…,Xn−M+1−Mkが第2の信号部分の例であり、音響信号VOUTが時間領域の音響信号の例であり、Nサンプルが第1のサンプル数の例であり、2Nサンプルが第2のサンプル数の例である。
請求項の各構成要素として、請求項に記載されている構成または機能を有する他の種々の要素を用いることができる。
本発明は、音響空間における受音点に到来する音を再現すること等に利用することができる。
1 部屋形状指示部
2 主音源位置指示部
3 HRTFデータベース
4 HRTFブロック選択部
5 仮想音源位置算出部
6 遅延量算出部
7 遅延量調整部
8 遅延ブロック数算出部
9 音響ブロック選択部
10 畳み込み演算部
11 時間領域変換部
12 音響信号出力部
13 音響信号入力部
14 周波数領域変換部
15 周波数領域音響バッファ
100 音響信号処理装置
110 CPU
120 ROM
130 RAM
140 記憶装置
150 表示装置
160 入力装置
170 出力装置
300 仮想空間
2 主音源位置指示部
3 HRTFデータベース
4 HRTFブロック選択部
5 仮想音源位置算出部
6 遅延量算出部
7 遅延量調整部
8 遅延ブロック数算出部
9 音響ブロック選択部
10 畳み込み演算部
11 時間領域変換部
12 音響信号出力部
13 音響信号入力部
14 周波数領域変換部
15 周波数領域音響バッファ
100 音響信号処理装置
110 CPU
120 ROM
130 RAM
140 記憶装置
150 表示装置
160 入力装置
170 出力装置
300 仮想空間
Claims (5)
- 第1の音源により放射されて受音点に到来する第1の音と少なくとも1つの第2の音源により放射されて前記第1の音から遅延して前記受音点に到来する少なくとも1つの第2の音とを混合した音を表す音響信号を出力する音響信号処理装置であって、
前記第1の音と前記第2の音との間の遅延時間差を算出する算出部と、
前記第1の音源により放射される第1の音を表す原音響信号を時間軸上で一定のシフト量ずつシフトしつつ順次時間−周波数変換することにより周波数領域の音響信号を得る第1の変換部と、
前記算出部により算出された遅延時間差を前記時間−周波数変換のシフト量に相当する時間の整数倍に調整する調整部と、
前記第1の変換部により得られた周波数領域の音響信号から前記第1の音に対応する第1の信号部分を選択し、前記調整部により調整された遅延時間差に基づいて、前記第1の変換部により得られた周波数領域の音響信号から前記第2の音に対応する第2の信号部分を選択する選択部と、
前記第1の音源から前記受音点までの第1の音響伝達関数と前記選択部により選択された第1の信号部分との第1の畳み込み演算および前記第2の音源から前記受音点までの第2の音響伝達関数と前記選択部により選択された第2の信号部分との第2の畳み込み演算を周波数領域で行い、前記第1および第2の畳み込み演算の結果の加算を行う演算部と、
前記演算部による加算の結果を時間領域の音響信号に変換する第2の変換部とを備える、音響信号処理装置。 - 前記第1の変換部は、原音響信号から第1のサンプル数の単位ブロックを順次取得し、前記単位ブロックを含みかつ前記第1のサンプル数よりも多い第2のサンプル数の音響信号を高速フーリエ変換し、
前記第1の変換部、前記演算部および前記第2の変換部は、オーバラップセーブ法またはオーバラップアド法により前記高速フーリエ変換、前記第1および第2の畳み込み演算ならびに前記時間領域の音響信号への変換を行い、
前記高速フーリエ変換のシフト量は前記単位ブロックのサンプル数に等しい、請求項1記載の音響信号処理装置。 - 前記第1の音響伝達関数は複数の第1の分割伝達関数を含み、前記複数の第1の分割伝達関数は、前記第1の音源から前記受音点までの時間領域の第1の音響応答特性の分割により得られた複数の第1の分割応答特性が高速フーリエ変換されることにより得られ、
前記第2の音響伝達関数は複数の第2の分割伝達関数を含み、前記複数の第2の分割伝達関数は、前記第2の音源から前記受音点までの時間領域の第2の音響応答特性の分割により得られた複数の第2の分割応答特性が高速フーリエ変換されることにより得られ、
前記選択部は、前記複数の第1の分割伝達関数の分割数に応じた数の第1の信号部分を選択し、前記複数の第2の分割伝達関数の分割数に応じた数の第2の信号部分を選択し、
前記演算部は、前記複数の第1の分割伝達関数と前記選択部により選択された複数の第1の信号部分との前記第1の畳み込み演算および前記複数の第2の分割伝達関数と前記選択部により選択された複数の第2の信号部分との前記第2の畳み込み演算を周波数領域で行う、請求項2記載の音響信号処理装置。 - 前記第1の音は、前記第1の音源から反射することなく前記受音点に到来する直接音であり、前記第2の音は、前記第1の音源から反射しつつ到来する反射音であり、前記第2の音源は、前記反射音を仮想的に放射する仮想音源である、請求項1〜3のいずれか一項に記載の音響信号処理装置。
- 第1の音源により放射されて受音点に到来する第1の音と少なくとも1つの第2の音源により放射されて前記第1の音から遅延して前記受音点に到来する少なくとも1つの第2の音とを混合した音を表す音響信号を出力するためにコンピュータにより実行可能な音響信号処理プログラムであって、
前記第1の音と前記第2の音との間の遅延時間差を算出する処理と、
前記第1の音源により放射される第1の音を表す原音響信号を時間軸上で一定のシフト量ずつシフトしつつ時間−周波数変換することにより周波数領域の音響信号を得る処理と、
前記算出された遅延時間差を前記時間−周波数変換のシフト量に相当する時間の整数倍に調整する処理と、
前記周波数領域の音響信号から前記第1の音に対応する第1の信号部分を選択し、前記調整された遅延時間差に基づいて、前記周波数領域の音響信号から前記第2の音に対応する第2の信号部分を選択する処理と、
前記第1の音源から前記受音点までの第1の音響伝達関数と前記選択された第1の信号部分との第1の畳み込み演算および前記第2の音源から前記受音点までの第2の音響伝達関数と前記選択された第2の信号部分との第2の畳み込み演算を周波数領域で行い、前記第1および第2の畳み込み演算の結果の加算を行う処理と、
前記加算の結果を時間領域の音響信号に変換する処理とを、
前記コンピュータに実行させる、音響信号処理プログラム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2013216255A JP2015079131A (ja) | 2013-10-17 | 2013-10-17 | 音響信号処理装置および音響信号処理プログラム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2013216255A JP2015079131A (ja) | 2013-10-17 | 2013-10-17 | 音響信号処理装置および音響信号処理プログラム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2015079131A true JP2015079131A (ja) | 2015-04-23 |
Family
ID=53010591
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2013216255A Pending JP2015079131A (ja) | 2013-10-17 | 2013-10-17 | 音響信号処理装置および音響信号処理プログラム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2015079131A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2023218917A1 (ja) * | 2022-05-11 | 2023-11-16 | ソニーグループ株式会社 | 情報処理装置、情報処理方法、およびプログラム |
-
2013
- 2013-10-17 JP JP2013216255A patent/JP2015079131A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2023218917A1 (ja) * | 2022-05-11 | 2023-11-16 | ソニーグループ株式会社 | 情報処理装置、情報処理方法、およびプログラム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12096201B2 (en) | Audio processing device and method therefor | |
| JP7683101B2 (ja) | 少なくとも一つのフィードバック遅延ネットワークを使ったマルチチャネル・オーディオに応答したバイノーラル・オーディオの生成 | |
| JP6607895B2 (ja) | 少なくとも一つのフィードバック遅延ネットワークを使ったマルチチャネル・オーディオに応答したバイノーラル・オーディオの生成 | |
| EP3026666B1 (en) | Reverberant sound adding apparatus, reverberant sound adding method, and reverberant sound adding program | |
| JP2015079131A (ja) | 音響信号処理装置および音響信号処理プログラム | |
| Giesbrecht et al. | Algorithmic Reverberation | |
| Serafin et al. | Doppler Simulation and the Leslie | |
| JP2017049454A (ja) | 音響処理装置および音響処理方法 |