hirax.net::Keywords::「高速フーリエ変換」のブログ



2000-01-03[n年前へ]

音場の定位を見てみたい 

立体音感を考える その2


 前回(といっても間に他の話も挟まっているのだが)、

で「音の立体感」について考え始めた。今回はその続きである。「音の立体感」を考えるための道具を作る準備をしてみたい。

 色々なことを考えるには、その目的にあった測定器が必要である。何か新しいことをしようと思ったら、そのための新しい測定器を作成しなければならない(と思うだけだが)。そして、何より私は計測器なんてほとんど持っていない。だからといって、計測器を買うお金があるわけではない。というわけで、困ってしまうのだ。

 そこで、立体音感を考えるための測定器を作っていくことにした。といっても、すぐにできるとも思えないので、色々実験をしながらボチボチとやってみることにした。勉強がてら、ボチボチやってみるのである。オーディオ関連のことにはかなり疎いので勉強にはちょうど良いだろう。

 資料をいくつか眺めてみたが、特に

  • 「立体視の不思議を探る」 井上 弘著 オプトロニクス社
の中に簡単に音の立体感に関する因子が簡単にまとめられている。それは
  • 音像定位の因子
    • 両耳差因子 (音響信号)
      • 音の強さ(振幅)の差
      • 位相の差
    • 周波数スペクトル因子
というものである。今回はこの中の「音の強さ(振幅)の差」というものに注目してみることにした。よくある2スピーカ方式の「音の立体感」を考えるとき一番メジャーである、と思うからだ。左のスピーカーと右のスピーカーから聞こえる音の大きさが違う、というヤツである。

 そこで、いきなりだが今回作成した解析ソフト「音場くん一号」のアルゴリズムは以下のようになる。

  1. PCのサウンド入力から、サンプリング周波数 22.05kHz、Stereo 各チャンネル8bitで取り込みを行う。
  2. 取り込んだデータを4096点毎にウィンドウ(Hamming or無し)処理をかける。
  3. 高速フーリエ変換(FFT)を行う
  4. FFTの結果の実部について、左右のチャンネルの差分を計算する
 このようにすることで、各周波数成分それぞれについて、左と右のチャンネルに記録されている「音の大きさ(音圧)」の差がわかるといいな、と考えたのである。

 次に示すのが、「音場くん(仮名)一号」の動作画面である。「音場くん(仮名)一号」の画面構成は、

  • 右側->制御部
  • 左側->計測データ表示部
である。そして、左側の計測データ表示部は上から、
  • 音声波形データ(赤=左、緑=右)
  • 周波数(横軸)vs左右での音圧の差(縦軸)
  • 時間(横軸)vs周波数(縦軸)vs左右での音圧の差(色)
となっている。ちなみに下の画面は種ともこの「うれしいひとこと」の中から、「安売り水着を結局買ったアタシの歌」のイントロ部を計測したものだ。
「音場くん(仮名)一号」の画面
「安売り水着を結局買ったアタシの歌」イントロ部

(黒字に赤、緑の色構成は変更の予定)

 計測データ表示部の拡大図を下に示す。

  • 音声波形データ(赤=左、緑=右)
  • 周波数(横軸)vs左右での音圧の差(縦軸)
  • 時間(横軸)vs周波数(縦軸)vs左右での音圧の差(色)
というのが判るだろうか?かなりわかりにくい表示系であるのが残念だ。また、色もみにくい表示色になっていると思うので、近く変更する予定である。

 この表示計の意味を例を挙げて説明したい。例えば、下の画面では左の方に定位している音が鳴ったときの状態を示している。一番上の音声波形データでは緑(右)の波形は小さいのに対して、赤(左)の大きな波形が見えている。
 また、真ん中の「周波数(横軸)vs左右での音圧の差(縦軸)」では横軸100(任意単位)程度の高さの辺りで左チャンネルに位置する音が発生しているのがわかる。
 また、一番下の「時間(横軸)vs周波数(縦軸)vs左右での音圧の差(色)」では時間的に一番最後(横軸で右側)の方の横軸560、縦軸100位の位置に白い(すなわち左チャンネルに定位する)音が発生しているのがわかると思う。

「音場くん(仮名)一号」の画面の拡大図
「安売り水着を結局買ったアタシの歌」イントロ部

 この曲のイントロでは、「ポンッ」という音が高さを変えつつ、左右にパンニング(定位位置を変化させること)する。
 一番下の「時間(横軸)vs周波数(縦軸)vs左右での音圧の差(色)」を示したグラフ中で白・黄色(左に定位)と青・黒(右に定位)する音が時間的にずれながら現れているのが判ると思う。

 このようにして、この「音場くん(仮名)一号」では音の定位状態についての「極めて大雑把な」計測が可能である(保証はしないけど)。「音場くん(仮名)一号」を使った他の例を示してみる。

 下は種ともこの「O・HA・YO」の中から「The Morning Dew」のイントロ部を示したものだ。

  • 左(白・黄)チャンネル方向に定位するピアノ
  • 右(黒・青)チャンネル方向に定位するガットギター
がつくる旋律が絡み合っているのがわかると思う。
「The Morning Dew」のイントロ部での
「時間(横軸)vs周波数(縦軸)vs左右での音圧の差(色)」
を示したもの

 これはまるでオルゴールのピンを見ているようだ。あるいは、シーケンサーや昔の自動演奏ピアノのロール譜のようである。対位法などの効果をこれで確認したくなってしまう。

 さて、ここまでの例は楽器も少なく、比較的自然な定位状態であった。しかし、以下に示すような場合には不自然なくらいの「音の壁」状態の場合である。かなり状態が異なる場合だ。

「KI・REI」のラストのラストコーラス部での
「時間(横軸)vs周波数(縦軸)vs左右での音圧の差(色)」
を示したもの

 これは、種ともこの「O・HA・YO」の中から「KI・REI」のラストのラストコーラス部を示したものである。人のコーラスが重なり合っていく部分である。色々な高さの声が重なり合っていく様子がわかるだろう。
 ところが、このグラフをよくみると、同じ音が時間的に持続しているにも関わらず、時間毎に定位位置が左右で入れ替わっているのがわかる。

 これはきっとエフェクターで言うところのコーラスなどをかけたせいだろう(素人判断だけど)。人工的にフィルタ処理をしているためにこのようになるのだろう。こういう結果を見ると、「音場くん(仮名)一号」をプログレ系の音の壁を解析してみたくなる。

 さて今回は、音声の定位状態を解析する「音場くん(仮名)一号」を作成し、いくつかの音楽に対して使ってみた。まだまだ「音場くん(仮名)一号」は作成途中である。これから続く立体音感シリーズとともに「音場くん(仮名)」も成長していく予定である。

 さて、一番先の画面中に"Re"という選択肢があるのがわかると思う。もちろん、これと対になるのは"Im"である。FFTをかけた結果の"実部"と"虚部"である。"実部"の方が左右の耳の間での音の大きさの違いを示すのに対して、"虚部"の方は左右の耳の間での位相差を示すものだ。つまり、ある周波数の音が左右の耳の間でどのような位相差を示すものか、測定しようとするものである。

 左右の耳に対する音の位相差というものは、立体音感を考える上では避けては通れないのだろう。しかし、位相差を処理しようとすると、どうしたらいいものかかなり迷う部分がある。また、今回のようなFFT処理をかけたときに得られる位相を用いて良いものかどうかもよくわからない。というわけで、今回は位相解析処理は後回し、ということにした。

2005-05-19[n年前へ]

品川から三島までの振動データの「時間 v.s. 周波数解析」 

品川から三島までの振動周波数データ品川から三島までの振動周波数データ
 せっかくなので、下りのこだま585号 8号車 通路側のシート上の「品川駅から三島駅まで」の揺れデータ(10ms間隔)の時間 v.s. 周波数解析も短時間フーリエ周波数解析(高速フーリエ変換とは別物ですね)で行ってみました。横軸が時間軸で品から三島までを示していて、縦軸が周波数軸で振動の周波数を示しています。
 左(or 上)のチャートで、時間軸(横軸)25分過ぎに現れる高周波数を多く含む振動は小田原で停車中に「ひかり」か「のぞみ」が通過した際の振動でしょうか? 確認しやすいように、短時間フーリエ変換ウィンドーサイズを小さくしたものを右(or 下)に示してみます。
Thinkpad 加速度センサ また、40分過ぎの激しい振動は熱海を出て箱根トンネルを通過中のものですね。…と、こんなことを調べても新幹線の振動が直ってくれるわけではないんですよね…。もうちょっと、快適にしてくれたら…良いなぁ。せめて、ハードディスク保護回路が働いたり、テーブルの上のコーヒーが倒れないくらいだったら良いなぁ。

2006-06-03[n年前へ]

GPUによるFFTライブラリ 

 グラフィック処理用チップ(GPU)で高速フーリエ変換(FFT)を行う「GPUによるFFTライブラリ : GPUFFTW」の紹介。



■Powered by yagm.net