###背景
iPhoneのボイスメモで取り込んだピアノの音色をwav変換し、波形表示をしました(navy)。
これをscript.signal.stft/istftして再びmatplotlibで波形を表示させました(aquamarine)。
該当コードと出力は以下の通りです:
Python
1import numpy as np 2import wave as wave 3import scipy.signal as sp 4import matplotlib.pyplot as plt 5import math 6 7file=wave.open('/Users/***/Desktop/Musica/doremi.wav') 8 9data=file.readframes(file.getnframes()) 10data=np.frombuffer(data, dtype=np.int16) 11duration=file.getnframes()/file.getframerate() 12x1_list=[] 13for i in range(len(data)): 14 x1_list.append(duration*i/len(data)) 15x1=np.array(x1_list) 16y1=np.array(data) 17 18f, t, stft_i=sp.stft(data, fs=file.getframerate(), window='hann', nperseg=512, noverlap=256) 19stft_i=10*np.log(np.abs(stft_i)) 20 21t, istft_i=sp.istft(stft_i, fs=file.getframerate(), window='hann', nperseg=512, noverlap=256) 22x2=t 23y2=istft_i 24 25plt.title('Spectrogram of DoReMi') 26plt.xlabel('Times(s)') 27plt.ylabel('Intensity(Pa)') 28plt.plot(x1, y1, color='navy') 29plt.plot(x2, y2, color='aquamarine') 30plt.show()
###質問①
re-synthesiseした波形の時間が倍になっています。こちらのtというのはx1とは異なり複素数信号とのことですが、何故全体長まで変わってしまうのでしょうか。
###質問②
そもそもintensityがフーリエ変換/逆変換前と全く違います。何が悪かったのでしょう。
素人質問で恐縮ですが、お力添え頂ける箇所が御座いましたら、ご教授お願い申し上げます。
回答1件
あなたの回答
tips
プレビュー