CoolFace
Apppublic

moghit/Audio_Classification

sourceHugging Faceupdated 28d agoView on Hugging Face
0likes
predict.py63 linesDownload Raw Back to root
1import os
2os.environ["TF_ENABLE_ONEDNN_OPTS"] = "0"
3os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"  # Suppress TF logging
4os.environ["TF_ENABLE_CPU_OPTIMIZATION"] = "0"  # Suppress CPU optimization messages
5
6import sounddevice as sd
7import numpy as np
8import librosa
9import tensorflow as tf
10import os
11
12with np.load("words.npz") as data :
13    words = data["y"]
14
15model = tf.keras.models.load_model("last_model_e20_acc78_.keras")
16
17
18duration = 1  
19sr = 22050  
20n_fft = 2048
21hop_length = 512
22fixed_length = 45100  
23
24
25def record_audio(duration, sr):
26    print ("")
27    print("Enregistrement en cours...")
28    audio = sd.rec(int(duration * sr), samplerate=sr, channels=1, dtype=np.float32)
29    sd.wait()
30    print("Enregistrement terminé.")
31    return audio.flatten()
32
33def extract_features(signal, sr):
34    stft = librosa.stft(signal, n_fft=n_fft, hop_length=hop_length)
35    spectrogram = np.abs(stft)
36    spectrogram_flat = spectrogram.flatten()
37
38    if len(spectrogram_flat) > fixed_length:
39        spectrogram_flat = spectrogram_flat[:fixed_length]
40    else:
41        spectrogram_flat = np.pad(spectrogram_flat, (0, fixed_length - len(spectrogram_flat)))
42
43    return np.array([spectrogram_flat]) 
44
45def report(prediction):
46    test = []
47    values = prediction[0]
48    for i in range ( 10 ) : 
49        value = np.round ( values[i] * 100 , 2 )
50        value = round(float(value) , 2 )
51        word = str(words[i])
52        test.append(( value , word ))
53    values_sorted = sorted(test , key = lambda item : item[0] * -1 )
54
55    print ("prediction from high to low probability")
56    print()
57    for i in range ( 10 ) : 
58        print (f"{values_sorted[i][1]} is {values_sorted[i][0]} % ")
59
60
61    print ( "so the prediction word is " , values_sorted[0][1] )
62    return values_sorted[0][1]
63