0

サウンドサンプルのスペクトログラムを生成するために、アクセラレーションフレームワークのFFT関数を使用しています。この部分はうまく機能します。しかし、私は(効果的に)スペクトルを直接操作し(つまり、実数を操作し)、次に逆関数を再度呼び出したいのですが、どうすればよいでしょうか?INVERSE呼び出しは虚数の配列を期待しているように見えますが、操作された実数からそれを生成するにはどうすればよいですか?私はrealp配列を自分の実数にし、imagp部分をゼロにしようとしましたが、うまくいかないようです。

これを尋ねる理由は、音声オーディオサンプルでFFTを実行してから、もう一度FFTを実行してから、ケプストラムの下部を持ち上げて(つまり、声道コンポーネントをピッチから分離して)、再びFFTを逆にして、声道(フォルマント)情報をより明確に(つまり、ピッチ情報なしで)示すスペクトログラムを生成します。ただし、逆FFTで問題が発生しているようです。この場合、realp配列の実際の値(cepstrum)を渡し、imagpはゼロになります。私はここで何か間違ったことをしていると思います、そして結果は予想外です。

4

1 に答える 1

0

実際の大きさではなく、複雑なフォワードFFT結果を処理する必要があります。そうしないと、IFFT結果スペクトルの形状が歪んでしまいます。それらを虚数とは見なさず、必要な角度位相情報を含む2Dベクトルの一部と見なしてください。

ケプストラムリフター/フィルターが実際の光度のみを変更する場合は、実際の光度の変化量をスケーリング係数として使用して、複素数IFFTを実行する前に前方の複素数FFT結果を変更してみてください。

于 2012-04-07T21:00:26.273 に答える