How to use from the
Use from the
Scikit-learn library
from huggingface_hub import hf_hub_download
import joblib
model = joblib.load(
	hf_hub_download("DerrickLegacy256/bee-audio-classifier", "sklearn_model.joblib")
)
# only load pickle files from sources you trust
# read more about it here https://skops.readthedocs.io/en/stable/persistence.html

Bee Audio Classifier

5-class audio classifier for bee colony health monitoring. Trained on segmented hive recordings using MFCC-based feature extraction.

Last updated: 2026-05-19 15:54 UTC

Classes

Label Description
(classes not found) โ€”

Model performance

File Description Accuracy F1 (weighted)
bee_cnn_classifier.h5 CNN (Mel Spectrogram) โ€” โ€”
best_cnn.h5 CNN checkpoint โ€” โ€”

label_encoder.pkl is required by all classical ML models. cnn_label_encoder.pkl is required by the CNN models.

Feature extraction (0 features per 5-second segment)

  • 40 MFCCs ร— (mean + std) = 80
  • 40 delta-MFCCs ร— mean = 40
  • 12 Chroma ร— (mean + std) = 24
  • Mel spectrogram stats (mean, std, max, min) = 4
  • Spectral centroid (mean + std) = 2
  • Spectral bandwidth (mean + std) = 2
  • Spectral rolloff (mean + std) = 2
  • Spectral contrast ร— 7 ร— mean = 7
  • Zero crossing rate (mean + std) = 2
  • RMS energy (mean + std) = 2
  • Tonnetz ร— 6 ร— mean = 6

Quick Python usage

import joblib
import librosa
import numpy as np

model = joblib.load("random_forest_model.pkl")
le    = joblib.load("label_encoder.pkl")

def extract_features(y, sr, n_mfcc=40,
                     hop_length=512, n_fft=2048):
    feats = {}
    mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=n_mfcc, n_fft=n_fft, hop_length=hop_length)
    for i in range(n_mfcc):
        feats[f"mfcc_{i}_mean"] = np.mean(mfcc[i])
        feats[f"mfcc_{i}_std"]  = np.std(mfcc[i])
    delta = librosa.feature.delta(mfcc)
    for i in range(n_mfcc):
        feats[f"mfcc_delta_{i}_mean"] = np.mean(delta[i])
    chroma = librosa.feature.chroma_stft(y=y, sr=sr, n_fft=n_fft, hop_length=hop_length)
    for i in range(12):
        feats[f"chroma_{i}_mean"] = np.mean(chroma[i])
        feats[f"chroma_{i}_std"]  = np.std(chroma[i])
    mel = librosa.feature.melspectrogram(y=y, sr=sr, hop_length=hop_length)
    mel_db = librosa.power_to_db(mel, ref=np.max)
    feats["mel_mean"] = np.mean(mel_db); feats["mel_std"]  = np.std(mel_db)
    feats["mel_max"]  = np.max(mel_db);  feats["mel_min"]  = np.min(mel_db)
    sc = librosa.feature.spectral_centroid(y=y, sr=sr, hop_length=hop_length)
    feats["spectral_centroid_mean"] = np.mean(sc); feats["spectral_centroid_std"] = np.std(sc)
    sb = librosa.feature.spectral_bandwidth(y=y, sr=sr, hop_length=hop_length)
    feats["spectral_bandwidth_mean"] = np.mean(sb); feats["spectral_bandwidth_std"] = np.std(sb)
    sr_f = librosa.feature.spectral_rolloff(y=y, sr=sr, hop_length=hop_length)
    feats["spectral_rolloff_mean"] = np.mean(sr_f); feats["spectral_rolloff_std"] = np.std(sr_f)
    contrast = librosa.feature.spectral_contrast(y=y, sr=sr, hop_length=hop_length)
    for i in range(contrast.shape[0]):
        feats[f"spectral_contrast_{i}_mean"] = np.mean(contrast[i])
    zcr = librosa.feature.zero_crossing_rate(y, hop_length=hop_length)
    feats["zcr_mean"] = np.mean(zcr); feats["zcr_std"] = np.std(zcr)
    rms = librosa.feature.rms(y=y, hop_length=hop_length)
    feats["rms_mean"] = np.mean(rms); feats["rms_std"] = np.std(rms)
    harmonic = librosa.effects.harmonic(y)
    tonnetz = librosa.feature.tonnetz(y=harmonic, sr=sr)
    for i in range(6):
        feats[f"tonnetz_{i}_mean"] = np.mean(tonnetz[i])
    return np.array(list(feats.values())).reshape(1, -1)

y, sr = librosa.load("hive_recording.wav", sr=22050)
seg   = y[:int(5.0 * sr)]
feat  = extract_features(seg, sr)
pred  = le.classes_[model.predict(feat)[0]]
print(pred)
Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support