質問編集履歴

1

ソースコードの修正と試したことを修正しました

2020/10/20 09:03

投稿

NEK0o0
NEK0o0

スコア2

test CHANGED
File without changes
test CHANGED
@@ -6,9 +6,7 @@
6
6
 
7
7
  スぺクトログラムの表示などをするプログラムです
8
8
 
9
- 下にあるプログラムなのですがどうも配列の数が合わず
9
+ 下にあるプログラムなのですがどうも配列の数が合わずどうすればいいかご教授願いたいです。
10
-
11
- OverlapLengthなどで揃えようとしたのですがうまくいかないため、どうすればいいかご教授願いたいです。
12
10
 
13
11
  質問するのは初めてなためお手柔らかにお願いします---
14
12
 
@@ -28,11 +26,13 @@
28
26
 
29
27
 
30
28
 
31
- ### 該当のソースコード
29
+ ### 修正後のソースコード
32
30
 
33
31
 
34
32
 
35
33
  ```Python
34
+
35
+ # モジュールのインポート
36
36
 
37
37
  import numpy as np
38
38
 
@@ -46,39 +46,61 @@
46
46
 
47
47
 
48
48
 
49
+ # 音声の読み込み
50
+
49
- x1, fs = sf.read('speech1.wav')
51
+ x, fs = sf.read('speech1.wav')
50
52
 
51
53
 
52
54
 
55
+ window_num = 256 # 窓幅のデータ数
56
+
53
- f, t, X1 = sg.stft(x1, fs=fs, 'OverlapLength', 24264)
57
+ stride_num = 128 # ストライド幅のデータ数
54
58
 
55
59
 
56
60
 
61
+ # スペクトログラムの計算
62
+
57
- # sf.write('outout.wav', y, fs)
63
+ f, t, X1 = sg.stft(x, fs=fs, nperseg=window_num, noverlap=(window_num-stride_num))
58
64
 
59
65
 
60
66
 
61
- plt.figure('Original waveform')
67
+ # 逆STFTによる復号
62
68
 
63
- plt.plot(x1)
69
+ _, y = sg.istft(X1, fs=fs, nperseg=window_num, noverlap=(window_num-stride_num))
64
70
 
65
71
 
66
72
 
67
- plt.figure('Spectrogram')
73
+ # 出力音声の保存
68
74
 
69
- plt.imshow( np.log10(np.abs(X1)), origin='low', cmap='jet', aspect="auto")
75
+ sf.write('outout.wav', y, fs)
70
-
71
- plt.show()
72
76
 
73
77
 
74
78
 
79
+ # グラフに表示
80
+
81
+ # - 波形
82
+
75
- _, x2 = sg.istft(X1, fs)
83
+ plt.figure('Original waveform')
84
+
85
+ plt.plot(x)
76
86
 
77
87
 
78
88
 
89
+ # - 復号した波形
90
+
91
+ plt.figure('Decryption waveform')
92
+
93
+ plt.plot(y)
94
+
95
+
96
+
97
+ # - 信号差の波形(ここが分からない。入力信号xと出力信号yの差信号x−yが求めたい)
98
+
79
99
  plt.figure('Signal difference waveform')
80
100
 
81
- plt.plot(x1 - x2)
101
+ plt.plot(x-y)
102
+
103
+
82
104
 
83
105
  ```
84
106
 
@@ -88,4 +110,4 @@
88
110
 
89
111
 
90
112
 
91
- OverlapLengthなどで要素数をそろえようとした
113
+ 質問への回答を受け下記サイトからnperseg、noverlapを用いて要素数をそろえられないかした。 https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.istft.html