dポイントプレゼントキャンペーン実施中!

これから、FFTのプログラムを組んでみようと思います。
音楽ファイルを読み込もうと思いますが、
音楽ファイルは、不連続信号だと思うのですが、
音声は、44100Hzだから、必要な区間は、44100*2=88200点で、
0-88199,88200-176399,176400-264599,...
という区間ごとに読み込んでいけばいいのでしょうか?
その際は、窓関数の、ハニング窓:Wk=0.5-0.5*cos(2πk/L)を(最初は、方形窓でするつもりですが、)データに掛けて、
その値をFFTしてやればいいのでしょうか?
88200点の近似点は、2の16乗(65536)か2の17乗(131072)なので、
こちらのデータ区間を使えばいいのでしょうか?
それとも、実際は、20000Hzしか使っていないので、44100点近くで、サンプリングす

ればいいのでしょうか?
また、区間ごとに得られた周波数を、区間ごとに処理していけばいいのでしょうか?
すみませんが、よろしくお願いします。

A 回答 (1件)

 多少誤解されているようなので,まずそこからご説明します。



 DFT・FFT でのデータ数は,「どのくらいの長さについて周波数の分布を見たいか」によって決定するものです。データ数が多ければ,長い時間についての周波数の分布を調べることになります。このとき,データ数の増加に伴って【周波数の分解能が上がってきます】。
 ですから,1 秒ごとに見たければ,サンプリング周波数 44100 Hz ならば 44100 点を DFT・FFT,ということです。
 少しまとめてみると,
 - 周波数分解能が低くても,時間分解能を上げたければ少ない点で DFT・FFT
 - 時間分解能が低くても,周波数分解能を上げたければ多い点で DFT・FFT
することになります。用途に応じて設定してください。

 窓がけについては,お書きの認識で結構です。区間に対して窓がけしたあとに DFT・FFT します。

 また,時間を考慮した DFT・FFT(要するにスペクトログラムを求めるような操作)では,ある区間と次の区間をだぶらせることが多く行われます(オーバーラップ)。
 たとえば,4096 点で FFT,1024 点オーバーラップと設定すれば,
 - 0-4095
 - 3072-7167
 - 6144-10240
と区間を設定することになるでしょう。

 データ点については,2 の累乗点でとれば,FFT がじゅうぶんに発揮されるのはご存じのとおりです。

 参考に,大浦氏が作成された優秀な FFT ルーチン
  http://www.kurims.kyoto-u.ac.jp/~ooura/fft-j.html
をご紹介します。また,簡単にスペクトルを得るソフトウェアとして,PRAAT
  http://www.fon.hum.uva.nl/praat/
も参考になさるとよいでしょう。

 以上,ご健闘をお祈りします。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
やり直しのための信号数学にも書いてあることでした。(P81)
簡潔明瞭にご回答くださりありがとうございました。

お礼日時:2005/10/06 22:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!