質問編集履歴
3
自分でやったことの追加
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
write() argument must be str, not bytes
|
1
|
+
write() argument must be str, not bytesが解決できません
|
test
CHANGED
@@ -62,47 +62,37 @@
|
|
62
62
|
|
63
63
|
from scipy import fromstring, int16
|
64
64
|
|
65
|
-
|
65
|
+
from struct import unpack
|
66
|
+
|
66
|
-
|
67
|
+
import binascii
|
68
|
+
|
69
|
+
|
70
|
+
|
67
|
-
wavfile = '
|
71
|
+
wavfile = '/Users/yuuki/pianola16bit.wav'
|
72
|
+
|
73
|
+
|
68
74
|
|
69
75
|
wr = wave.open(wavfile, "rb")
|
70
76
|
|
71
|
-
ch = wr.getnchannels()
|
72
|
-
|
73
|
-
width = wr.getsampwidth()
|
74
|
-
|
75
77
|
fr = wr.getframerate()
|
76
78
|
|
77
|
-
fn = wr.getnframes()
|
79
|
+
fn = wr.getnframes()#オーディオフレーム数(サンプリング数*時間)
|
78
80
|
|
79
81
|
fs = fn / fr
|
80
82
|
|
81
|
-
|
82
|
-
|
83
|
-
origin = wr.readframes(
|
83
|
+
origin = wr.readframes(fn) #bytesオブジェクトに変換
|
84
|
-
|
84
|
+
|
85
|
-
data = origin[:fn]
|
85
|
+
data = origin[:fn]#最初からfnまで取得
|
86
86
|
|
87
87
|
wr.close()
|
88
88
|
|
89
|
-
|
89
|
+
|
90
|
-
|
91
|
-
|
90
|
+
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
#print('len of origin', len(origin))
|
96
|
-
|
97
|
-
#print('len of sampling: ', len(data))
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
y = np.frombuffer(data, dtype="int16") /32768.0
|
91
|
+
y = np.frombuffer(data, dtype="int16") /32768.0 #バイナリをintに変換、正規化
|
104
|
-
|
92
|
+
|
105
|
-
x = np.
|
93
|
+
x = np.arange(y.shape[0]) / fr*2
|
94
|
+
|
95
|
+
|
106
96
|
|
107
97
|
plt.plot(x, y)
|
108
98
|
|
@@ -110,9 +100,15 @@
|
|
110
100
|
|
111
101
|
|
112
102
|
|
103
|
+
y = str(binascii.hexlify(y), 'utf-8')
|
104
|
+
|
113
105
|
Fs = 1/0.01
|
114
106
|
|
115
|
-
omega0 = 2
|
107
|
+
omega0 = 2 #0.2 #1 #2 #8
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
# (1) Freqを指定してcwt
|
116
112
|
|
117
113
|
freqs=np.arange(0.1,20,0.025)
|
118
114
|
|
@@ -122,6 +118,100 @@
|
|
122
118
|
|
123
119
|
|
124
120
|
|
121
|
+
plt.rcParams['figure.figsize'] = (10, 6)
|
122
|
+
|
123
|
+
fig = plt.figure()
|
124
|
+
|
125
|
+
ax1 = fig.add_axes([0.1, 0.75, 0.7, 0.2])
|
126
|
+
|
127
|
+
ax2 = fig.add_axes([0.1, 0.1, 0.7, 0.60], sharex=ax1)
|
128
|
+
|
129
|
+
ax3 = fig.add_axes([0.83, 0.1, 0.03, 0.6])
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
ax1.plot(x, y, 'k')
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
img = ax2.imshow(np.flipud(rr), extent=[0, 3,0.1, 20], aspect='auto')
|
138
|
+
|
139
|
+
twin_ax = ax2
|
140
|
+
|
141
|
+
twin_ax.set_yscale('log')
|
142
|
+
|
143
|
+
twin_ax.set_xlim(0, 3)
|
144
|
+
|
145
|
+
twin_ax.set_ylim(0.1, 20)
|
146
|
+
|
147
|
+
ax2.tick_params(which='both', labelleft=False, left=False)
|
148
|
+
|
149
|
+
twin_ax.tick_params(which='both', labelleft=True, left=True, labelright=False)
|
150
|
+
|
151
|
+
fig.colorbar(img, cax=ax3)
|
152
|
+
|
153
|
+
plt.show()
|
154
|
+
|
125
|
-
```
|
155
|
+
```
|
156
|
+
|
157
|
+
|
158
|
+
|
126
|
-
|
159
|
+
yがbytes型なので
|
160
|
+
|
161
|
+
y = str(binascii.hexlify(y), 'utf-8')
|
162
|
+
|
163
|
+
とstr型に変換したところ、新たにエラーが出ます。
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
```エラー
|
168
|
+
|
169
|
+
ValueError Traceback (most recent call last)
|
170
|
+
|
171
|
+
<ipython-input-23-ddd435324d4b> in <module>
|
172
|
+
|
173
|
+
29 # (1) Freqを指定してcwt
|
174
|
+
|
175
|
+
30 freqs=np.arange(0.1,20,0.025)
|
176
|
+
|
177
|
+
---> 31 r=pycwt.cwt_f(y,freqs,Fs,pycwt.Morlet(omega0))
|
178
|
+
|
179
|
+
32 rr=np.abs(r)
|
180
|
+
|
181
|
+
33
|
182
|
+
|
183
|
+
|
184
|
+
|
127
|
-
|
185
|
+
~/venv/lib/python3.7/site-packages/swan/pycwt.py in cwt_f(signal, freqs, Fs, wavelet, ppd, verbose)
|
186
|
+
|
187
|
+
230 scales = wavelet.f0/freqs
|
188
|
+
|
189
|
+
231 dt = 1./Fs
|
190
|
+
|
191
|
+
--> 232 return cwt_a(signal, scales, dt, wavelet, ppd, verbose=verbose)
|
192
|
+
|
193
|
+
233
|
194
|
+
|
195
|
+
234
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
~/venv/lib/python3.7/site-packages/swan/pycwt.py in cwt_a(signal, scales, sampling_scale, wavelet, ppd, verbose)
|
200
|
+
|
201
|
+
188 padded_signal[-padlen2:] = padfunc(padded_signal[-padlen2:],signal[-1])
|
202
|
+
|
203
|
+
189
|
204
|
+
|
205
|
+
--> 190 padded_signal[padlen1:-padlen2] = signal
|
206
|
+
|
207
|
+
191
|
208
|
+
|
209
|
+
192
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
ValueError: could not convert string to float:
|
214
|
+
|
215
|
+
```
|
216
|
+
|
217
|
+
ご教授お願いいたします
|
2
エラーコードを加えました
test
CHANGED
File without changes
|
test
CHANGED
@@ -11,6 +11,34 @@
|
|
11
11
|
byte型ではなく、str型を使うようにエラーが出るのですが、どのように対処していいかわかりません。
|
12
12
|
|
13
13
|
```
|
14
|
+
|
15
|
+
TypeError Traceback (most recent call last)
|
16
|
+
|
17
|
+
<ipython-input-6-dc8dddf3b7ab> in <module>
|
18
|
+
|
19
|
+
33 # (1) Freqを指定してcwt
|
20
|
+
|
21
|
+
34 freqs=np.arange(0.1,20,0.025)
|
22
|
+
|
23
|
+
---> 35 r=pycwt.cwt_f(y,freqs,Fs,pycwt.Morlet(omega0))
|
24
|
+
|
25
|
+
36 rr=np.abs(r)
|
26
|
+
|
27
|
+
37
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
~/venv/lib/python3.7/site-packages/swan/pycwt.py in cwt_f(signal, freqs, Fs, wavelet, ppd, verbose)
|
32
|
+
|
33
|
+
230 scales = wavelet.f0/freqs
|
34
|
+
|
35
|
+
231 dt = 1./Fs
|
36
|
+
|
37
|
+
--> 232 return cwt_a(signal, scales, dt, wavelet, ppd, verbose=verbose)
|
38
|
+
|
39
|
+
233
|
40
|
+
|
41
|
+
234
|
14
42
|
|
15
43
|
write() argument must be str, not bytes
|
16
44
|
|
@@ -96,4 +124,4 @@
|
|
96
124
|
|
97
125
|
```
|
98
126
|
|
99
|
-
ここから表をプロットするコードを書いていくつもりでしたが、下から2行目の場所でエラーが出てしまい、つまづいています。ご教授よろしくお願いいたします。
|
127
|
+
ここから表をプロットするコードを書いていくつもりでしたが、下から2行目の場所でエラーが出てしまい、つまづいています。単純にstr()で変換すれば良いと思ったのですが、変換をしても他のエラーが出てくる始末です。ご教授よろしくお願いいたします。
|
1
エラー個所を書き足しました
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
write() argument must be str, not bytesというエラーで困っています
|
test
CHANGED
@@ -96,4 +96,4 @@
|
|
96
96
|
|
97
97
|
```
|
98
98
|
|
99
|
-
ここから表をプロットするコードを書いていくつもりでしたが、エラーが出てしまい、つまづいています。ご教授よろしくお願いいたします。
|
99
|
+
ここから表をプロットするコードを書いていくつもりでしたが、下から2行目の場所でエラーが出てしまい、つまづいています。ご教授よろしくお願いいたします。
|