import numpy as np
import tensorflow as tf
import librosa
import os
import warnings
warnings.filterwarnings("ignore")


def load_model():
    abs_path = os.getcwd()
    model = tf.keras.models.load_model(abs_path + "/saved_model/model_20230607_02")

    model.compile(optimizer='adam',
                  loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
                  metrics=['accuracy'])

    return model


def sample_preparer(location):
    sample_data = []
    sample = np.zeros((128, 100, 3))
    y, sr = librosa.load(location, sr=22050)
    y, _ = librosa.effects.trim(y, top_db=50)
    y = librosa.resample(y=y, orig_sr=sr, target_sr=22050)
    melspect = librosa.feature.melspectrogram(y=y)

    for i, _ in enumerate(melspect):  # 128
        for j, _ in enumerate(melspect[i]):  # LENGTH
            sample[i][j] = melspect[i][j]

    sample_data = [sample]

    return sample_data