2014104094

Demo 버전 업로드

1 +import cv2
2 +import numpy as np
3 +import pyaudio
4 +import librosa
5 +import librosa.display
6 +import matplotlib.pyplot as plt
7 +import time
8 +import tensorflow as tf
9 +import tensorflow.keras as keras
10 +
11 +CATEGORES = ["angry", "happy", "lonely", "sad"]
12 +
13 +model = keras.load_model("yout model path")
14 +
15 +rate = 16000
16 +chunk_size = rate // 4
17 +
18 +"""
19 + 생성된 데이터를 모델에 맞게 변경함
20 + @param filepath(str) : path where your image file is
21 + @return array that has reshaped for predict
22 +"""
23 +def prepare(filepath):
24 + img_array = cv2.imread(filepath, cv2.IMREAD_COLOR)
25 + new_array = cv2.resize(img_array, (62, 78))
26 + return new_array.reshape(-1, 62, 78, 1)
27 +
28 +p = pyaudio.PyAudio()
29 +stream = p.open(format=pyaudio.paFloat32,
30 + channels=1,
31 + rate=rate,
32 + input=True,
33 + input_device_index=1,
34 + frames_per_buffer=chunk_size)
35 +
36 +
37 +frames = []
38 +
39 +plt.figure(figsize=(10, 4))
40 +do_melspec = librosa.feature.melspectrogram
41 +pwr_to_db = librosa.core.power_to_db
42 +
43 +while True:
44 +
45 + start = time.time()
46 +
47 + data = stream.read(chunk_size)
48 + data = np.fromstring(data, dtype=np.float32)
49 +
50 + melspec = do_melspec(y=data, sr=rate, n_mels=128, fmax=4000)
51 + norm_melspec = pwr_to_db(melspec, ref=np.max)
52 +
53 + frames.append(norm_melspec)
54 +
55 + if len(frames) == 20:
56 +
57 +
58 + stack = np.hstack(frames)
59 + librosa.display.specshow(stack, fmax=4000)
60 + plt.savefig('your save path' + '.jpg', dpi=300)
61 + prediction = model.predict([prepare('path where your image is')])
62 + print(CATEGORES[int(prediction[0][0])])
63 + plt.draw()
64 + plt.pause(0.0001)
65 + plt.clf()
66 + #break
67 + frames.pop(0)
68 +
69 +
70 + t = time.time() - start