入力としてオーディオ信号 (現在は正弦波) を受け取り、次のことを行うコードをいくつか書きました。
n(1024) サンプルのフレームを取る- FFT を適用
- iFFT を適用する
- 再生出力
このプロセスにより、出力信号は基本的に入力信号と同じになります。
さて、2回目の試みで私は次のことを行います:
- 入力からオーバーラップフレームを取得する
- ウィンドウ関数を適用する
- FFT
- iFFT
- 出力フレームを重ねる
ステップ 1 で、2 の累乗 (4、8、256...) のホップ サイズ (次のフレームを取得するためにジャンプするサンプル数) を使用してオーバーラップ フレームを取得すると、出力サウンドは滑らかで、元の入力サウンドに似ています。 、しかし、他のホップサイズでは、音が割れ始めます. これは、入力信号の任意の周波数で発生します。質問 1. ホップ サイズが 2^n の場合にのみ音が滑らかになるのはなぜですか? .
現在、私はハニング窓を使用しています。ホップサイズが大きい場合 (例: 512) は、ホップサイズが小さい場合 (例: 64) よりも出力音の音量が小さくなります。ホップ サイズが小さいということは、サンプルがより多くのフレームで再構築され、より多くの信号が追加されることを意味するため、これは予期された動作のようです。質問 2. 音量が元の信号に似るように、出力信号を適切にスケーリングする方法はありますか?
ありがとうございました!