質問編集履歴

1

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

2018/10/10 04:43

投稿

vega
vega

スコア28

test CHANGED
File without changes
test CHANGED
@@ -124,6 +124,72 @@
124
124
 
125
125
 
126
126
 
127
+ スペクトログラム表示
128
+
129
+ ```
130
+
131
+ #coding:utf-8
132
+
133
+ import wave
134
+
135
+ from pylab import *
136
+
137
+
138
+
139
+ if __name__ == "__main__":
140
+
141
+ # WAVEファイルから波形データを取得
142
+
143
+ #wf = wave.open("fir_test.wav", "r")
144
+
145
+ wf = wave.open("data/VOICEACTRESS100_092.wav", "r")
146
+
147
+ data = wf.readframes(wf.getnframes())
148
+
149
+ data = frombuffer(data, dtype="int16")
150
+
151
+ length = float(wf.getnframes()) / wf.getframerate() # 波形長さ(秒)
152
+
153
+
154
+
155
+ # FFTのサンプル数
156
+
157
+ #48000Hz * 30ms = 1440
158
+
159
+ N = 2048
160
+
161
+ #FFTのシフト長
162
+
163
+ #N - 48000Hz * 10ms
164
+
165
+ nlap = N - 48000 * 0.01
166
+
167
+
168
+
169
+ # FFTで用いるハミング窓
170
+
171
+ hammingWindow = np.hamming(N)
172
+
173
+
174
+
175
+ # スペクトログラムを描画
176
+
177
+ pxx, freqs, bins, im = specgram(data, NFFT=N, Fs=wf.getframerate(), noverlap=nlap, window=hammingWindow)
178
+
179
+ axis([0, length, 0, wf.getframerate() / 2])
180
+
181
+ xlabel("time [second]")
182
+
183
+ ylabel("frequency [Hz]")
184
+
185
+
186
+
187
+ show()
188
+
189
+ ```
190
+
191
+
192
+
127
193
  ### 出力結果
128
194
 
129
195
  加工前
@@ -134,12 +200,16 @@
134
200
 
135
201
  ![加工後画像](394953af16c388716d242432be1687ef.png)
136
202
 
203
+ 加工前スペクトログラム
204
+
205
+ ![イメージ説明](414548de935256b75d32bfa79ec0ab99.png)
206
+
207
+ 加工後スペクトログラム
208
+
209
+ ![イメージ説明](f02f37feb212900511c9c67447a89247.png)
210
+
137
211
 
138
212
 
139
213
  加工後のデータが高域の強調というより音が小さくなっただけのように感じるのですが、こういうものなのでしょうか?
140
214
 
141
215
  teratailで聞くことではないかもしれませんが、よろしくお願いします。
142
-
143
-
144
-
145
- ここにより詳細な情報を記載してください。