5

それらをネストするだけ ( iff(fft(audio))) にするか、ウィンドウごとに試すか (windowオーディオを実行しfft、 を実行してifftから、ウィンドウを反転し、ゼロを eps に置き換えてから、サンプルをマージして戻します (absパイプラインのあちこちで試します))。ノイズのみを取得します。

ifftは、無限精度の算術演算、無限に多くのサンプルなどと逆であることを知っていfftます (右?) 私は 64 ビットの浮動小数点と 44kHZ のサンプル レートで作業しています。しかし、少なくとも元のオーディオを聞くことができると期待しています。

私のエラーは実用的ですか、それとも理論的ですか? バグの場合は、コードを提供できます。

4

1 に答える 1

6

JoeKington のコメントに基づいて、このファイルをダウンロードし、次のことを試しました

>>> import scipy.io.wavfile
>>> rate, data = scipy.io.wavfile.read('wahoo.wav')
>>> data
array([134, 134, 134, ..., 124, 124, 124], dtype=uint8)
>>> data_bis = np.fft.ifft(np.fft.fft(data))
>>> data_bis
array([ 134. +6.68519934e-14j,  134. -4.57982480e-14j,
        134. -1.78967708e-14j, ...,  124. -2.09835513e-14j,
        124. -1.61750469e-14j,  124. -2.14867343e-14j])
>>> data_bis = data_bis.astype('uint8')
C:\Users\Jaime y Eva\Desktop\stack_exchange.py:1: ComplexWarning: Casting complex values to real discards the imaginary part
  # -*- coding: utf-8 -*-
>>> data_bis
array([134, 133, 133, ..., 123, 123, 123], dtype=uint8)
>>> scipy.io.wavfile.write('wahoo_bis.wav', rate, data_bis)

結果のファイルは、元のファイルとまったく同じように再生されます。

したがって、戻り値の複素数を実数に変換することは問題の半分にすぎません (上記のコードが暗黙的に行うように、np.absではなくを使用することをお勧めしdata.realます)。また、浮動小数点数をuint適切なビットの sに再キャストする必要があります。深さ。

于 2013-01-29T03:07:09.040 に答える