質問編集履歴
3
自分でやったことの追加
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
write() argument must be str, not bytes
|
1
|
+
write() argument must be str, not bytesが解決できません
|
body
CHANGED
@@ -30,35 +30,80 @@
|
|
30
30
|
import matplotlib.pyplot as plt
|
31
31
|
import wave
|
32
32
|
from scipy import fromstring, int16
|
33
|
+
from struct import unpack
|
34
|
+
import binascii
|
33
35
|
|
34
|
-
wavfile = '
|
36
|
+
wavfile = '/Users/yuuki/pianola16bit.wav'
|
37
|
+
|
35
38
|
wr = wave.open(wavfile, "rb")
|
36
|
-
ch = wr.getnchannels()
|
37
|
-
width = wr.getsampwidth()
|
38
39
|
fr = wr.getframerate()
|
39
|
-
fn = wr.getnframes()
|
40
|
+
fn = wr.getnframes()#オーディオフレーム数(サンプリング数*時間)
|
40
41
|
fs = fn / fr
|
41
|
-
|
42
|
-
origin = wr.readframes(
|
42
|
+
origin = wr.readframes(fn) #bytesオブジェクトに変換
|
43
|
-
data = origin[:fn]
|
43
|
+
data = origin[:fn]#最初からfnまで取得
|
44
44
|
wr.close()
|
45
|
-
amp = max(data)
|
46
|
-
print(amp)
|
47
45
|
|
48
|
-
|
46
|
+
y = np.frombuffer(data, dtype="int16") /32768.0 #バイナリをintに変換、正規化
|
49
|
-
|
47
|
+
x = np.arange(y.shape[0]) / fr*2
|
50
48
|
|
51
|
-
|
52
|
-
y = np.frombuffer(data, dtype="int16") /32768.0
|
53
|
-
x = np.linspace(0,fs, fn/2, endpoint=False)
|
54
49
|
plt.plot(x, y)
|
55
50
|
plt.show()
|
56
51
|
|
52
|
+
y = str(binascii.hexlify(y), 'utf-8')
|
57
53
|
Fs = 1/0.01
|
58
|
-
omega0 = 2
|
54
|
+
omega0 = 2 #0.2 #1 #2 #8
|
55
|
+
|
56
|
+
# (1) Freqを指定してcwt
|
59
57
|
freqs=np.arange(0.1,20,0.025)
|
60
58
|
r=pycwt.cwt_f(y,freqs,Fs,pycwt.Morlet(omega0))
|
61
59
|
rr=np.abs(r)
|
62
60
|
|
61
|
+
plt.rcParams['figure.figsize'] = (10, 6)
|
62
|
+
fig = plt.figure()
|
63
|
+
ax1 = fig.add_axes([0.1, 0.75, 0.7, 0.2])
|
64
|
+
ax2 = fig.add_axes([0.1, 0.1, 0.7, 0.60], sharex=ax1)
|
65
|
+
ax3 = fig.add_axes([0.83, 0.1, 0.03, 0.6])
|
66
|
+
|
67
|
+
ax1.plot(x, y, 'k')
|
68
|
+
|
69
|
+
img = ax2.imshow(np.flipud(rr), extent=[0, 3,0.1, 20], aspect='auto')
|
70
|
+
twin_ax = ax2
|
71
|
+
twin_ax.set_yscale('log')
|
72
|
+
twin_ax.set_xlim(0, 3)
|
73
|
+
twin_ax.set_ylim(0.1, 20)
|
74
|
+
ax2.tick_params(which='both', labelleft=False, left=False)
|
75
|
+
twin_ax.tick_params(which='both', labelleft=True, left=True, labelright=False)
|
76
|
+
fig.colorbar(img, cax=ax3)
|
77
|
+
plt.show()
|
63
78
|
```
|
79
|
+
|
80
|
+
yがbytes型なので
|
81
|
+
y = str(binascii.hexlify(y), 'utf-8')
|
82
|
+
とstr型に変換したところ、新たにエラーが出ます。
|
83
|
+
|
84
|
+
```エラー
|
85
|
+
ValueError Traceback (most recent call last)
|
86
|
+
<ipython-input-23-ddd435324d4b> in <module>
|
87
|
+
29 # (1) Freqを指定してcwt
|
88
|
+
30 freqs=np.arange(0.1,20,0.025)
|
89
|
+
---> 31 r=pycwt.cwt_f(y,freqs,Fs,pycwt.Morlet(omega0))
|
90
|
+
32 rr=np.abs(r)
|
91
|
+
33
|
92
|
+
|
64
|
-
|
93
|
+
~/venv/lib/python3.7/site-packages/swan/pycwt.py in cwt_f(signal, freqs, Fs, wavelet, ppd, verbose)
|
94
|
+
230 scales = wavelet.f0/freqs
|
95
|
+
231 dt = 1./Fs
|
96
|
+
--> 232 return cwt_a(signal, scales, dt, wavelet, ppd, verbose=verbose)
|
97
|
+
233
|
98
|
+
234
|
99
|
+
|
100
|
+
~/venv/lib/python3.7/site-packages/swan/pycwt.py in cwt_a(signal, scales, sampling_scale, wavelet, ppd, verbose)
|
101
|
+
188 padded_signal[-padlen2:] = padfunc(padded_signal[-padlen2:],signal[-1])
|
102
|
+
189
|
103
|
+
--> 190 padded_signal[padlen1:-padlen2] = signal
|
104
|
+
191
|
105
|
+
192
|
106
|
+
|
107
|
+
ValueError: could not convert string to float:
|
108
|
+
```
|
109
|
+
ご教授お願いいたします
|
2
エラーコードを加えました
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,6 +5,20 @@
|
|
5
5
|
### 発生している問題・エラーメッセージ
|
6
6
|
byte型ではなく、str型を使うようにエラーが出るのですが、どのように対処していいかわかりません。
|
7
7
|
```
|
8
|
+
TypeError Traceback (most recent call last)
|
9
|
+
<ipython-input-6-dc8dddf3b7ab> in <module>
|
10
|
+
33 # (1) Freqを指定してcwt
|
11
|
+
34 freqs=np.arange(0.1,20,0.025)
|
12
|
+
---> 35 r=pycwt.cwt_f(y,freqs,Fs,pycwt.Morlet(omega0))
|
13
|
+
36 rr=np.abs(r)
|
14
|
+
37
|
15
|
+
|
16
|
+
~/venv/lib/python3.7/site-packages/swan/pycwt.py in cwt_f(signal, freqs, Fs, wavelet, ppd, verbose)
|
17
|
+
230 scales = wavelet.f0/freqs
|
18
|
+
231 dt = 1./Fs
|
19
|
+
--> 232 return cwt_a(signal, scales, dt, wavelet, ppd, verbose=verbose)
|
20
|
+
233
|
21
|
+
234
|
8
22
|
write() argument must be str, not bytes
|
9
23
|
```
|
10
24
|
|
@@ -47,4 +61,4 @@
|
|
47
61
|
rr=np.abs(r)
|
48
62
|
|
49
63
|
```
|
50
|
-
ここから表をプロットするコードを書いていくつもりでしたが、下から2行目の場所でエラーが出てしまい、つまづいています。ご教授よろしくお願いいたします。
|
64
|
+
ここから表をプロットするコードを書いていくつもりでしたが、下から2行目の場所でエラーが出てしまい、つまづいています。単純にstr()で変換すれば良いと思ったのですが、変換をしても他のエラーが出てくる始末です。ご教授よろしくお願いいたします。
|
1
エラー個所を書き足しました
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
write() argument must be str, not bytesというエラーで困っています
|
body
CHANGED
@@ -47,4 +47,4 @@
|
|
47
47
|
rr=np.abs(r)
|
48
48
|
|
49
49
|
```
|
50
|
-
ここから表をプロットするコードを書いていくつもりでしたが、エラーが出てしまい、つまづいています。ご教授よろしくお願いいたします。
|
50
|
+
ここから表をプロットするコードを書いていくつもりでしたが、下から2行目の場所でエラーが出てしまい、つまづいています。ご教授よろしくお願いいたします。
|