(57)【要約】【課題】グラニュラーシンセシス方式で音を生成する場合であっても、粒子数の多い複雑な音声を生成する際の演算負荷を軽減する。【解決手段】音声生成装置であって、複数のグレインを記憶する記憶手段と、前記複数のグレインのそれぞれにつき、複数のインパルスパターンのいずれかに基づき周波数領域で畳み込み演算を行い、該畳み込み演算の結果を加算して加算信号を生成し、該加算信号を繰り返すことで音声信号を生成する演算手段とを備える。【選択図】図６
2016051117.tif 000002
【特許請求の範囲】
【請求項１】
音声生成装置であって、
複数のグレインを記憶する記憶手段と、
前記複数のグレインのそれぞれにつき、複数のインパルスパターンのいずれかに基づき周波数領域で畳み込み演算を行い、該畳み込み演算の結果を加算して加算信号を生成し、該加算信号を繰り返すことで音声信号を生成する演算手段と、
を備えることを特徴とする音声生成装置。
【請求項２】
前記演算手段は、前記畳み込み演算の結果を時間領域に変換した後に加算して前記加算信号を生成することを特徴とする請求項１に記載の音声生成装置。
【請求項３】
前記演算手段は、前記畳み込み演算の結果を周波数領域で加算した後、時間領域に変換して前記加算信号を生成することを特徴とする請求項１に記載の音声生成装置。
【請求項４】
前記演算手段は、前記複数のインパルスパターンを、前記複数のグレインのそれぞれについて生成することを特徴とする請求項１乃至３のいずれか１項に記載の音声生成装置。
【請求項５】
前記インパルスパターンは、単位時間内にランダムに配置された、前記音声信号に含まれる単位時間内のグレイン数に応じた数のインパルスを含むことを特徴とする請求項１乃至４のいずれか１項に記載の音声生成装置。
【請求項６】
音声生成装置であって、
少なくとも１つのグレインを記憶する記憶手段と、
前記少なくとも１つのグレインにつき、インパルスパターンに基づき周波数領域で畳み込み演算を行い、該畳み込み演算の結果として得られた信号を繰り返すことで音声信号を生成する演算手段と、
を備えることを特徴とする音声生成装置。
【請求項７】
音声生成装置における音声生成方法であって、
前記音声生成装置が有する演算手段が、前記音声再生装置の記憶手段に記憶された複数のグレインのそれぞれにつき、複数のインパルスパターンのいずれかに基づき周波数領域で畳み込み演算を行う工程と、
前記演算手段が、前記畳み込み演算結果を加算して加算信号を生成する工程と、
前記演算手段が、前記加算信号を繰り返すことで音声信号を生成する工程と
を備えることを特徴とする音声生成方法。
【請求項８】
記憶手段を有するコンピュータを、請求項１乃至６のいずれか１項に記載の音声生成装置の演算手段として機能させるためのコンピュータプログラム。
【請求項９】
請求項８に記載のコンピュータプログラムを記憶したコンピュータで読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声生成装置、音声生成方法、コンピュータプログラム及び記憶媒体に関する。
【背景技術】
【０００２】
電子的に音を発生する方法にグラニュラーシンセシス方式と呼ばれる方法がある。このグラニュラーシンセシス方式においては、個々の粒子（グレイン）は「連続音」としての性質を持たない例えば１０２４サンプルからなるパルスであり、これが時間的に非常に多数、それも周期的成分を知覚しないように適当なランダムさを持たせて配置することで粒子群全体をひとつの音声信号とする（特許文献１、特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−５９６７９号公報
【特許文献２】特開２００９−１７５４４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
グラニュラーシンセシス方式では、グレインを増幅し、ミキシングしていくことにより、音声信号を生成している。従って、単位時間当りに含まれる粒子の数を増やす場合には、音声信号に含めるグレイン数をその分だけ増やす必要があり、それに伴って増幅およびミキシングの演算数も増加する。よって、単位時間当りの粒子数が増えれば増えるほど演算数が増加し、使用する粒子数（音数、種類）の多い複雑な音声を生成する場合には、演算負荷が非常に重くなってしまう。
【０００５】
そこで、本発明は、グラニュラーシンセシス方式で音を生成する場合であっても、粒子数の多い複雑な音声を生成する際の演算負荷を軽減することを可能にすることを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するための本発明は、音声生成装置であって、
複数のグレインを記憶する記憶手段と、
前記複数のグレインのそれぞれにつき、複数のインパルスパターンのいずれかに基づき周波数領域で畳み込み演算を行い、該畳み込み演算の結果を加算して加算信号を生成し、該加算信号を繰り返すことで音声信号を生成する演算手段とを備える。
【発明の効果】
【０００７】
本発明によれば、グラニュラーシンセシス方式で音を生成する場合であっても、粒子数の多い複雑な音声を生成する際の演算負荷を軽減することができる。
【図面の簡単な説明】
【０００８】
【図１】発明の実施形態に係る音声生成システムのシステム構成の一例を示す図。
【図２】発明の実施形態に係るＰＣ１００の機能構成を示すブロック図。
【図３】発明の実施形態に係るサーバ２００の機能構成を示すブロック図。
【図４】発明の実施形態に対応する音声生成処理を説明するための図。
【図５】発明の実施形態に対応する音声生成処理を更に説明するための図。
【図６】発明の実施形態に対応する音声生成処理の一例を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、添付の図面を参照して、発明の実施形態を説明する。
【００１０】
なお、以下に説明する一実施形態は、音声生成装置の一例として、サーバ２００において実行されるゲームプログラムに係る音声生成処理について、ＰＣ１００側、又は、サーバ２００側で本発明を適用した例を説明する。しかし、本発明は、あるゲームシーンに係る音声生成処理を、複数の機器間で分担して実行可能な任意の機器及びシステムに適用可能である。
【００１１】
＜音声生成システムの構成＞
図１は、本発明の実施形態に係る音声生成システムのシステム構成を示す図である。図示されるように、ＰＣ１００とサーバ２００とはインターネット等のネットワーク３００を介して接続されている。本実施形態ではサーバ２００で実行されるゲームプログラムにおいて、ゲームプログラムに係る音声の生成処理をＰＣ１００及びサーバ２００のいずれか、又は両方が分担して処理する。
【００１２】
本実施形態では、ユーザはＰＣ１００を操作してサーバ２００で実行されるゲームプログラムに係るゲームを実行している。本実施形態に対応する音声生成処理により生成された音声は最終的にＰＣ１００のスピーカーから再生される。具体的には、ゲーム中のシーンにおいて出力すべき音声であって、音声生成処理により生成された音声をネットワーク３００を介してサーバ２００からＰＣ１００が受信し、当該シーンに対応する音声として出力する。或いは、ＰＣ１００が本実施形態に対応する音声性処理を実行して当該シーンに対応する音声として出力する。
【００１３】
本実施形態の音声生成処理は、常にサーバ２００、或いはＰＣ１００のいずれか一方のみが行うものと限定されるわけではない。例えば、音声生成に使用するグレインの種類数や単位時間当りのグレイン数に応じて所定数以上の場合はサーバ２００が処理を実行し、所定数に満たない場合にＰＣ１００が実行しても良い。サーバ２００は音声処理を実行するノードの割当てを制御することもできる。その場合、ＰＣ１００はサーバ２００からの指示に従って音声生成処理を実行する。
【００１４】
なお、本実施形態ではサーバ２００に接続するクライアント機器として、ＰＣ１００を用いて説明するが、本発明の実施はこれに限られるものではない。例えばサーバ２００と接続するクライアント機器は、家庭用ゲーム機、携帯ゲーム機、携帯電話、ＰＤＡ、タブレット等の本実施形態に対応する音声生成処理を実行可能な機器であればよい。
【００１５】
＜ＰＣ１００の構成＞
図２は、本発明の実施形態に係るＰＣ１００の機能構成を示すブロック図である。ＣＰＵ１０１は、ＰＣ１００が有する各ブロックの動作を制御する。具体的にはＣＰＵ１０１は、例えばＲＯＭ１０２や記録媒体１０６に記録されている音声生成処理等の動作プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより、各ブロックの動作を制御する。ＲＯＭ１０２は、例えば書き換え可能な不揮発性メモリである。ＲＯＭ１０２は、ＰＣ１００が有する各ブロックの動作プログラムに加え、各ブロックの動作に必要な定数等の情報を記憶する。
【００１６】
ＲＡＭ１０３は、揮発性メモリである。ＲＡＭ１０３は、動作プログラムの展開領域としてだけでなく、ＰＣ１００が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。ＧＰＵ１０４は、表示部１０８に表示するゲーム画面の生成を行う。ＧＰＵ１０４は、ゲーム画面の描画領域としてビデオメモリ（ＶＲＡＭ）１０５が接続されている。またＧＰＵ１０４は不図示のＧＰＵメモリを有する。ＧＰＵ１０４は、ＣＰＵ１０１より描画命令を受信すると、該描画命令に係る描画オブジェクトのデータを取得してＧＰＵメモリに格納する。そしてＧＰＵ１０４は、描画命令に応じて描画オブジェクトを、接続されたＶＲＡＭ１０５に描画する。
【００１７】
記録媒体１０６は、例えばＨＤＤやＳＳＤ等のＰＣ１００に着脱可能に接続された記録装置である。本実施形態では、記録媒体１０６には音声生成処理等の動作プログラムを含むゲームプログラムが記録されるものとする。本実施形態では記録媒体１０６には、音声生成処理において音声信号の生成に用いるグレインのデータやインパルスパターンの情報等が記録されているものとする。本実施形態ではＰＣ１００は、音声生成処理を実行してゲーム中のシーンに対応する音声を生成、出力することができる。或いは、当該シーンに対応してサーバ２００で生成された音声を受信して出力することができる。
【００１８】
通信部１０７は、ＰＣ１００が有する通信インタフェースである。通信部１０７は、ネットワーク３００を介して接続した、サーバ２００等の他の機器との間におけるデータ送受信を行う。データ送信時には通信部１０７は、ネットワーク３００あるいは送信先の機器との間で定められたデータ伝送形式にデータを変換し、送信先の機器へのデータ送信を行う。またデータ受信時には通信部１０７は、ネットワーク３００を介して受信したデータを、ＰＣ１００において読み取り可能な任意のデータ形式に変換し、例えばＲＡＭ１０３に記憶させる。なお、本実施形態ではＰＣ１００とサーバ２００とは、ネットワーク３００を介して接続されるものとして説明するが、例えばＰＣ１００とサーバ２００とが直接ケーブルにより接続される形態であってもよいことは容易に想像されよう。また、ＰＣ１００とサーバ２００とは、それ以外の他の機器を介して接続される形態であってもよい。
【００１９】
表示部１０８は、例えばＬＣＤモニタ等のＰＣ１００に接続された表示装置である。表示部１０８は、入力されたゲーム画面を表示領域に表示する表示制御を行う。なお、表示部１０８は、ラップトップＰＣのようにＰＣ１００に内蔵される表示装置であってもよいし、ケーブルを用いてＰＣ１００に外部接続された表示装置であってもよい。操作入力部１０９は、例えばマウス、キーボード、ゲームパッド等のＰＣ１００が有するユーザインタフェースである。操作入力部１０９は、ユーザによりユーザインタフェースの操作がなされたことを検出すると、該操作に対応する制御信号をＣＰＵ１０１に対して出力する。
【００２０】
音声出力部１１０は、アンプ及びスピーカーにより構成される音声出力装置である。本実施形態に対応する音声生成処理により生成された音声は、他の音声と合成されアンプに供給されスピーカーから可聴音として出力される。なお、アンプ及びスピーカーはＰＣ１００本体に内蔵されていなくてもよく、ＰＣ１００と外部接続されたテレビ等が有する音声出力装置を利用しても良い。
【００２１】
＜サーバ２００の構成＞
図３は、本発明の実施形態に係るサーバ２００の機能構成を示すブロック図である。サーバＣＰＵ２０１は、サーバ２００が有する各ブロックの動作を制御する。具体的にはサーバＣＰＵ２０１は、例えばサーバＲＯＭ２０２やサーバ記録媒体２０６に記憶されているゲーム処理やサーバ側の音声生成処理の動作プログラムを読み出し、サーバＲＡＭ２０３に展開して実行することにより、各ブロックの動作を制御する。サーバＲＯＭ２０２は、例えば書き換え可能な不揮発性メモリである。サーバＲＯＭ２０２は、音声生成処理等の動作プログラムに加え、サーバ２００が有する各ブロックの動作において必要となる定数等の情報を記憶する。
【００２２】
サーバＲＡＭ２０３は、揮発性メモリである。サーバＲＡＭ２０３は、動作プログラムの展開領域としてだけでなく、サーバ２００が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。サーバＧＰＵ２０４は、ＰＣ１００の表示部１０８に表示するゲーム画面の生成を行う。サーバＧＰＵ２０４には、サーバＶＲＡＭ２０５が接続される。サーバＧＰＵ２０４は、サーバＣＰＵ２０１より描画命令を受けると、該描画命令に係る描画オブジェクトを受信してＧＰＵメモリに格納する。サーバＧＰＵ２０４は、接続されたサーバＶＲＡＭ２０５に対して描画を行う場合、描画オブジェクトのＧＰＵメモリへの展開を行なった後、該展開後の描画オブジェクトをＶＲＡＭ１０５に書き込む。
【００２３】
サーバ記録媒体２０６は、例えばＨＤＤ等の、サーバ２００に着脱可能に接続される記録装置である。本実施形態ではサーバ記録媒体２０６には、音声生成処理において音声信号の生成に用いるグレインのデータやインパルスパターンの情報等が記録されているものとする。なお、サーバ記録媒体２０６に記録される各パターンの情報は、ＰＣ１００の記録媒体１０６に記録されているものと同一であってもよいし、あるいは、サーバ記録媒体２０６により多くのパターンの情報が記録されていてもよい。
【００２４】
サーバ通信部２０７は、サーバ２００が有する通信インタフェースである。本実施形態ではサーバ通信部２０７は、ネットワーク３００を介して接続したＰＣ１００等の、他の機器との間におけるデータ送受信を行う。なお、サーバ通信部２０７は通信部１０７と同様に、通信仕様に従ったデータ形式の変換を行う。
【００２５】
＜音声生成処理＞
次に発明の実施形態に対応する音声生成処理について説明する。図４（Ａ）は、電子的に音を発生する方法であるグラニュラーシンセシス方式の概念を示す図である。左側に示される複数のグレインを無作為に配置することで、右側に示すような一つの音声信号が形成される。なお、各グレインは「連続音」としての性質を持たないパルス（１グレインは例えば１０２４サンプルからなる）である。グラニュラーシンセシス方式によれば、例えば、水の流れる音、雨の音、石が転がり落ちる音、岩が落ちて地面で割れる音、炎の音などを再現することができる。
【００２６】
従来は、グレインを増幅し、ミキシングしていくことにより、音声信号を生成した。従って、単位時間当りに含まれる粒子の数を増やす場合には、音声信号に含めるグレイン数をその分だけ増やす必要があり、それに伴って増幅およびミキシングの演算数も増加する。これに対し、本実施形態では、図４（Ｂ）に示すような単一のグレインについてのインパルスパターンを例えば１００msecのサイズでインパルスバッファとして生成する。なお、インパルスバッファ内のインパルス数は、単位時間当りのグレイン数に応じて決定する。このインパルスパターン及びグレインはフーリエ変換により周波数領域に変換され、その上で図４（Ｃ）に示すように当該インパルスパターンとグレインとの畳み込み演算により音声信号を生成する。なお、図４（Ｃ）では理解の容易のためにグレイン及びインパルスパターンをそれぞれ時間領域における表現としている。これにより、演算量が単位時間当りグレインの数の影響を受けにくくなり、単位時間当りのグレイン数が多い場合に従来方法と比較して演算負荷を軽減することが可能となる。
【００２７】
例えば、単位時間当りのグレイン数が３万グレインを超える場合に、本実施形態における音声生成処理による演算負荷の低減効果が期待できる。また、音の種類が異なれば、必要とされるグレイン数も異なる。例えば、小雨の音はグレイン数が１万あれば足りる一方、土砂降りの雨を表現するためにはが毎秒１００万グレインが必要となる。グレイン数を更に増加させて、例えば８０００万グレインになると音質は更に改善される。
【００２８】
次に図５は、複数のグレインを用いて音声生成を行う場合を示した図である。なお、ここでも理解の容易のためにグレイン及びインパルスパターンをそれぞれ時間領域における表現としている。この場合、グレイン毎にインパルスパターンを生成し、それぞれフーリエ変換により周波数領域に変換して畳み込み演算を行う。その後、逆フーリエ変換により時間領域に戻して生成された音声信号を加算し、最終的な音声信号を生成する。
【００２９】
次に、図６のフローチャートを参照して、本実施形態に対応する音声生成処理の流れを説明する。当該フローチャートに対応する処理は、ＰＣ１００側で実行される場合、ＣＰＵ１０１が、例えばＲＯＭ１０２に記録されている対応する処理プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより実現することができる。また、サーバ２００側で実行される場合、サーバＣＰＵ２０１が、例えばサーバＲＯＭ２０２に記録されている対応する処理プログラムを読み出し、サーバＲＡＭ２０３に展開して実行することにより実現することができる。以下では、一例としてＰＣ１００側で実行される場合を説明する。
【００３０】
まず、Ｓ６０１では、生成する音の種類を決定する。音により必要とされる単位時間当りのグレイン数が異なり、また、使用するグレインも異なるからである。ここでは、具体的に雨音、水の流れる音等のように、グレイン数及び使用するグレインを特定可能な程度に種別が決定される。なお、生成されるべき音の種類を予めテーブル化しておき、その中から選択しても良い。
【００３１】
続くＳ６０２では、Ｓ６０１において決定された音の種類に対応するグレインを時間関数ｇn(t)として決定する。ここで決定するグレインは、例えば音の種類に対応するグレインを予めテーブルに登録しておき、当該テーブルから読み出しても良い。読み出されたグレインはＲＡＭ１０３に保持される。なお、グレインの数（例えば、Ｎ個とする。）は、音の種類に応じて予め決定されていても良く、ｎは当該グレインの数に対応した値を有する。
【００３２】
続くＳ６０３では、時間関数としてのインパルスバッファ（in(t)）を、Ｓ６０２で決定されたグレイン毎に、音の種類に応じたグレイン数（例えばＮ個）だけ決定する。インパルスバッファの決定は、ランダムに行っても良いし、或いは、生成すべき音の種類に応じた物理シミュレーションに基づいて行っても良い。また、各バッファ内に含まれるインパルスの数は、音の種類に応じて決定される。上述のように、必要とされるグレイン数は１万グレインから８０００万グレインの間で変化し得る。そこで、バッファサイズを１００msecとして、グレインの数と、必要とされる単位時間当りのグレイン数応じて、バッファ毎のインパルス数が決定される。
【００３３】
次に、Ｓ６０４では、Ｓ６０２、Ｓ６０３でそれぞれ決定されたグレイン（gn(t)）と、インパルスバッファ(in(t))とをそれぞれフーリエ変換により周波数領域の関数Gn(x)、In(x)に変換する。なお、以前のフーリエ変換処理の結果がキャッシュされていてそれらが利用可能な場合には、Ｓ６０４における処理を省略しても良い。
【００３４】
また、Ｓ６０５では、グレイン毎に畳み込み演算を行う。具体的に周波数領域の音声信号をSn(x)とすると、Sn(x)＝Gn(x)＊In(x)となる。この畳み込み演算をｎ＝１からＮまでそれぞれ実行する。次にＳ６０６では、Ｓ６０５で得られた周波数領域における畳み込み演算結果S1(x)からSN(x)を逆フーリエ変換により時間領域の関数に変換して総和を計算する。時間領域における音声信号をs(t)とすると、s(t)＝s1(t)＋s2(t)＋...sN(t)となる。あるいは、逆フーリエ変換を行う前に周波数領域でS1(x)からSN(x)までの総和を計算した後、逆フーリエ変換により時間領域に変換しても良い。
【００３５】
以上により、音の種類に応じた音声信号を生成することができる。なお、上記説明では、ＰＣ１００またはサーバ２００のいずれかが全ての処理を実行する場合を説明したが、サーバ２００において途中までの処理を実行し、残りをＰＣ１００側で実行しても良い。上記説明ではグレインの種類が複数の場合を説明したがグレインは１種類のみであってもよいし、また、リアルタイムに音声生成する場合だけでなく、予め作り込みを行ってもよい。
【００３６】
なお、以上の処理（例えば上記図６に示したフローチャートに従った処理等）をコンピュータプログラムを所定の記憶媒体に記憶させ、この記憶媒体に記憶されているプログラムをコンピュータに読み込ませる（インストール、もしくはコピーさせる）ことで、このコンピュータは以上の処理を行うことができる。よって、コンピュータプログラム及び記憶媒体も本発明の範疇にあることは明白である。
【符号の説明】
【００３７】
１００：ＰＣ、２００：サーバ、３００：ネットワーク
【図１】
2016051117.tif 000003
【図２】
2016051117.tif 000004
【図３】
2016051117.tif 000005
【図６】
2016051117.tif 000006
【図４】
2016051117.tif 000007
【図５】
2016051117.tif 000008