(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-21
(45)【発行日】2023-05-01
(54)【発明の名称】情報処理装置、情報処理方法、及びプログラム
(51)【国際特許分類】
G10K 15/12 20060101AFI20230424BHJP
A63F 13/54 20140101ALI20230424BHJP
【FI】
G10K15/12
A63F13/54
(21)【出願番号】P 2018241641
(22)【出願日】2018-12-25
【審査請求日】2021-10-15
(73)【特許権者】
【識別番号】595000427
【氏名又は名称】株式会社コーエーテクモゲームス
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】小池 雅人
【審査官】西村 純
(56)【参考文献】
【文献】特開2003-157090(JP,A)
【文献】特開昭60-073695(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G10K 15/00-15/12
A63F 13/54
(57)【特許請求の範囲】
【請求項1】
インパルス音に対する反射音のデータであるインパルスレスポンスの長さ、パルス音が出力されてから最初の反射音が返ってくるまでの長さ、及び音量減衰指数を指定する操作を受け付ける受付部と、
前記インパルスレスポンスの長さ、パルス音が出力されてから最初の反射音が返ってくるまでの長さ、及び音量減衰指数を利用して前記インパルスレスポンスのデータを生成する生成部と、
前記インパルスレスポンスのデータ、及び記憶部に記憶されている音声データに基づいて、前記音声データに対する残響音を生成する調整部と、
を有し、
前記生成部は、
パルス音が出力されてから最初の反射音が返ってくるまでの前記インパルスレスポンスのデータの音量の値を0に設定し、
前記インパルスレスポンスのデータの時間軸の値を示すインデックス値が大きい程に満たす確率が増加する条件を満たしているか判定し、
前記条件を満たしていない場合、前記インデックス値に応じた前記インパルスレスポンスのデータの音量の値を0に設定し、
前記条件を満たしている場合、
前記インパルスレスポンスのデータの音量の値を、前記インデックス値が小さい程、前記インデックス値が大きくなるに従って指数関数的に減少していく値に近づき、前記インデックス値が大きい程、前記指数関数的に減少していく値と白色雑音の値とを乗算した値に近づくように設定するか、又は、前記インパルスレスポンスのデータの音量の値を、前記インデックス値が大きくなるに従って指数関数的に減少していく値と、前記インデックス値が大きくなるに従って0度に近い角度となる確率が高くなる角度の正弦の値とを乗算した値に近づくように決定する
情報処理装置。
【請求項2】
情報処理装置を、
インパルス音に対する反射音のデータであるインパルスレスポンスの長さ、パルス音が出力されてから最初の反射音が返ってくるまでの長さ、及び音量減衰指数を指定する操作を受け付ける受付部、
前記インパルスレスポンスの長さ、パルス音が出力されてから最初の反射音が返ってくるまでの長さ、及び音量減衰指数を利用して前記インパルスレスポンスのデータを生成する生成部、
前記インパルスレスポンスのデータ、及び記憶部に記憶されている音声データに基づいて、前記音声データに対する残響音を生成する調整部、
として機能させ、
前記生成部は、
パルス音が出力されてから最初の反射音が返ってくるまでの前記インパルスレスポンスのデータの音量の値を0に設定し、
前記インパルスレスポンスのデータの時間軸の値を示すインデックス値が大きい程に満たす確率が増加する条件を満たしているか判定し、
前記条件を満たしていない場合、前記インデックス値に応じた前記インパルスレスポンスのデータの音量の値を0に設定し、
前記条件を満たしている場合、
前記インパルスレスポンスのデータの音量の値を、前記インデックス値が小さい程、前記インデックス値が大きくなるに従って指数関数的に減少していく値に近づき、前記インデックス値が大きい程、前記指数関数的に減少していく値と白色雑音の値とを乗算した値に近づくように設定するか、又は、前記インパルスレスポンスのデータの音量の値を、前記インデックス値が大きくなるに従って指数関数的に減少していく値と、前記インデックス値が大きくなるに従って0度に近い角度となる確率が高くなる角度の正弦の値とを乗算した値に近づくように決定するプログラム。
【請求項3】
情報処理装置が、
インパルス音に対する反射音のデータであるインパルスレスポンスの長さ、パルス音が出力されてから最初の反射音が返ってくるまでの長さ、及び音量減衰指数を指定する操作を受け付ける処理と、
前記インパルスレスポンスの長さ、パルス音が出力されてから最初の反射音が返ってくるまでの長さ、及び音量減衰指数を利用して前記インパルスレスポンスのデータを生成する処理と、
前記インパルスレスポンスのデータ、及び記憶部に記憶されている音声データに基づいて、前記音声データに対する残響音を生成する処理と、
を実行し、
前記インパルスレスポンスのデータを生成する処理は、
パルス音が出力されてから最初の反射音が返ってくるまでの前記インパルスレスポンスのデータの音量の値を0に設定し、
前記インパルスレスポンスのデータの時間軸の値を示すインデックス値が大きい程に満たす確率が増加する条件を満たしているか判定し、
前記条件を満たしていない場合、前記インデックス値に応じた前記インパルスレスポンスのデータの音量の値を0に設定し、
前記条件を満たしている場合、
前記インパルスレスポンスのデータの音量の値を、前記インデックス値が小さい程、前記インデックス値が大きくなるに従って指数関数的に減少していく値に近づき、前記インデックス値が大きい程、前記指数関数的に減少していく値と白色雑音の値とを乗算した値に近づくように設定するか、又は、前記インパルスレスポンスのデータの音量の値を、前記インデックス値が大きくなるに従って指数関数的に減少していく値と、前記インデックス値が大きくなるに従って0度に近い角度となる確率が高くなる角度の正弦の値とを乗算した値に近づくように決定する処理である情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【0002】
従来、コンピュータゲームの状況等に応じて音を出力する場合、エフェクタ(残響エフェクタ、リバーブレータ)を用いて、直接音に応じた残響音を出力する技術が知られている(例えば、特許文献1を参照)。
【0003】
また、ホール等の建造物で、時間幅が狭いインパルス音に対する反射音(インパルスレスポンス)のデータを予め測定して記憶しておき、出力したい効果音、セリフ等の音声、楽曲等の音の信号と畳み込み(コンボリューション)演算を行うことにより、当該ホール等における残響を再現する技術が知られている。この技術を用いたエフェクタは、コンボリューションリバーブ等とも称されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、音を出力するステージ等がそれぞれ異なる等の場合、各ホール等でインパルスレスポンスをそれぞれ測定する手間がかかる。そこで、一側面では、より適切に残響音を生成することができる技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
一つの案では、情報処理装置が、インパルス音に対する反射音のデータであるインパルスレスポンスの長さ、パルス音が出力されてから最初の反射音が返ってくるまでの長さ、及び音量減衰指数を指定する操作を受け付ける受付部と、前記インパルスレスポンスの長さ、パルス音が出力されてから最初の反射音が返ってくるまでの長さ、及び音量減衰指数を利用して前記インパルスレスポンスのデータを生成する生成部と、前記インパルスレスポンスのデータ、及び記憶部に記憶されている音声データに基づいて、前記音声データに対する残響音を生成する調整部と、を有し、前記生成部は、パルス音が出力されてから最初の反射音が返ってくるまでの前記インパルスレスポンスのデータの音量の値を0に設定し、前記インパルスレスポンスのデータの時間軸の値を示すインデックス値が大きい程に満たす確率が増加する条件を満たしているか判定し、前記条件を満たしていない場合、前記インデックス値に応じた前記インパルスレスポンスのデータの音量の値を0に設定し、前記条件を満たしている場合、前記インパルスレスポンスのデータの音量の値を、前記インデックス値が小さい程、前記インデックス値が大きくなるに従って指数関数的に減少していく値に近づき、前記インデックス値が大きい程、前記指数関数的に減少していく値と白色雑音の値とを乗算した値に近づくように設定するか、又は、前記インパルスレスポンスのデータの音量の値を、前記インデックス値が大きくなるに従って指数関数的に減少していく値と、前記インデックス値が大きくなるに従って0度に近い角度となる確率が高くなる角度の正弦の値とを乗算した値に近づくように決定する。
【発明の効果】
【0007】
一側面によれば、より適切に残響音を生成することができる。
【図面の簡単な説明】
【0008】
【
図1】実施形態に係る情報処理装置のハードウェア構成例を示す図である。
【
図2】実施形態に係る情報処理装置の機能ブロック図である。
【
図3】実施形態に係る情報処理装置の処理の一例を示すフローチャートである。
【
図4A】実施形態に係るインデックスiの値が大きい程大きくなる値の一例について説明する図である。
【
図4B】インデックスiの値が大きくなるに従って指数関数的に減少していく値の一例について説明する図である。
【
図4C】実施形態に係るインデックスiがL
delayより大きい場合のインパルスレスポンスデータの一例について説明する図である。
【発明を実施するための形態】
【0009】
以下、図面に基づいて本発明の実施形態を説明する。
【0010】
<ハードウェア構成>
図1は、実施形態に係る情報処理装置10のハードウェア構成例を示す図である。
図1に示す情報処理装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、インタフェース装置105、表示装置106、及び入力装置107等を有する。
【0011】
情報処理装置10での処理を実現するゲームプログラムは、記録媒体101によって提供される。ゲームプログラムを記録した記録媒体101がドライブ装置100にセットされると、ゲームプログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、ゲームプログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたゲームプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0012】
メモリ装置103は、例えば、DRAM(Dynamic Random Access Memory)、またはSRAM(Static Random Access Memory)等のメモリであり、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従って情報処理装置10に係る機能を実現する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。表示装置106はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置107は、コントローラ等、キーボード及びマウス等、またはタッチパネル及びボタン等で構成され、様々な操作指示を入力させるために用いられる。
【0013】
なお、記録媒体101の一例としては、CD-ROM、DVDディスク、ブルーレイディスク、又はUSBメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置102の一例としては、HDD(Hard Disk Drive)、SSD(Solid State Drive)、又はフラッシュメモリ等が挙げられる。記録媒体101及び補助記憶装置102のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【0014】
<機能構成>
次に、
図2を参照し、情報処理装置10の機能構成について説明する。
図2は、実施形態に係る情報処理装置10の機能ブロック図である。
【0015】
情報処理装置10は、記憶部11を有する。記憶部11は、例えば、補助記憶装置102等を用いて実現される。記憶部11は、効果音、録音されたセリフ、及び楽曲等の音声データ等を記憶する。
【0016】
また、情報処理装置10は、受付部12、生成部13(「決定部」の一例。)、及び調整部14を有する。これら各部は、情報処理装置10にインストールされた1以上のプログラムが、情報処理装置10のCPU104に実行させる処理により実現される。
【0017】
受付部12は、残響に関する各種のパラメータを指定する操作を受け付ける。生成部13は、インパルス音に対する反射音のデータであるインパルスレスポンスのデータを生成(決定)する。
【0018】
調整部14は、生成部13により生成されたインパルスレスポンスのデータと、記憶部11に記憶されている音声データとに基づいて、当該音声データに対する残響音を生成(調整)し、スピーカ等に出力する。調整部14は、例えば、当該音声データと、生成部13により生成されたインパルスレスポンスのデータとの畳み込み(コンボリューション)演算を行うことにより、残響音を生成する。
【0019】
<処理>
次に、
図3から
図4Cを参照して、情報処理装置10の処理について説明する。
図3は、実施形態に係る情報処理装置10の処理の一例を示すフローチャートである。
図4Aは、実施形態に係るインデックスiの値が大きい程大きくなる値の一例について説明する図である。
図4Bは、インデックスiの値が大きくなるに従って指数関数的に減少していく値の一例について説明する図である。
図4Cは、実施形態に係るインデックスiがL
delayより大きい場合のインパルスレスポンスデータの一例について説明する図である。
【0020】
ステップS1において、受付部12は、残響に関する各種のパラメータを指定する操作を受け付ける。ここで、受付部12は、インパルスレスポンスデータの長さL、パルス音が出力されてから最初の反射音が返ってくるまでの長さLdelay、及び音量減衰指数Pdecay等を設定する操作をユーザから受け付ける。
【0021】
なお、Lは、パルス音が出力されてから残響音の出力が停止されるまでの時間(残響時間)とサンプリング周波数に応じた、インパルスレスポンスデータの配列IR[L]のインデックスの最大値である。ここで、残響時間として、ゲーム等において音が出力される環境が小さな部屋の場合は0.5秒程度、音楽用ホール等の場合は数秒程度が指定されてもよい。例えば、残響時間が5秒であり、音のサンプリング周波数が48kHzの場合、Lは、240000(5×48k)と決定される。
【0022】
Ldelayは、壁、天井、床等からの初期反射のうち、パルス音が出力されてから最も早い初期反射が返ってくるまでの時間とサンプリング周波数に応じた数値である。例えば、パルス音が出力されてから最も早い初期反射が返ってくるまでの時間が10m秒であり、音のサンプリング周波数が48kHzの場合、Lは、480(10m×48k)と決定される。音量減衰指数Pdecayは、減衰の速度を示す値であり、値が大きい程減衰の速度が速くなる。Pdecayの値として、例えば、1より大きい値が設定されてもよい。
【0023】
続いて、生成部13は、パルス音が出力されてから最初の反射音が返ってくるまでの時間長までのインパルスレスポンスデータを0に設定する(ステップS2)。ここで、生成部13は、IR[0]からIR[Ldelay]までの値を所定の閾値以下の値(例えば、0)に設定する。
【0024】
続いて、生成部13は、インパルスレスポンスデータの時間軸の値を示すインデックスiを初期化する(ステップS3)。ここで、生成部13は、例えば、iの値を0と設定する。続いて、生成部13は、インデックスiが、インデックスiの値が大きい程条件を満たす確率が増加する条件を満たすか否かを判定する(ステップS4)。ここで、生成部13は、例えば、まず、一様乱数の値Ruを算出する。なお、Ruは、例えば、0以上1未満の区間内で全ての実数が同じ確率で現れる乱数である。そして、生成部13は、例えば、以下の式(1)の条件を満たす場合、当該条件を満たすと判定してもよい。なお、Lbodyは、L-Ldelayである。
【0025】
Ru < (i/L
body) ・・・(1)
図4Aに示すように、i/L
bodyの値401は、インデックスiの値が大きい程大きくなるため、インデックスiの値が大きい程、式(1)の条件を満たす確率は増加する。
【0026】
当該条件を満たさない場合(ステップS4でNO)、生成部13は、インデックスiに応じたインパルスレスポンスデータを所定の閾値以下の値(例えば、0)に設定し(ステップS5)、ステップS7の処理に進む。ステップS5の処理で、生成部13は、インデックスiに応じたインパルスレスポンスデータであるIR[Ldelay+i]の値を0に設定する。
【0027】
当該条件を満たす場合(ステップS4でYES)、インデックスiがL
delayより大きい場合のインパルスレスポンスデータを、インデックスiの値が小さい程、インデックスiの値が大きくなるに従って非線形に減少していく値により近づき、インデックスiの値が大きい程ホワイトノイズ等の乱数に基づく値により近づく値に設定する(ステップS6)。ステップS5、及びステップS6の処理により、インデックスiの値が大きくなるに従って、IR[i]の値が当該所定の閾値を超える確率が高くなる。そのため、
図4Cに示すように、インデックスiがL
delayより大きい場合のインパルスレスポンスデータ421は、インデックスiの値が小さい程、当該所定の閾値以下の値ではない値の密度が疎であり、インデックスiの値が大きくなるに従って、当該所定の閾値以下の値ではない値の密度が密になる。また、ステップS6の処理により、
図4Cに示すように、インデックスiがL
delayより大きい場合のインパルスレスポンスデータ421は、音量が揺らぎつつも徐々に減少し、徐々にホワイトノイズに近づく値となる。これにより、ホール等で実際のインパルスレスポンスを測定しなくとも、実際の残響音に近い残響音を出力するためのインパルスレスポンスのデータを生成することができる。
【0028】
ステップS6の処理で、生成部13は、インデックスiの値が大きくなるに従って指数関数的に減少していく値であるGainScale(減衰曲線。「非線形に減少する値」の一例。)を算出する。例えば、生成部13は、以下の式(2)によりGainScaleの値を算出する。なお、「a^n」は、aのn乗を示す。
【0029】
GainScale = (1-i/L
body)^P
decay ・・・(2)
式(4)により、GainScaleの値411は、
図4Bに示すように、インデックスiの値が大きくなるに従って指数関数的に減少していく値となる。
【0030】
ここで、生成部13は、例えば、まず、正規乱数の値Rnを算出する。Rnは、例えば、0より大きく1未満の区間内で正規分布をもつ乱数でもよい。この場合、生成部13は、例えば、0より大きく1以下の一様乱数をボックス=ミュラー法(Box-Muller transform)で変換してRnを算出してもよい。
【0031】
そして、生成部13は、ホワイトノイズを表す値Wを、以下の式(3)により算出する。
【0032】
W = (Rn-0.5)/V ・・・(3)
なお、Vは、ホワイトノイズの音量を調節するための定数であり、生成部13は、例えば、Vの値を4としてもよい。そして、生成部13は、IR[Ldelay+i]に、以下の式(4)で算出した値を設定する。
【0033】
IR[Ldelay+i] = (S(1-i/Lbody)+W(i/Lbody))×GainScale ・・・(4)
ここで、Sは、Wの符号であり、-1、0、及び1の何れかの値である。生成部13は、Wの値がマイナスであればSを-1とし、Wの値が0であればSを0とし、Wの値がプラスであればSを1とする。
【0034】
これにより、
図4Cに示すように、インデックスiに応じたインパルスレスポンスデータ421は、インデックスiの値が小さい程、インデックスiの値が大きくなるに従って指数関数的に減少していく値であるGainScaleに近づき、インデックスiの値が大きい程ホワイトノイズの値WとGainScaleとを乗算した値に近づく値に設定される。
【0035】
続いて、生成部13は、インデックスiの値をインクリメント(1つ増加)する(ステップS7)。続いて、生成部13は、インデックスiの値が終了条件を満たすか否かを判定する(ステップS8)。ここで、生成部13は、インデックスiの値がLdelayの値と等しくなった場合、終了条件を満たすと判定する。インデックスiの値が終了条件を満たさない場合(ステップS8でNO)、ステップS4の処理に進む。一方、インデックスiの値が終了条件を満たす場合(ステップS8でYES)、処理を終了する。
【0036】
<変形例1>
生成部13は、
図3のステップS6で、式(4)を用いて算出した値をIR[L
delay+i]に設定する代わり、またはこれに加えて、以下のように算出した値をIR[L
delay+i]に設定するようにしてもよい。
【0037】
この場合、生成部13は、まず、一様乱数の値Ru2を算出する。なお、Ru2は、例えば、0以上1以下の区間内で全ての実数が同じ確率で現れる乱数である。そして、生成部13は、以下の式(5)により角度θを算出する。
【0038】
θ = (π/2)×(1-Ru2×(i/Lbody)) ・・・(5)
そして、生成部13は、1/2の確率で、角度θの正負を反転させる。そして、生成部13は、IR[Ldelay+i]に、以下の式(6)で算出した値を設定する。
【0039】
IR[Ldelay+i] = sinθ×GainScale ・・・(6)
これにより、インパルスレスポンスデータの配列IR[L]は、インデックスiの値が小さい程、インデックスiの値が大きくなるに従って指数関数的に減少していく値であるGainScaleに近づく。また、インパルスレスポンスデータの配列IR[L]は、インデックスiの値が大きい程0度に近い角度となる確率が高くなる角度の正弦の値とGainScaleとを乗算した値に、インデックスiの値が大きい程近づく値に設定される。なお、生成部13は、IR[Ldelay+i]の値を決定する方法を、ユーザの操作により切り替えられるようにしてもよい。また、生成部13は、IR[Ldelay+i]に、以下の式(7)で算出した値を設定する。
【0040】
IR[Ldelay+i] = (S(1-i/Lbody)+sinθ(i/Lbody))×GainScale ・・・(7)
これにより、インデックスiに応じたインパルスレスポンスデータは、インデックスiの値が小さい程、インデックスiの値が大きくなるに従って指数関数的に減少していく値であるGainScaleに近づき、インデックスiの値が大きい程、インデックスiの値が大きい程0度に近い角度となる確率が高くなる角度の正弦の値とGainScaleとを乗算した値に近づく値に設定される。
【0041】
<変形例2>
情報処理装置10の各機能部は、例えば1以上のコンピュータにより構成されるクラウドコンピューティングにより実現されていてもよい。
【0042】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0043】
10 情報処理装置
11 記憶部
12 受付部
13 生成部
14 調整部