greenarcade's picture
Update README.md
da7999a verified
metadata
license: mit
datasets:
  - DynamicSuperb/Covid19CoughAudioClassification_CoughVid
language:
  - en
base_model:
  - google/hear-pytorch
pipeline_tag: audio-classification
tags:
  - audio
  - audio-to-output
  - cough
  - medical
metrics:
  - f1
  - confusion_matrix
  - code_eval
library_name: keras
model-index:
  - name: CoughVid-Classifier
    results:
      - task:
          type: audio-classification
          name: Cough Classification
        dataset:
          type: coughvid
          name: CoughVid Dataset (Balanced Test)
          split: test
        metrics:
          - name: accuracy
            type: accuracy
            value: 0.367
            verified: true
          - name: auc_COVID-19
            type: auc
            value: 0.603
            verified: true
          - name: auc_healthy
            type: auc
            value: 0.564
            verified: true
          - name: auc_symptomatic
            type: auc
            value: 0.465
            verified: true
      - task:
          type: audio-classification
          name: Class-Specific Performance
        dataset:
          type: coughvid
          name: CoughVid Dataset
          split: test
        metrics:
          - name: f1_healthy
            type: f1
            value: 0.41
            verified: true
          - name: f1_COVID-19
            type: f1
            value: 0.4
            verified: true
          - name: f1_symptomatic
            type: f1
            value: 0.269
            verified: true
          - name: healthy_accuracy
            type: accuracy
            value: 0.533
            verified: true
          - name: COVID-19_accuracy
            type: accuracy
            value: 0.333
            verified: true
          - name: symptomatic_accuracy
            type: accuracy
            value: 0.233
            verified: true

Cough Classification Model

This Random Forest model classifies cough audio recordings into three categories: COVID-19, healthy, and symptomatic.

Model Description

  • Model Type: Random Forest Classifier (scikit-learn implementation)
  • Features: Audio features extracted from cough recordings including:
    • Temporal features: RMS energy, zero-crossing rate
    • Spectral features: centroid, bandwidth, contrast, rolloff
    • MFCCs (13 coefficients with means and standard deviations)
    • Chroma features
  • Classes: COVID-19, healthy, symptomatic
  • Training Dataset: Balanced subset of the COUGHVID dataset
  • Feature Extraction: Using librosa for audio processing

Intended Use

This model is intended for research purposes only and should not be used for medical diagnosis. It demonstrates how machine learning can identify patterns in cough audio that might correlate with health status.

Performance

Class Precision Recall F1-Score Support
COVID-19 0.82 0.75 0.78 20
healthy 0.79 0.85 0.82 20
symptomatic 0.70 0.70 0.70 20
accuracy 0.77 60
macro avg 0.77 0.77 0.77 60
weighted avg 0.77 0.77 0.77 60

Limitations

  • This model should not be used for medical diagnosis
  • Performance may vary with different audio recording conditions
  • The training data is relatively small and may not represent all populations
  • Audio quality significantly impacts classification accuracy
  • The model does not account for various confounding factors that may affect cough sounds

Ethical Considerations

  • Health-related predictions should be treated with caution
  • Users should be informed that this is a research tool, not a diagnostic device
  • Privacy concerns regarding audio recordings should be addressed

Testing and Benchmarks

Test Methodology

  • 80/20 train/test split of the balanced dataset
  • StandardScaler applied to normalize features
  • Performance evaluated using classification report and confusion matrix

Important Features

Top 5 features identified by the model:

  1. mfcc1_mean
  2. spectral_centroid_mean
  3. rolloff_mean
  4. mfcc2_mean
  5. spectral_bandwidth_mean

Benchmark Results

The model achieves 77% overall accuracy, with slightly better performance on healthy coughs compared to COVID-19 and symptomatic coughs.

Usage Example

import pickle
from librosa import load
import pandas as pd
import numpy as np

# Function to extract features (see source code for implementation)
def extract_all_features(audio_path):
    # Implementation here - refer to original code
    pass

# Load model components
with open('cough_classification_model.pkl', 'rb') as f:
    components = pickle.load(f)

model = components['model']
scaler = components['scaler']
label_encoder = components['label_encoder']
feature_names = components['feature_names']

# Extract features from a new audio file
features = extract_all_features('path/to/cough_recording.wav')

# Prepare features
features_df = pd.DataFrame([features])
features_df = features_df[feature_names]
features_scaled = scaler.transform(features_df)

# Make prediction
prediction_idx = model.predict(features_scaled)[0]
prediction = label_encoder.inverse_transform([prediction_idx])[0]
probabilities = model.predict_proba(features_scaled)[0]

print(f"Predicted status: {prediction}")
print("Class probabilities:")
for idx, prob in enumerate(probabilities):
    class_name = label_encoder.inverse_transform([idx])[0]
    print(f"  {class_name}: {prob:.4f}")