前提・実現したいこと
私が実現したいことは、以下のようなことです。
wavファイル読み込み→FFT→バンドパスフィルタ→iFFT→wavファイル書き込み
iFFTして波形表示するところまで行ったが、wavファイルの書き込みができず
違うやり方で試しているところ、このようなエラーが表示された。
発生している問題・エラーメッセージ
File "bandpass2.py", line 18, in <module> duration = wf.getframes()/wf.getframerate() AttributeError: 'Wave_read' object has no attribute 'getframes'
該当のソースコード
import sys import scipy.io.wavfile from scipy.fftpack import rfft,irfft,fftfreq import numpy as np import matplotlib.pyplot as plt import wave file_name = sys.argv[1] ###読み込み作業### wf = wave.open(file_name,'rb') #Open #buf = wf.readframes(1024) data= wf.readframes(wf.getnframes()) #frameの読み込み data= np.frombuffer(data, dtype= "int16") #numpy.arrayに変換 data = data[::2] duration = wf.getframes()/wf.getframerate() time_list=[] for i in range(len(data)): time_list.append(duration*i/len(data)) time=np.array(time_list) #時間信号(before) plt.subplot(221) plt.plot(time,data,label = 'f(n)') plt.ylim(-1.5,1.5) plt.xlabel("Time", fontsize=12) plt.ylabel("Signal", fontsize=12) plt.grid() leg = plt.legend(loc=1, fontsize=15) leg.get_frame().set_alpha(1) plt.show() ###書き込み作業### #write_wave = wave.Wave_write("aaa.wav") #write_wave.setparams(wf.getparams()) #write_wave.writeframes(data2) #write_wave.close() wf.close()
実行例:python ~,py ~.wav
試したこと
wave_readオブジェクトに何らかの問題があるとこがわかったが、改善策が見つからない。
補足情報(FW/ツールのバージョンなど)
anaconda3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/22 23:34
2020/12/23 05:30