永谷の Top Page > 最終更新: 2001年5月23日, URL: http://www2.yukawa.kyoto-u.ac.jp/~yukinori.nagatani/KG/

クライン・ゴルドン媒質中での音声の伝搬のシュミレーション

概要

1+1次元実クライン・ゴルドン方程式で記述される媒質中を音声が伝搬したとき、 どの様に聞こえるかを計算するプログラムを作ってみました。 また、計算結果の音をサウンドファイル(wavとmp3)として公開します。

解説

1+1次元実クライン・ゴルドン方程式は質量Mを持った実スカラー場を表しますが、 この方程式はカットオフ周波数f=ω/2πをもつ導波管の中を伝搬する電磁場の適当なモードの伝搬と等価です。ただしM=ωで、cやhバーは1にしています。 また、一辺が長さLの正方形のパイプの中を伝搬する音波の特定のモードとも等価です。 例えば(1,1)モード(基底モード)の場合、カットオフ周波数はf=Sqrt[2]/(2 L)で与えられ、その伝搬は質量M=ω=Sqrt[2]π/(L)のクライン・ゴルドン方程式で記述されます。

クライン・ゴルドン媒質中では、波の群速度が周波数によって異なり、 Vg = Sqrt[ 1 - m^2/ω^2 ] で与えられます。 つまり、高い周波数は早く伝搬し、低い周波数は遅く伝搬します。 さらに、カットオフ周波数より低い周波数の波は伝搬できません。 仮に、全ての周波数を含むインパスル音波(デルタ関数)を媒質中に入力すると、伝搬の後には高い音が先に聞こえて、低い周波数の音が後から聞こえることになります。 つまり、「プチ」と聞こえるインパスル音波が伝搬すると、「ぴゅぅー----」と高い音から低い音へと聞こえる事になります。(いわゆる「ホイッスラー」音)

計算結果

インパスル音の伝搬

ここに、カットオフ周波数100〜400Hzのクライン・ゴルドン媒質中を「インパスル音波」が0.1〜10秒間伝搬した場合の音波の計算結果をサウンド・ファイルとして置いておきます。 なお、ファイル形式はWAVフォーマット、16 bit、44.1kHzサンプリング、モノラルで、再生時間は各々5秒間、ファイルサイズは441kBです。 また、MP3フォーマット化したものも置いておきます。サイズは約40kBです。 (wavファイルはディスクを圧迫するので一部省略してあります。)

Klein-Goldon媒質中でのインパルスの伝搬
伝搬距離
0.1音秒1音秒10音秒

100Hz [mp3] [mp3] [wav, mp3]
400Hz [wav, mp3] [wav, mp3] [wav, mp3]

人の声「やっほー」の伝搬

では、人の音声を伝搬させたらどうなるでしょうか? 私の声「やっほー [wav, mp3] 」の伝搬のシミュレーションをやってみました。

Klein-Goldon媒質中での
「やっほー [wav, mp3] 」の伝搬
伝搬距離
0.1音秒1音秒10音秒

100Hz [mp3] [mp3] [wav, mp3]
200Hz     [mp3]
400Hz [wav, mp3] [wav, mp3] [wav, mp3]

使用コード

計算に使用したコード(C++)を以下に公開します。

FreeBSD上で動作確認していますが、多分SolarisやLinux上でも動くと思います。 makeすると、kgimp と kgprop の2つの実行ファイルが生成されます。 kgimp はインパスル応答の計算用で、 kgprop はwavファイル(16 bit、44.1kHzサンプリング)を標準入力から読み込んで、その伝搬を計算します。両方とも標準出力にwavファイルを出力します。 このページに公開している計算結果は以下の計算手順:

kgimp -T 5 -x 0.1 -m 100 > Im100x00_1.wav
kgimp -T 5 -x 1   -m 100 > Im100x01_0.wav
kgimp -T 5 -x 10  -m 100 > Im100x10_0.wav
kgimp -T 5 -x 0.1 -m 400 > Im400x00_1.wav
kgimp -T 5 -x 1   -m 400 > Im400x01_0.wav
kgimp -T 5 -x 10  -m 400 > Im400x10_0.wav

kgprop -m 100 -x 0.1 -T 5 -v 0.02  < yahho.wav > Pm100x00_1.wav
kgprop -m 100 -x  1  -T 5 -v 0.02  < yahho.wav > Pm100x01_0.wav
kgprop -m 100 -x 10  -T 5 -v 0.02  < yahho.wav > Pm100x10_0.wav
kgprop -m 200 -x 10  -T 5 -v 0.05  < yahho.wav > Pm200x10_0.wav
kgprop -m 400 -x 0.1 -T 5 -v 0.05  < yahho.wav > Pm400x00_1.wav
kgprop -m 400 -x 1   -T 5 -v 0.05  < yahho.wav > Pm400x01_0.wav
kgprop -m 400 -x 10  -T 5 -v 0.05  < yahho.wav > Pm400x10_0.wav

に従って得られました。

シミュレーションの詳細

1+1次元Klein-Goldon方程式のグリーン関数はベッセル関数によって記述されます。 これにより任意の距離でのインパスルの伝搬が計算できます。 任意の音声の伝搬は、先に得られたインパスル応答と音声とのコンボリューション積分によって得られます。そのため、計算には少し時間を要します。(今回の場合には1つの計算にPentiumII300MHzのマシンで20分くらいかかりました。高速コンボリューション計算を用いればもっと早くなるでしょう…。)


永谷 幸則 @ 京都大学 基礎物理学研究所
e-mail :
永谷の Top Page > 最終更新: 2001年5月23日, URL: http://www2.yukawa.kyoto-u.ac.jp/~yukinori.nagatani/KG/