質問編集履歴
1
スペクトログラム表示用ソースコードと スペクトログラム画像の追加
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
|

|
67
100
|
加工後
|
68
101
|

|
102
|
+
加工前スペクトログラム
|
103
|
+

|
104
|
+
加工後スペクトログラム
|
105
|
+

|
69
106
|
|
70
107
|
加工後のデータが高域の強調というより音が小さくなっただけのように感じるのですが、こういうものなのでしょうか?
|
71
|
-
teratailで聞くことではないかもしれませんが、よろしくお願いします。
|
108
|
+
teratailで聞くことではないかもしれませんが、よろしくお願いします。
|
72
|
-
|
73
|
-
ここにより詳細な情報を記載してください。
|