質問編集履歴

2

2019/07/16 05:13

投稿

15219e
15219e

スコア14

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,90 @@
1
+ ```ここに言語を入力
2
+
3
+ コード```# -*- coding: utf-8 -*-
4
+
5
+ import wave
6
+
7
+ import matplotlib.pyplot as plt
8
+
9
+ import numpy as np
10
+
11
+
12
+
13
+ def main():
14
+
15
+ wf = wave.open("sinwave_440hz.wav")
16
+
17
+ fs = 44100 # サンプリング周波数
18
+
19
+ g = wf.readframes(wf.getnframes())
20
+
21
+ g = np.frombuffer(g, dtype= "int16")/32768.0 # -1~1に正規化
22
+
23
+ wf.close()
24
+
25
+ n0 = 0 # サンプリング開始位置
26
+
27
+ N = 8192 # サンプル数
28
+
29
+ G = np.abs(np.fft.fft(g[n0:n0+N])) # 高速フーリエ変換
30
+
31
+ ampmax=max(G) #振幅最大値
32
+
33
+ amp=20*np.log10(G/ampmax) #振幅をデシベルに変換
34
+
35
+ G[0] = G[0] / 2
36
+
37
+ flist = np.fft.fftfreq(N, d=1.0/fs) # 周波数リスト
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+ plt.figure() # 波形サンプルを描画
48
+
49
+ plt.rcParams['font.size'] = 17
50
+
51
+
52
+
53
+ plt.subplot(122)
54
+
55
+ plt.plot(flist,amp)
56
+
57
+ plt.xlabel('Frequency', fontsize=20)
58
+
59
+ plt.ylabel('Amplitude', fontsize=20)
60
+
61
+ plt.xlim(0,1000)
62
+
63
+ plt.ylim(-80,0)
64
+
65
+ plt.grid()
66
+
67
+ leg = plt.legend(loc=1, fontsize=25)
68
+
69
+ leg.get_frame().set_alpha(1)
70
+
71
+ plt.yscale('log')
72
+
73
+ plt.show()
74
+
75
+
76
+
77
+
78
+
79
+ if __name__ == '__main__':
80
+
81
+ main()
82
+
83
+ コード
84
+
85
+ ```
86
+
1
- ### Python3を使い、wavファイルの周波数スペクトルを表示したい
87
+ ```### Python3を使い、wavファイルの周波数スペクトルを表示したい
2
88
 
3
89
 
4
90
 

1

2019/07/16 05:13

投稿

15219e
15219e

スコア14

test CHANGED
File without changes
test CHANGED
@@ -22,85 +22,9 @@
22
22
 
23
23
  ### 該当のソースコード
24
24
 
25
- # -*- coding: utf-8 -*-
26
-
27
- import wave
28
-
29
- import matplotlib.pyplot as plt
30
-
31
- import numpy as np
32
25
 
33
26
 
34
27
 
35
- def main():
36
-
37
- wf = wave.open("sinwave_440hz.wav")
38
-
39
- fs = 44100 # サンプリング周波数
40
-
41
- g = wf.readframes(wf.getnframes())
42
-
43
- g = np.frombuffer(g, dtype= "int16")/32768.0 # -1~1に正規化
44
-
45
- wf.close()
46
-
47
- n0 = 0 # サンプリング開始位置
48
-
49
- N = 8192 # サンプル数
50
-
51
- G = np.abs(np.fft.fft(g[n0:n0+N])) # 高速フーリエ変換
52
-
53
- ampmax=max(G) #振幅最大値
54
-
55
- amp=20*np.log10(G/ampmax) #振幅をデシベルに変換
56
-
57
- G[0] = G[0] / 2
58
-
59
- flist = np.fft.fftfreq(N, d=1.0/fs) # 周波数リスト
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
- plt.figure() # 波形サンプルを描画
70
-
71
- plt.rcParams['font.size'] = 17
72
-
73
-
74
-
75
- plt.subplot(122)
76
-
77
- plt.plot(flist,amp)
78
-
79
- plt.xlabel('Frequency', fontsize=20)
80
-
81
- plt.ylabel('Amplitude', fontsize=20)
82
-
83
- plt.xlim(0,1000)
84
-
85
- plt.ylim(-80,0)
86
-
87
- plt.grid()
88
-
89
- leg = plt.legend(loc=1, fontsize=25)
90
-
91
- leg.get_frame().set_alpha(1)
92
-
93
- plt.yscale('log')
94
-
95
- plt.show()
96
-
97
-
98
-
99
-
100
-
101
- if __name__ == '__main__':
102
-
103
- main()
104
28
 
105
29
  ```python3.7
106
30