| 【発明の名称】 |
音声シミュレーション装置、音声シミュレーション方法、ならびに、プログラム |
| 【発明者】 |
【氏名】鈴木 英之
|
| 【要約】 |
【課題】ドップラー効果を簡易にシミュレートする音声シミュレーション装置等を提供する。
【構成】音声シミュレーション装置301において、履歴記憶部302は、音源オブジェクトの移動履歴を記憶し、観測オブジェクトが時刻tに観測する音声波形は、音源オブジェクトが時刻g(t)に発声した音声波形に由来するとしたときに、時刻計算部303は、時刻t1および時刻t2における観測オブジェクトの位置および履歴記憶部302に記憶される音源オブジェクトの移動履歴から、時刻u1 = g(t1)および時刻u2 = g(t2)を計算し、音声出力部304は、音源オブジェクトが時刻u1から時刻u2までに発声した音声波形を時間長t2-t1に時間方向に伸縮して、伸縮された音声波形を、観測オブジェクトが時刻t1から時刻t2までに観測した音声波形として出力する。 |
【特許請求の範囲】
【請求項1】 音声を発する音源オブジェクトと、音声を観測する観測オブジェクトと、が移動する仮想空間において、当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形をシミュレートする音声シミュレーション装置であって、 当該仮想空間における当該音源オブジェクトの移動履歴を記憶する履歴記憶部、 当該仮想空間における音速cと、当該観測オブジェクトの時刻t1における位置b1と、時刻t2における位置b2と、前記記憶された当該音源オブジェクトの移動履歴と、から、時刻u1と時刻u2を計算する時刻計算部であって、当該音源オブジェクトの時刻u1における位置s1と、時刻u2における位置s2と、に対して、条件「位置b1と位置s1との距離がc(t1-u1)に等しく、かつ、位置b2と位置s2との距離がc(t2-u2)に等しい」を満たす時刻u1と時刻u2を計算する時刻計算部、 当該仮想空間内において前記計算された時刻u1から時刻u2までの間に当該音源オブジェクトが発する時間長(u2-u1)の音声波形を、時間長(t2-t1)に伸縮して、当該時間長を伸縮された音声波形を、当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形として出力する音声出力部 を備えることを特徴とする音声シミュレーション装置。 【請求項2】 請求項1に記載の音声シミュレーション装置であって、 前記音声出力部は、位置b1と位置s1との距離と、位置b2と位置s2との距離と、に基づいて、当該時間長を伸縮された音声波形の振幅を伸縮して、当該振幅を伸縮された音声波形を、当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形として出力する ことを特徴とする音声シミュレーション装置。 【請求項3】 請求項1または2に記載の音声シミュレーション装置であって、 u1≧u2である場合、前記音声出力部は、所定の衝撃音声波形を、時間長(t2-t1)の間、当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形として出力する ことを特徴とする音声シミュレーション装置。 【請求項4】 請求項1から3のいずれか1項に記載の音声シミュレーション装置であって、 所定の時間刻み幅ΔTに対してt2 = t1+ΔTであり、 前記音声出力部により当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形が出力されると、時刻t1と時刻t2をそれぞれΔTだけ増加させて、時刻u1に時刻u2を設定し、前記時刻計算部に時刻u2の計算を再度行わせる繰返制御部 をさらに備えることを特徴とする音声シミュレーション装置。 【請求項5】 音声を発する音源オブジェクトと、音声を観測する観測オブジェクトと、が移動する仮想空間において、当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形をシミュレートし、当該仮想空間における当該音源オブジェクトの移動履歴を記憶する履歴記憶部、時刻計算部、音声出力部を備える音声シミュレーション装置にて実行される音声シミュレーション方法であって、 前記時刻計算部が、当該仮想空間における音速cと、当該観測オブジェクトの時刻t1における位置b1と、時刻t2における位置b2と、前記記憶された当該音源オブジェクトの移動履歴と、から、時刻u1と時刻u2を計算する時刻計算工程であって、当該音源オブジェクトの時刻u1における位置s1と、時刻u2における位置s2と、に対して、条件「位置b1と位置s1との距離がc(t1-u1)に等しく、かつ、位置b2と位置s2との距離がc(t2-u2)に等しい」を満たす時刻u1と時刻u2を計算する時刻計算工程、 前記音声出力部が、当該仮想空間内において前記計算された時刻u1から時刻u2までの間に当該音源オブジェクトが発する時間長(u2-u1)の音声波形を、時間長(t2-t1)に伸縮して、当該時間長を伸縮された音声波形を、当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形として出力する音声出力工程 を備えることを特徴とする音声シミュレーション方法。 【請求項6】 コンピュータに、音声を発する音源オブジェクトと、音声を観測する観測オブジェクトと、が移動する仮想空間において、当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形をシミュレートさせるプログラムであって、当該プログラムは、当該コンピュータを、 当該仮想空間における当該音源オブジェクトの移動履歴を記憶する履歴記憶部、 当該仮想空間における音速cと、当該観測オブジェクトの時刻t1における位置b1と、時刻t2における位置b2と、前記記憶された当該音源オブジェクトの移動履歴と、から、時刻u1と時刻u2を計算する時刻計算部であって、当該音源オブジェクトの時刻u1における位置s1と、時刻u2における位置s2と、に対して、条件「位置b1と位置s1との距離がc(t1-u1)に等しく、かつ、位置b2と位置s2との距離がc(t2-u2)に等しい」を満たす時刻u1と時刻u2を計算する時刻計算部、 当該仮想空間内において前記計算された時刻u1から時刻u2までの間に当該音源オブジェクトが発する時間長(u2-u1)の音声波形を、時間長(t2-t1)に伸縮して、当該時間長を伸縮された音声波形を、当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形として出力する音声出力部 として機能させることを特徴とするプログラム。
|
【発明の詳細な説明】【技術分野】 【0001】 本発明は、ドップラー効果を簡易にシミュレートする音声シミュレーション装置、音声シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムに関する。 【背景技術】 【0002】 ドップラー効果とは、一般には、波(音波や電波、光波など。)の発生源(音源、電波源、光源など。)や両者の相対速度や観測者が波の媒体に対して移動する速度によって、波の周波数が異なって観測される現象をいう。一般に、発生源が観測者に近付く場合には、波の振動が詰められて周波数が高くなり、遠ざかる場合には、振動が伸ばされて周波数が低くなる。 【0003】 このようなドップラー効果に関する技術については、たとえば、以下の文献に開示されている。 【特許文献1】特開平10−042399号公報 【非特許文献1】フリー百科辞典『ウィキペディア』より「ドップラー効果」の項 http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%83%E3%83%97%E3%83%A9%E3%83%BC%E5%8A%B9%E6%9E%9C 【0004】 ここで、[特許文献1]では、音声空間化システムに、ドップラー効果をシミュレートする技術を応用する旨が開示されている。 一方、[非特許文献1]には、音波についてのドップラー効果の計算技術が開示されている。観測者と音源が同一直線上を動き、音源Sから観測者Oに向かう向きを正し、音源の出す音波の周波数をf、音速をc、観測者の移動速度をvo、音源の移動速度をvsとすると、観測者に聞こえる音波の振動数f'は、以下のように求められる。 f' = f×(c-vo)/(c-vs) 【発明の開示】 【発明が解決しようとする課題】 【0005】 しかしながら、音源と観測者が自由に空間内を移動する場合や、その移動速度が音速を超える場合については、これらの文献には開示されておらず、簡易なシミュレーション技術が強く求められている。 本発明は、上記のような課題を解決するもので、ドップラー効果を簡易にシミュレートする音声シミュレーション装置、音声シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。 【課題を解決するための手段】 【0006】 以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。 【0007】 本発明の第1の観点にかかる音声シミュレーション装置は、音声を発する音源オブジェクトと、音声を観測する観測オブジェクトと、が移動する仮想空間において、当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形をシミュレートし、履歴記憶部、時刻計算部、音声出力部を備え、以下のように構成する。 【0008】 ここで、履歴記憶部は、当該仮想空間における当該音源オブジェクトの移動履歴を記憶する。 【0009】 典型的には、仮想空間における音源オブジェクトの位置を一定の時間間隔で取得して、配列やリングバッファなどの形式で順次記憶することにより、ある時刻における位置が取得できるようにする。なお、所望の時刻ちょうどにおける音源オブジェクトの位置を知りたい場合であって、その時刻に対応する位置が記憶されていない場合は、その時刻の前後の時刻における位置を取得して、適切な補間を行えば良い。 【0010】 一方、時刻計算部は、当該仮想空間における音速cと、当該観測オブジェクトの時刻t1における位置b1と、時刻t2における位置b2と、記憶された当該音源オブジェクトの移動履歴と、から、時刻u1と時刻u2を計算する。このとき、当該音源オブジェクトの時刻u1における位置s1と、時刻u2における位置s2と、に対して、条件「位置b1と位置s1との距離がc(t1-u1)に等しく、かつ、位置b2と位置s2との距離がc(t2-u2)に等しい」を満たす時刻u1と時刻u2を計算する。 【0011】 通常のドップラー効果の計算では、音源オブジェクトと観測オブジェクトの移動速度に基づいて周波数の変化の計算を行うが、本発明においては、音源オブジェクトと観測オブジェクトの位置関係が所定の条件を満たすような時刻を求めることにより、周波数の変化はもちろん、音源オブジェクトから観測オブジェクトまでに音波が至るまでの時間遅延を考慮したシミュレーションが可能となる。 【0012】 さらに、音声出力部は、当該仮想空間内において計算された時刻u1から時刻u2までの間に当該音源オブジェクトが発する時間長(u2-u1)の音声波形を、時間長(t2-t1)に伸縮して、当該時間長を伸縮された音声波形を、当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形として出力する。 【0013】 時間長(u2-u1)の音波波形を時間長(t2-t1)の音波波形に時間方向に伸縮することにより、ドップラー効果による周波数の変化を適切にシミュレートすることができる。また、時刻u1から時刻u2までの間に当該音源オブジェクトが発した音波波形に相当するものを、時刻t1から時刻t2までの間に観測オブジェクトが観測した音波波形とすることで、両者の距離に基づく時間遅延を適切にシミュレートすることができる。 【0014】 本発明によれば、発音体と観測体とが自由に移動するような場合のドップラー効果を、簡易な計算で適切にシミュレートすることができるようになる。 【0015】 また、本発明の音声シミュレーション装置において、音声出力部は、位置b1と位置s1との距離と、位置b2と位置s2との距離と、に基づいて、当該時間長を伸縮された音声波形の振幅を伸縮して、当該振幅を伸縮された音声波形を、当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形として出力するように構成することができる。 【0016】 すなわち、距離の変化によって到達する音波波形の強さ(音量)が減衰する状況をシミュレートするものである。音量の調整は、たとえば、時刻t1から時刻t2までに観測される音声波形を、位置b1と位置s1との距離に基づく減衰率1と、位置b2と位置s2との距離に基づく減衰率2との平均増幅率で出力することとしても良いし、時刻t1においては減衰率1で、時刻t2においては減衰率2で、その間は減衰率1から減衰率2へ滑らかに変化するような増幅率で、出力することとしても良い。 【0017】 本発明によれば、発音体と観測体とが自由に移動するような場合の両者の距離に基づく減衰率を、ドップラー効果にあわせて、簡易な計算で適切にシミュレートすることができるようになる。 【0018】 また、本発明の音声シミュレーション装置において、u1≧u2である場合、音声出力部は、所定の衝撃音声波形を、時間長(t2-t1)の間、当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形として出力するように構成することができる。 【0019】 上記発明においては、両者が音速未満の速度で移動するような状況に対応することができるが、本発明では、超音速で移動するような場合にも対応が可能である。先行技術に開示される技術では、超音速移動下では、周波数がマイナスとなり、音声が逆転再生される、という不合理が生じてしまうが、本発明は、現実にはこのような逆転再生は生じず、衝撃波が生じる、という状況を適切にシミュレートするものである。 【0020】 本発明によれば、超音速移動下で生じるような衝撃波を所定の衝撃音声波形で近似することとし、その再生時刻・再生時間を適切に調整することで、衝撃波が到達する状況を簡易にシミュレートすることができるようになる。 【0021】 また、本発明の音声シミュレーション装置は繰返制御部をさらに備え、所定の時間刻み幅ΔTに対してt2 = t1+ΔTであり、繰返制御部は、音声出力部により当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形が出力されると、時刻t1と時刻t2をそれぞれΔTだけ増加させて、時刻u1に時刻u2を設定し、時刻計算部に時刻u2の計算を再度行わせるように構成することができる。 【0022】 本発明は、上記発明の好適実施形態に係るものであり、観測オブジェクト側における時間の刻み幅をΔtとして、その刻み幅で区切られた各区間に対して、音源オブジェクトにおける音波波形の区間を求め、これを時間長Δtに伸縮させて再生するものである。このとき、前の繰り返し単位で求められた時刻u2は、次の繰り返し単位における時刻u1に相当するから、その代入を行う。 【0023】 本発明によれば、時間の刻み幅で音声シミュレーションを繰り返す際に、区間が連続していることを利用して計算量を適切に抑制することができるようになる。 【0024】 本発明のその他の観点に係る音声シミュレーション方法は、音声を発する音源オブジェクトと、音声を観測する観測オブジェクトと、が移動する仮想空間において、当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形をシミュレートし、当該仮想空間における当該音源オブジェクトの移動履歴を記憶する履歴記憶部、時刻計算部、音声出力部を備える音声シミュレーション装置にて実行され、時刻計算工程、音声出力工程を備え、以下のように構成する。 【0025】 すなわち、時刻計算工程では、時刻計算部が、当該仮想空間における音速cと、当該観測オブジェクトの時刻t1における位置b1と、時刻t2における位置b2と、記憶された当該音源オブジェクトの移動履歴と、から、時刻u1と時刻u2を計算する。このとき、当該音源オブジェクトの時刻u1における位置s1と、時刻u2における位置s2と、に対して、条件「位置b1と位置s1との距離がc(t1-u1)に等しく、かつ、位置b2と位置s2との距離がc(t2-u2)に等しい」を満たす時刻u1と時刻u2を計算する。 【0026】 一方、音声出力工程では、音声出力部が、当該仮想空間内において計算された時刻u1から時刻u2までの間に当該音源オブジェクトが発する時間長(u2-u1)の音声波形を、時間長(t2-t1)に伸縮して、当該時間長を伸縮された音声波形を、当該観測オブジェクトにて時刻t1から時刻t2までに観測される音声波形として出力する。 【0027】 本発明のその他の観点に係るプログラムは、コンピュータを上記の音声シミュレーション装置として機能させ、コンピュータに上記の音声シミュレーション方法を実行させるように構成する。 また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。 上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。 【発明の効果】 【0028】 本発明によれば、ドップラー効果を簡易にシミュレートする音声シミュレーション装置、音声シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。 【発明を実施するための最良の形態】 【0029】 以下に本発明の実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。 【実施例1】 【0030】 図1は、プログラムを実行することにより、本発明の音声シミュレーション装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。 【0031】 情報処理装置100は、CPU(Central Processing Unit)101と、ROM(Read Only Memory) 102と、RAM(Random Access Memory)103と、インターフェイス104と、コントローラ105と、外部メモリ106と、画像処理部107と、DVD−ROM(Digital Versatile Disc ROM)ドライブ108と、NIC(Network Interface Card)109と、音声処理部110と、マイク111と、を備える。 【0032】 ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ108に装着して、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態の音声シミュレーション装置が実現される。 【0033】 CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。 【0034】 ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。 【0035】 RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行ったり、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。 【0036】 インターフェイス104を介して接続されたコントローラ105は、ユーザがゲーム実行の際に行う操作入力を受け付ける。 【0037】 インターフェイス104を介して着脱自在に接続された外部メモリ106には、ゲーム等のプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。ユーザは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。 【0038】 DVD−ROMドライブ108に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ108は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。 【0039】 画像処理部107は、DVD−ROMから読み出されたデータをCPU 101や画像処理部107が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部107が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部107に接続されるモニタ(図示せず)へ出力される。これにより、各種の画像表示が可能となる。 【0040】 画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。 【0041】 また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。 【0042】 さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。 【0043】 NIC 109は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)により構成される。 【0044】 音声処理部110は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。 【0045】 音声処理部110では、DVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカに出力することにより、音声出力が可能となる。 【0046】 さらに、情報処理装置100には、インターフェイス104を介してマイク111を接続することができる。この場合、マイク111からのアナログ信号に対しては、適当なサンプリング周波数でA/D変換を行い、PCM形式のディジタル信号として、音声処理部110でのミキシング等の処理ができるようにする。 【0047】 このほか、情報処理装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ108に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。 【0048】 以上で説明した情報処理装置100は、いわゆる「コンシューマ向けテレビゲーム装置」に相当するものであるが、仮想空間を表示するような画像処理を行うものであれば本発明を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明を実現することが可能である。 【0049】 たとえば、一般的なコンピュータは、上記情報処理装置100と同様に、CPU、RAM、ROM、DVD−ROMドライブ、および、NICを備え、情報処理装置100よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラ105ではなく、キーボードやマウスなどを入力装置として利用する。 【0050】 (ドップラー効果のモデル) 以下では、音源と観測者が仮想空間内を自由に移動する場合であって、ときとしてその移動速度が音速を超えるような場合のドップラー効果の基本的なシミュレーションの手法について説明する。 【0051】 時刻tにおける音源Sの座標を、 s(t) = (sx(t),sy(t),sz(t)) とし、時刻tにおける観測者Bの座標を、 b(t) = (bx(t),by(t),bz(t)) とする。s(t)およびb(t)は、位置ベクトルである。また、音速をcとする。 【0052】 図2は、音源Sと観測者Bが移動する際の位置関係を示す説明図である。以下、本図を参照して説明する。 【0053】 本図において、音源S(201)は、時刻u1から時刻u2までに位置s1=s(u1)から位置s2=s(u2)まで移動する。この間に発音された音波波形221が、観測者B(202)において時刻t1から時刻t2までに音波波形222として到達したものとする(本図では、理解を容易にするため、距離による減衰は図示を省略している)。 【0054】 観測者B(202)は、時刻t1から時刻t2までに位置b1=b(t1)から位置b2=b(t2)まで移動する。 【0055】 そして、音波波形221は、音速cで伝搬して音波波形222となる。したがって、ベクトルの長さを求める演算を|・|とし、音波の到達時間を考慮すれば、音波波形の先頭について、 c(t1-u1) = |s(u1)-b(t1)| が成立し、末尾について、 c(t2-u2) = |s(u2)-b(t2)| が成立する。 【0056】 このモデルに基づいて一般化を行う。すなわち、時刻uに音源Sから発せられた音波が時刻tに観測者Bに到達したとする。 c(t-u) = |s(u) - b(t)| という関係が成立する。 【0057】 ベクトルaとベクトルbの内積を求める演算をa・bのように表記するとき、この関係は、 c2(t-u)2 = (s(u) - b(t))・(s(u) - b(t)); ただしt≧u と書くこともできる。 【0058】 一般に、ある時刻tが与えられたときに、条件 c(t-u) = |s(u) - b(t)| を満たす時刻uを求める関数が、かりに u = g(t) のように求められたとする。 【0059】 また、位置ベクトルpから位置ベクトルqへ音波が伝達される場合の減衰係数をk(p,q)とする。典型的には、 k(p,q) = 1/((p-q)・(p-q)); k(p,q) = 1/|p-q| など、種々の計算手法を採用することができる。 【0060】 ここで、時刻tにおいて音源Sが発する音波の変位(基準点からのずれ)をa(t)とする。すなわち、時刻tを所定のサンプリング周期の単位で次第に増加させてa(t)を計算し、計算されたa(t)をその時点での音波波形であることとして、時刻tにスピーカへ値a(t)を出力すれば、音源Sの発する音波が再生されることになる。 【0061】 このような状況下では、時刻tにおいて観測者Bが聴取する音波の変位は、 a(g(t))×k(s(g(t)),b(t)) と書くことができる。この式の前半は、ドップラー効果によるものであり、後半は、音波の減衰によるものである。 【0062】 したがって、時刻tを所定のサンプリング周期の単位で次第に増加させてa(g(t))×k(s(g(t)),b(t))を計算し、計算されたa(g(t))×k(s(g(t)),b(t))をその時点での音波波形であることとして、時刻tにスピーカへ値a(g(t))×k(s(g(t)),b(t))を出力すれば、観測者Bが聞いた音波が再生されることになる。 【0063】 すなわち、観測者Bにおいて時刻t1から時刻t2までに観測される音波波形は、音源Sにおいて時刻u1 = g(t1)から時刻u2 = g(t2)までに発生された音波波形に起因するものである。また、時刻t1における元の波形に対する増幅率(減衰率)は、k(s(g(t1)),b(t1))となり、時刻t2における元の波形に対する増幅率は、k(s(g(t2)),b(t2))となる。 【0064】 さて、ここで問題となるのが、いかにして、関数u = g(t)を求めるか、ということである。 【0065】 特に仮想環境下では、時刻tにおける観測者Bの位置b(t)や音源Sの位置s(t)は、ユーザの各種の指示操作に基づいて更新されることや、乱数に基づいて、あるいは、コンピュータがあらかじめ定めたアルゴリズムに基づいて更新されることが多い。したがって、解析的に関数u = g(t)を求めることは困難である。 【0066】 そこで、時間的に離散された近似を用いて、この関数u = g(t)の実用的な解を得ることにする。まず、離散近似の時間の刻み幅をΔTとする。たとえば、コンピュータ等によりシミュレーションを行う場合には、ΔTとして垂直同期信号の間隔を採用するのが典型的である。 【0067】 そして、時刻t = iΔTにおける音源Sの位置ベクトルと、観測者Bの位置ベクトルと、を、それぞれ、配列S、Bのi番目の要素に格納することとする。 S[i] = s(iΔT); B[i] = b(iΔT) 【0068】 すなわち、この説明では、配列S、Bには、音源Sと観測者Bの位置の履歴が保存される。 【0069】 この配列の長さに制限を設ける手法としては、リングバッファ的に使用して、時刻iΔTの時の位置ベクトルをi mod L番目の要素に格納することとしても良い。ここで、Lは配列の長さである。 【0070】 以下、理解を容易にするため、位置の履歴は無限に格納されるものとするが、上記のリングバッファ等を採用する場合には、有効な添字のみを処理対象とすれば良い。 【0071】 時刻t = iΔTにおける関数u = g(t) = g(iΔT)の値を求めるには、まず、ki < iなる整数kiであって、 c(iΔT - kiΔT)と|s(kiΔT) - b(iΔT)|の大小関係と、 c(iΔT - (ki+1)ΔT)と|s((ki+1)ΔT) - b(iΔT)|の大小関係と、 が、逆転しているようなkiを探す。すなわち、 c(iΔT - kiΔT)≦|s(kiΔT) - b(iΔT)|かつc(iΔT - (ki+1)ΔT)≧|s((ki+1)ΔT) - b(iΔT)|、もしくは、 c(iΔT - kiΔT)≧|s(kiΔT) - b(iΔT)|かつc(iΔT - (ki+1)ΔT)≦|s((ki+1)ΔT) - b(iΔT)| となるkiを探すのである。これを「逆転条件」と呼ぶこととする。 【0072】 ここで、 c(iΔT - kiΔT) = c(i-ki)ΔT; s(kiΔT) - b(iΔT) = S[ki] - B[i]; c(iΔT - (ki+1)ΔT) = c(i-ki-1)ΔT; s((ki+1)ΔT) - b(iΔT) = S[ki+1] - B[i] であるから、配列を添字i(現在時刻)が減少する方向に向かって走査することによって、このようなkiが発見できるはずである。 【0073】 また、一旦kiが発見されたら、時刻t = (i+1)ΔTのステップにおいては、前回発見されたkiの近傍を探せば、走査の時間を短縮して、ki+1を発見することができるはずである。発見できなかった場合は、音波が到達していないものとする。 【0074】 また、リングバッファを採用した場合には、走査するステップ数を最大でL個とし、添字で参照する場合にmod Lすれば良い。 【0075】 このようなkiが見つかれば、 c(iΔT - u) = |s(u) - b(iΔT)| を満たすようなu = g(t) = g(iΔT)を、補間によって求めることができる。 【0076】 最も単純な線形補間を採用する場合には、 g(iΔT) = kiΔT + ΔT×(c(i-ki)ΔT - |S[ki] - B[i]|)/(|S[ki+1] - B[i]| - c(i-ki-1)ΔT); とする。このほかの補間の手法として、たとえば、 g(iΔT) = kiΔT + ΔT×(c2(i-ki)2ΔT2 - |S[ki] - B[i]|2)/(|S[ki+1] - B[i]|2 - c2(i-ki-1)2ΔT2) のようにするなど、種々の補間技術を採用することができる。 【0077】 なお、大小関係の等号の一方が成立する場合は、そのときの値をそのまま使用し、両方が同時に成立する場合は、2つの値を平均することとしても良い。 【0078】 さて、このようにして求められた u = g(iΔT) もまた、配列Gのi番目の要素G[i]に格納することとする。 G[i] = g(iΔT) 【0079】 配列Gもまた、リングバッファとすることもできる。また、配列Gは、最新の2つの要素だけが重要である。 【0080】 また、時刻u = g(iΔT) = G[i]における音源Sの位置は、線形補間により、ベクトルS[ki]とベクトルS[ki+1]とを、比率 (G[i] - kiΔT):((ki+1)ΔT - G[i]) で内分する点である。この点の位置ベクトルを、S'[i]と表記することとし、これも、上記と同様に配列に記憶されるものとする。 【0081】 さて、現実のドップラー効果であれば、時刻(i-1)ΔT〜iΔTの間の観測者Bが観測する変位は、 a(G[i-1])×ki(S'[i-1],B[i-1])〜a(G[i])×ki(S'[i],B[i]) となるべきである。 【0082】 すなわち、元の音源a(u)の時刻u = G[i-1]〜G[i]の変位に適切な減衰係数を乗じて、時刻t = (i-1)ΔT〜iΔTにぴったりおさまるように時間方向に波形を伸縮して再生すれば、現実のドップラー効果に最も適合したものとなる。 【0083】 しかしながら、シミュレーションにおいては、過去にさかのぼって再生を行うことはできない。したがって、元の音源a(u)の時刻u = G[i-1]〜G[i]の変位に適切な減衰係数を乗じて、時刻t = iΔT〜(i+1)ΔTにぴったりおさまるように時間方向に波形を伸縮して再生することによって、ドップラー効果をシミュレートする。 【0084】 また、減衰係数についても、計算を簡易にするため、 ki(S'[i-1],B[i-1]); ki(S'[i],B[i]) のいずれか一方のみを用いたり、これらの平均を用いたり、前者から後者へ次第に変化するようにする等、種々の態様を採用することができる。 【0085】 さて、ここまでは、音源Sも観測者Bも、音速未満で移動する場合のドップラー効果を考えていたが、超音速で動作する場合については、特別な処理が必要となる。 【0086】 すなわち、音速未満での移動の場合には、 u = g(t) は単調増加関数であり、 G[i-1] < G[i] が成立する。 【0087】 ところが、超音速での移動がある場合には、 G[i-1] ≧ G[i] となってしまうことがありうる。 【0088】 この場合には、観測者Bは衝撃波を跨いだ状況下にあると考えられるので、音の再生を反転させるのではなく、時刻t = iΔT〜(i+1)ΔTの間は、あらかじめ別途用意した、衝撃音の音源を再生すれば良い。 【0089】 この際に、衝撃音の音量として、上記と同様の減衰係数を考慮することとしても良いし、一定音量で衝撃音が再生されることとしても良い。 【0090】 音速未満の場合には、kiを探すために配列Sを走査する場合、前回発見されたkiの近傍を探す場合、 ki < ki+1 が成立するから、kiから、値が増加する方向に走査を行えば良いが、超音速がありうる場合は、kiの近傍を双方向に走査する必要がある。 【0091】 なお、上記のような処理を行う場合、配列S'、配列Gについては、最新の2つ分の情報だけ保持できれば十分である。また、配列Bについては、最新の1つ分ないし2つ分の情報だけ保持できれば十分である。したがって、配列のサイズを適宜変更しても良い。また、「配列」ではなく、2つの変数を用いることとしても良い。たとえば、現在時刻がt = iΔTであるとき、配列の要素B[i],S'[i]に格納すべき最新の値は、それぞれ変数b2,s2に格納することとし、その直前の要素B[i-1]に格納すべき値は、それぞれ変数b1,s1に格納する、のごとくである。 【0092】 以下では、上記の考え方に基づいて、本発明の実施形態の詳細について、さらに説明する。 【0093】 (実施形態の詳細) 図3は、本実施形態に係る音声シミュレーション装置の概要構成を示す説明図である。以下、本図を参照して説明する。 【0094】 音声シミュレーション装置301は、履歴記憶部302、時刻計算部303、音声出力部304、繰返制御部305を備える。 【0095】 音声シミュレーション装置301は、時間の刻み幅ΔTで離散的にシミュレーションを行う。ΔTの長さとしては、たとえば、ゲーム装置等で各種の繰り返し計算の単位となる垂直同期割り込み周期等を採用することができる。 【0096】 履歴記憶部302は、RAM 103により実現され、以下の変数領域が確保される。 (a)現在時刻を表すカウンタi。このカウンタは、時間ΔTが経過するごとに1ずつ増加する。 (b)音源S(201)である音源オブジェクトの位置ベクトルの履歴を格納する配列S。この配列は、長さLのリングバッファとして構成され、時刻t = iΔTのときの音源オブジェクトの位置ベクトルs(iΔT)は、配列Sのi mod L番目の要素S[i mod L]に格納される。また、理解を容易にするため、以下では、S[i mod L]を単にS[i]と書く。 (c)観測者B(202)である観測オブジェクトの直前時刻t = (i-1)ΔTにおける位置ベクトルを格納する変数b1 = b((i-1)ΔT)と、現在時刻t = iΔTにおける位置ベクトルを格納する変数b2 = b(iΔT)。 (d)変数b1に対応する音源S(201)の位置ベクトルを格納する変数s1 = g((i-1)ΔT)と、変数b2に対応する音源S(201)の位置ベクトルを格納する変数s2 = g(iΔT)。 (e)時刻u1,u2。最新の時刻区間t = (i-1)ΔT〜iΔTに観測された音波波形は、音源オブジェクトが時刻u1〜時刻u2に発生した音波波形に起因するものである。なお、これらの時刻変数u1,u2には、「未知」を示す情報を代入することも可能とする。これは、対応する時刻が見つからなかった場合などに使用する。 (f)時刻t1,u1に対応する増幅減衰率m1と、時刻t2,u2に対応する増幅減衰率m2。 (g)一時的なカウンタ変数k。繰り返し処理で用いられる。 (h)このほか、音源オブジェクトや観測オブジェクトの物理シミュレーションに必要な種々の情報。たとえばこれらを飛行機として実現する場合には、位置や速度、姿勢、ラダー等の操作量、高度、気圧、風力などの諸条件が記憶される。 【0097】 図4は、本音声シミュレーション装置にて実行される音声シミュレーション処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。 【0098】 本処理が開始されると、CPU 101は、履歴記憶部302を適切な値に初期化する(ステップS401)。 【0099】 次に、CPU 101は、観測オブジェクトの現在位置を変数b1に格納する(ステップS402)。 【0100】 さらに、ダミー用初期値として、音源オブジェクトの現在位置を配列要素S[0],S[1],…,S[L-1]のすべてに格納し、音源オブジェクトの現在位置を変数s1に格納し、「未発見」を意味する値を変数u1に格納し、値1を変数m1に格納する。(ステップS404)。 【0101】 そして、時間ΔTだけ待機する(ステップS405)。この待機時間の間には、他の種々の処理を実行することができる。たとえば、各オブジェクトの物理シミュレーションの計算を行って、次の時刻t = (i+1)ΔTにおける音源オブジェクトや観測オブジェクトの位置を計算したり、コルーチン的に別の処理を実行する等の処理を実行する。 【0102】 待機が終了したら、現在時刻カウンタiをi←i+1のように更新する(ステップS406)。ここで「←」は「代入」の意味である。すなわち、現在時刻t2 = iΔTとなり、その直前の時刻t1 = (i-1)ΔTとなる。 【0103】 さらに、CPU 101は、音源オブジェクトの現在位置を配列要素S[i]に格納し(ステップS407)、観測オブジェクトの現在位置を変数b2に格納する(ステップS408)。 【0104】 そして、CPU 101は、変数k = 0,1,2,3,…,L-1のそれぞれについて、以下の処理を繰り返す(ステップS409)。 【0105】 すなわち、 d(i,h) = c×h - |S[i-h]-b2| とおいたときに、逆転条件 d(i,k)×d(i,k-1)≦0 が成立するか否かを調べる(ステップS410)。 【0106】 この逆転条件は、 c×kと|S[i-k] - b2|の大小関係と、 c×(k-1)と|S[i-(k-1)] - b2|の大小関係と、 が逆転しているときに成立する。 【0107】 成立していない場合(ステップS410;No)、ステップS409からの処理を繰り返す(ステップS411)。なお、このkについての繰り返しは、必ずしも0,1,…,L-1の順である必要はない。 【0108】 すなわち、前回発見されたkの値を変数k'に設定し、まずその近傍を探し、見付からなければ残りの値を探す、のようにしても良い。たとえば、適当な定数W (W<L)を用いて、 k'-W,k'-W+1,k'-W+2,…,k'-W+L-1 の順に探す、という手法である。上記のように、配列Sの添字についてはmod Lを行うので、上記のようにkを変化させることで、適切に配列Sをアクセスすることができる。 【0109】 成立している場合(ステップS410;Yes)、ベクトル(k,d(i,k))とベクトル(k-1,d(i,k-1))との間にあるベクトルであって、その値が(u2,0)となるような時刻u2を補間により求める(ステップS412)。 【0110】 同様に、ベクトル(S[i-k],d(i,k))とベクトル(S[i-(k-1)],d(i,k-1))との間にあるベクトルであって、その値が(s2,0)となるような位置ベクトルs2を補間により求める(ステップS413)。 【0111】 たとえば、上記モデルの線形補間を行う場合、以下のような計算および代入を行うことになる。 u2←〔d(i,k)(k-1) - d(i,k-1)k〕/〔d(i,k)-d(i,k-1)〕; s2←〔d(i,k)S[k-1] - d(i,k-1)S[k]〕/〔d(i,k)-d(i,k-1)〕 このように、CPU 101は、RAM 103等と共働して、時刻計算部303として動作する。 【0112】 さて、上記のようにしてu2が求められた場合は、u1とu2が有効であるか否かおよびその大小を比較する(ステップS414)。 【0113】 u1<u2である場合(ステップS414;<)、増幅減衰率m2を、 m2←k(s2,b2) のように計算する(ステップS415)。 【0114】 ついで、音源オブジェクトが時刻u1から時刻u2までに発生した音波波形を取得する(ステップS416)。 【0115】 この音波波形が、たとえばPCM音源で用意されている場合は、当該PCM音源の対応する時間区間の波形を取得すれば良いし、MIDI音源で用意されている場合は、当該時間区間に再生される演奏情報を取得すれば良い。 【0116】 そして、取得された音波波形の時間長u2-u1を、ΔTに伸縮する(ステップS417)。これは、ドップラー効果の従来の技術における周波数変換に相当する処理である。音波波形を、横軸を時間経過、縦軸を変位とする2次元図形と考えたときは、当該伸縮処理は、当該2次元図形を横軸方向に伸縮させる処理に相当する。PCM音源の場合には、このような図形の伸縮処理に相当するものを直接行えば良いし、音声処理部107がこれに対応するピッチ変更の機能を有する場合には、これを用いれば良い。MIDI音源の場合には、演奏情報を再生する際のピッチを、当該時間長の比に合わせて変更すれば良い。 【0117】 さらに、伸縮された時間長ΔT音波波形を、その区間先頭に対する増幅減衰率をm1とし、その区間末尾に対する増幅減衰率をm2とするように、滑らかに増幅減衰率を変化させながら、音波波形の変位方向に伸縮する(ステップS418)。この処理についても、上記のピッチ変更と同様に、CPU 101が波形を変化させたり、音声処理部107に処理を行わせることによって実現できる。 【0118】 ついで、観測オブジェクトが時刻t1から時刻t2までに観測した音波波形として、時間方向および変位方向に伸縮された音波波形を出力する(ステップS419)。具体的には、音声処理部107が用意する再生用音声バッファに伸縮済みの時間長ΔTの音波波形を追加するように、音声処理部107に指示を出せば良い。 【0119】 このように、CPU 101は、RAM 103および音声処理部107と共働して、音声出力部304として機能する。 【0120】 そして、 b1←b2; s1←s2; u1←u2; m1←m2 のように、各変数を更新して、次の繰り返し単位に備え(ステップS420)、ステップS405に戻る。 【0121】 したがって、CPU 101は、RAM 103と共働して繰返制御部305として機能する。 【0122】 一方、ステップS409〜S411の繰り返しが、u2が見つからないままに終了した場合、変数u2に「未発見」を代入し(ステップS421)、観測オブジェクトが時刻t1から時刻t2までに観測した音波波形として、時間長ΔTの「無音」(変位が常に0の音声波形)を出力し(ステップS422)、ステップS420に進む。また、ステップS414において、u1,u2のいずれか少なくとも一方が「未発見」である場合(ステップS414;未発見)、ステップS422に進む。 【0123】 このほか、ステップS414において、u1≧u2である場合(ステップS414;≧)、あらかじめ用意された観測オブジェクトが時刻t1から時刻t2までに観測した音波波形として、時間長ΔTの衝撃音声波形を出力し(ステップS423)、ステップS420に進む。 【0124】 衝撃音声波形は、衝撃波が通過するときの「音」を表すものである。たとえば白色雑音などの音声波形を利用したり、爆発音などをサンプリングして使用するなどの手法が考えられる。 【0125】 上記実施形態では、ステップS418において、増幅率をm2からm1までなめらかに変化させるように音声波形を変位方向に伸縮させているが、この二つの増幅率の平均を採用したり、増幅率m2のみを採用するなどの手法もありうる。また、用途によっては、距離による減衰を考慮しないで、時間方向に伸縮された音声波形をそのまま利用することとしても良い。 【0126】 また、リアルタイムシミュレーションの場合には、現在時刻がt2に相当するから、「時刻t1から時刻t2までに観測オブジェクトが観測した波形」は、時刻t2以降に出力されることとなり、ΔT以上の時間遅延が生じてしまうが、ΔTとして垂直同期割り込み周期程度の短時間を採用した場合には、ユーザにはこの遅延は違和感なく受け入れられる程度である。 【0127】 また、オフライン(リアルタイムでない)シミュレーションの場合には、ステップS419、ステップS422、ステップS423で出力される音声波形を単純に連結すれば、シミュレーションを行う時間帯において観測オブジェクトが観測する音声波形がそのまま得られることになる。 【0128】 このように、本実施形態によれば、仮想空間内を音源と観測者が自由に移動する場合や音速を超えるような場合であっても、ドップラー効果のシミュレーションを簡易にリアルに行うことができるようになる。 【産業上の利用可能性】 【0129】 以上説明したように、本発明によれば、ドップラー効果を簡易にシミュレートする音声シミュレーション装置、音声シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。 【図面の簡単な説明】 【0130】 【図1】プログラムを実行することにより、本発明の音声シミュレーション装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。 【図2】音源Sと観測者Bが移動する際の位置関係を示す説明図である。 【図3】本実施形態に係る音声シミュレーション装置の概要構成を示す説明図である。 【図4】本音声シミュレーション装置にて実行される音声シミュレーション処理の制御の流れを示すフローチャートである。 【符号の説明】 【0131】 100 情報処理装置 101 CPU 102 ROM 103 RAM 104 インターフェイス 105 コントローラ 106 外部メモリ 107 画像処理部 108 DVD−ROMドライブ 109 NIC 110 音声処理部 111 マイク 201 音源Sの移動経路 202 観測者Bの移動経路 221 音源Sが発する音波波形 222 観測者Bが観測する音波波形 301 音声シミュレーション装置 302 履歴記憶部 303 時刻計算部 304 音声出力部 305 繰返制御部
|
| 【出願人】 |
【識別番号】506113602 【氏名又は名称】株式会社コナミデジタルエンタテインメント
|
| 【出願日】 |
平成18年7月31日(2006.7.31) |
| 【代理人】 |
【識別番号】100110135 【弁理士】 【氏名又は名称】石井 裕一郎
|
| 【公開番号】 |
特開2008−35320(P2008−35320A) |
| 【公開日】 |
平成20年2月14日(2008.2.14) |
| 【出願番号】 |
特願2006−207599(P2006−207599) |
|