Я тренирую свою модель, используя керасы, и сохраняю ее. У меня 6 класс. Теперь я хочу прочитать один аудиофайл из микрофона в качестве тестовых данных, затем я говорю, что эти тестовые данные принадлежат к какому классу. ? Но я не знаю как? Мой код:
from pathlib import Path
import glob
import cv2
import numpy as np
from keras.utils import np_utils
from sklearn.metrics import classification_report
from keras.models import load_model
import sounddevice as sd
from scipy.io.wavfile import write
import time
import matplotlib.pyplot as plt
from scipy.io import wavfile
#record from mic
time.sleep(2)
print('Startofaudio')
fs = 16000
seconds =1.5
myrecording = sd.rec(int(seconds * fs), samplerate=fs, channels=1)
sd.wait()
write('S_t1_0_00.wav', fs, myrecording)
print('Endofaudio')
time.sleep(2)
#Spectrogram_rec
path = Path('/home/narges/rec/').glob('**/*.wav')
wavs = [str(wavf) for wavf in path if wavf.is_file()]
wavs.sort()
number_of_files=len(wavs)
spk_ID = [wavs[i].split('/')[-1].lower() for i in range(number_of_files)]
for i in range(number_of_files):
samplingfrequency, signaldata = wavfile.read(wavs[i])
pxx, freq, bins, im = plt.specgram(x=signaldata, Fs=samplingfrequency, noverlap=384, NFFT=512)
plt.title('spec of vowel')
plt.xlabel('time')
plt.ylabel('freq')
plt.savefig("spk_ID:{}.png".format(spk_ID[i]), bbox_inches='tight', dpi=300, frameon='false')
# Load Data test
path_t = Path('/home/.../rec/').glob('**/*.wav')
wavs_t = [str(wavf) for wavf in path_t if wavf.is_file()]
number_of_files_t=len(wavs_t)
# Create Speaker ID
spk_ID_t = [wavs_t[i].split('/')[-1].lower() for i in range(number_of_files_t)]
#load spectrogram_test
path_spec_test = "/home/.../rec"
spec_test = glob.glob(path_spec_test + "**/*.png")
spec_test.sort()
X_modify_t = []
width_t = 200
height_t = 100
for spec_t in spec_test:
specs_test = cv2.imread(spec_t)
specs_test = cv2.cvtColor(specs_test,cv2.COLOR_BGR2GRAY)
specs_test = cv2.resize(specs_test ,(width_t, height_t))
specs_test = specs_test / np.max(specs_test)
specs_test = specs_test.astype(np.float32)
X_modify_t.append(specs_test)
X_test = np.asarray(X_modify_t,dtype=np.float32)
X_test = np.expand_dims(X_test, axis=3)
#load label_test
label_no_t = [spk_ID_t[i].split('_')[-2] for i in range(number_of_files_t)]
Y_test = np_utils.to_categorical(label_no_t)
# acc per class
model = load_model('my_model.h5')
pred = np.round(model.predict(X_test))
print(classification_report(Y_test, pred))
Я использую матрицу путаницы, которая предсказывает точность для каждого класса, но теперь я хочу узнать, какие тестовые данные принадлежат к какому классу.