teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

スペクトログラム表示用ソースコードと スペクトログラム画像の追加

2018/10/10 04:43

投稿

vega
vega

スコア28

title CHANGED
File without changes
body CHANGED
@@ -61,13 +61,48 @@
61
61
  save(y, fs, 16, "fir_test.wav")
62
62
  ```
63
63
 
64
+ スペクトログラム表示
65
+ ```
66
+ #coding:utf-8
67
+ import wave
68
+ from pylab import *
69
+
70
+ if __name__ == "__main__":
71
+ # WAVEファイルから波形データを取得
72
+ #wf = wave.open("fir_test.wav", "r")
73
+ wf = wave.open("data/VOICEACTRESS100_092.wav", "r")
74
+ data = wf.readframes(wf.getnframes())
75
+ data = frombuffer(data, dtype="int16")
76
+ length = float(wf.getnframes()) / wf.getframerate() # 波形長さ(秒)
77
+
78
+ # FFTのサンプル数
79
+ #48000Hz * 30ms = 1440
80
+ N = 2048
81
+ #FFTのシフト長
82
+ #N - 48000Hz * 10ms
83
+ nlap = N - 48000 * 0.01
84
+
85
+ # FFTで用いるハミング窓
86
+ hammingWindow = np.hamming(N)
87
+
88
+ # スペクトログラムを描画
89
+ pxx, freqs, bins, im = specgram(data, NFFT=N, Fs=wf.getframerate(), noverlap=nlap, window=hammingWindow)
90
+ axis([0, length, 0, wf.getframerate() / 2])
91
+ xlabel("time [second]")
92
+ ylabel("frequency [Hz]")
93
+
94
+ show()
95
+ ```
96
+
64
97
  ### 出力結果
65
98
  加工前
66
99
  ![加工前画像](2dc3b319a9a58ac9901bc714af23b014.png)
67
100
  加工後
68
101
  ![加工後画像](394953af16c388716d242432be1687ef.png)
102
+ 加工前スペクトログラム
103
+ ![イメージ説明](414548de935256b75d32bfa79ec0ab99.png)
104
+ 加工後スペクトログラム
105
+ ![イメージ説明](f02f37feb212900511c9c67447a89247.png)
69
106
 
70
107
  加工後のデータが高域の強調というより音が小さくなっただけのように感じるのですが、こういうものなのでしょうか?
71
- teratailで聞くことではないかもしれませんが、よろしくお願いします。
108
+ teratailで聞くことではないかもしれませんが、よろしくお願いします。
72
-
73
- ここにより詳細な情報を記載してください。