openSMILE + XGBoost — классификатор эмоций русской речи (аудио, базовые признаки)

Четырёхклассовый классификатор эмоций по audio-функционалам: angry, sad, neutral, positive (маппинг angry=0, sad=1, neutral=2, positive=3).

  • Признаки: OpenSMILE eGeMAPSv02 Functionals (88 функционалов).
  • Модель: XGBoost (n_estimators 500, learning_rate 0.05, max_depth 6, seed 42).
  • Обучен на корпусе dusha_resd_train (69 253 записи) = Dusha + RESD.

Метрики

Оценка на dusha_resd_test (6616 записей) — из training-отчёта эксперимента.

Class Precision Recall F1-score Support
angry 0.612 0.579 0.595 1378
sad 0.684 0.709 0.697 2213
neutral 0.502 0.514 0.508 1730
positive 0.569 0.547 0.558 1295
Accuracy 0.600 6616
F1-macro 0.590

Также: ROC-AUC (ovo, macro) 0.838, MCC 0.456, log-loss 0.933.

Как использовать

import joblib
import opensmile
import numpy as np
from huggingface_hub import hf_hub_download

model_path = hf_hub_download(
    "Natlis/opensmile-xgboost-emotion-classification-ru",
    "openSmile_XGBoost_dusha_resd_train_model.pkl",
)
scaler_path = hf_hub_download(
    "Natlis/opensmile-xgboost-emotion-classification-ru",
    "openSmile_XGBoost_dusha_resd_train_scaler.pkl",
)
model = joblib.load(model_path)
scaler = joblib.load(scaler_path)

smile = opensmile.Smile(
    feature_set=opensmile.FeatureSet.eGeMAPSv02,
    feature_level=opensmile.FeatureLevel.Functionals,
)
feats = smile.process_file("audio.wav")            # pd.Series, 88 функционалов
proba = model.predict_proba(
    scaler.transform(np.asarray(feats).reshape(1, -1))
)

Стандартизация признаков (scaler) обязательна перед подачей в модель. Порядок признаков — стандартный порядок eGeMAPSv02 Functionals.

Обучение

Полные гиперпараметры — в hyperparams.json и configs/audio/opensmile_xgboost.json. Источник признаков: eGeMAPS-кэш combine_balanced + извлечение по записям RESD.

Ограничения

  • Модель чувствительна к особенностям экстрактора OpenSMILE (версия, версии дел).
  • Эмоции размечены краудсорсингом; переносимость на спонтанную речь вне дистрибутива не гарантируется.

Лицензия и атрибуция

Веса лицензированы CC BY-SA 4.0 (модель обучена на корпусе dusha_resd). Полные условия — LICENSE, атрибуция и данные обучения — NOTICE.

Цитирование

Dusha — Kondratenko et al., arXiv:2212.12266. RESD — Aniemore, DOI 10.57967/hf/1272. Подробности — DUSHA.md / RESD.md кодового репозитория.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Collection including Natlis/opensmile-xgboost-emotion-classification-ru

Paper for Natlis/opensmile-xgboost-emotion-classification-ru