私はFFTで作業していましたが、現在はFFTでファイルからサウンド波形を取得しようとしていますが、最終的に変更しますが、その変更された波形をファイルに出力します。私は、音波のFFTを取得し、それに逆FFT関数を使用しましたが、出力ファイルはまったく発音されません。私は波形をフィルタリングしていません。周波数データを取得してファイルに戻してテストしています。同じように聞こえるはずですが、大きく違った発音になります。何か案は?Python NumPy - FFTと逆FFT?
- 編集 - 私は以来、このプロジェクトビットに取り組んできたが、まだ望ましい結果を得ていない
。出力されたサウンドファイルはノイズが多く(元のファイルには存在しなかった余分なノイズだけでなく)、もう1つのチャネルのサウンドは以前は無音だった他のチャネルにリークされています。入力サウンドファイルは、ステレオの2チャンネルファイルで、サウンドは1つのチャンネルからしか得られません。私のコードは次のとおりです:
import scipy
import wave
import struct
import numpy
import pylab
from scipy.io import wavfile
rate, data = wavfile.read('./TriLeftChannel.wav')
filtereddata = numpy.fft.rfft(data, axis=0)
print (data)
filteredwrite = numpy.fft.irfft(filtereddata, axis=0)
print (filteredwrite)
wavfile.write('TestFiltered.wav', rate, filteredwrite)
私はこれがうまくいかない理由はよく分かりません... ...?
EDIT:問題を解決するのに役立つ場合は、.pyファイルとオーディオファイルを圧縮しました。here
あなたが –
@Bagoを保存する前に '' filteredwrite = numpy.round(filteredwrite).astype( 'INT16')を追加してみてください - ありがとうございました!それは問題を完全に解決しました。私は、フィルタリングされたifftを 'int16'に強制して16ビット深度のサウンドファイルにすることを意味しているのだろうかと疑問に思っていましたか? – SolarLune
私はwavファイルについてあまりよく分かりませんが、私はいつもそれらが圧縮されていない生データであると仮定していましたが、確かに知るためにはwavフォーマット仕様を読んでおく必要があります。 –