File size: 7,755 Bytes
1111062
 
 
 
 
b680487
1111062
 
b680487
1111062
 
 
 
 
b680487
 
 
 
705bbf8
b680487
adb8c13
 
 
 
 
 
 
 
1111062
 
 
b9ffe98
adb8c13
 
 
b680487
adb8c13
 
 
b680487
adb8c13
 
b680487
adb8c13
 
 
 
b680487
adb8c13
b680487
adb8c13
 
 
 
 
b680487
adb8c13
b680487
adb8c13
b680487
 
adb8c13
 
 
 
b680487
adb8c13
 
b680487
adb8c13
 
 
 
 
 
b680487
adb8c13
b680487
adb8c13
 
 
b680487
adb8c13
 
 
 
 
 
 
 
 
 
 
 
 
e7a59b8
adb8c13
 
 
 
 
 
e7a59b8
b680487
 
adb8c13
 
 
e7a59b8
 
adb8c13
 
 
 
 
 
 
 
 
 
 
 
 
 
1db8d21
 
adb8c13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b680487
 
 
 
 
 
8c3219e
 
 
 
 
 
 
 
 
 
b680487
 
 
8c3219e
 
 
 
b680487
adb8c13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1111062
adb8c13
1111062
adb8c13
1111062
 
 
 
b680487
1111062
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
---
license: apache-2.0
language:
- en
tags:
- baby-cry-classification
- machine-learning
- audio-analysis
- baby-cry-classification
- signal-processing
- acoustic-feature-extraction
- audio-classification
- speech-recognition
---
# Baby Cry Classifier

<p align="center">
<!-- Smaller size image -->
<img src="https://huggingface.co/foduucom/baby-cry-classification/resolve/main/Baby-cry.jpg" alt="Image" style="width:500px; height:300px;">
</p>

## Table of Contents
1. [Introduction](#introduction)
2. [Problem Statement](#problem-statement)
3. [Solution](#solution)
4. [Importance and Need](#importance-and-need)
5. [How It Works](#how-it-works)
6. [How to Use This Model](#how-to-use-this-model)
7. [Future Developments](#future-developments)
8. [License](#license)
9. [Acknowledgments](#acknowledgments)
10. [Model Card Contact](#model-card-contact)

## Introduction

The Baby Cry Classifier is an advanced machine learning model designed to analyze and categorize different types of baby cries. This innovative tool aims to assist parents, caregivers, and healthcare professionals in understanding and responding to babys' needs more effectively.

## Problem Statement

Interpreting an baby's cries can be challenging, especially for new parents or in high-stress situations. Babies communicate their needs primarily through crying, but distinguishing between different types of cries (e.g., hunger, discomfort, tiredness) can be difficult. This uncertainty can lead to:

1. Increased stress for parents and caregivers
2. Delayed response to the baby's needs
3. Potential misinterpretation of the baby's requirements

## Solution

Our baby Cry Classifier addresses these challenges by:

1. Analyzing audio recordings of baby cries
2. Extracting relevant acoustic features
3. Classifying the cry into predefined categories (e.g., belly pain, burping, discomfort, hunger, tiredness)

## Importance and Need

### 1. Enhanced baby Care

By accurately identifying the reason behind an baby's cry, caregivers can respond more promptly and appropriately to the baby's needs. This can lead to:

- Improved baby comfort and well-being
- Reduced stress for both the baby and caregiver
- Better overall care and nurturing

### 2. Medical Applications

In healthcare settings, the baby Cry Classifier can be a useful diagnostic tool:

- Assisting pediatricians in identifying potential health issues
- Supporting early detection of certain conditions that may affect an baby's cry patterns
- Providing objective data to complement clinical observations

### 3. Research Opportunities

This model opens up new avenues for research in:

- baby communication and development
- Early childhood psychology
- Acoustic analysis of baby vocalizations

## How It Works

1. **Data Collection**: The model is trained on baby cry audio samples, carefully labeled with their corresponding causes.

2. **Feature Extraction**: Advanced signal processing techniques are used to extract relevant acoustic features from the audio samples.

3. **Machine Learning**: A sophisticated machine learning algorithm is employed to learn the patterns associated with different types of cries.

4. **Classification**: When presented with a new audio sample, the model analyzes it and classifies it into one of the predefined categories.

## How to Use This Model

### Prerequisites

- Python 3.7 or higher
- Required libraries (install via pip):
  ```bash
  pip install numpy pandas scikit-learn joblib librosa
  ```

### Installation

1. Clone this repository:
   ```bash
   git clone https://huggingface.co/nehulagrawal/baby-cry-classification   
   cd baby-cry-classifier
   ```

2. Download the pre-trained model files:
    'model.joblib'
    'label.joblib'

### Usage

1. Import the necessary libraries:

```python
import joblib
import librosa
import numpy as np
```

2. Load the pre-trained model and label encoder:

```python
loaded_model = joblib.load('model.joblib')
loaded_le = joblib.load('label.joblib')
```

3. Define the feature extraction function (make sure this matches the function used during training):

```python
def extract_features(file_path):
    try:
        # Load audio file and extract features
        y, sr = librosa.load(file_path, sr=16000)
        mfcc = np.mean(librosa.feature.mfcc(y=y, sr=sr, n_mfcc=40,n_fft=n_fft,hop_length=hop_length,win_length=win_length,window=window).T,axis=0)
        mel = np.mean(librosa.feature.melspectrogram(y=y, sr=sr,n_fft=n_fft, hop_length=hop_length, win_length=win_length, window='hann',n_mels=n_mels).T,axis=0)
        stft = np.abs(librosa.stft(y))
        chroma = np.mean(librosa.feature.chroma_stft(S=stft, y=y, sr=sr).T,axis=0)
        contrast = np.mean(librosa.feature.spectral_contrast(S=stft, y=y, sr=sr,n_fft=n_fft,
                                                      hop_length=hop_length, win_length=win_length,
                                                      n_bands=n_bands, fmin=fmin).T,axis=0)
        tonnetz =np.mean(librosa.feature.tonnetz(y=y, sr=sr).T,axis=0)
        features = np.concatenate((mfcc, chroma, mel, contrast, tonnetz))
        # print(shape(features))
        return features
    except:
        print("Error: Exception occurred in feature extraction")
        return None
```

4. Use the model to classify a new cry audio:

```python
def predict_cry(file_path):
    # Load the saved model and LabelEncoder
    loaded_model = joblib.load('model.joblib')
    loaded_le = joblib.load('label.joblib')
    
    # Extract features from the new audio file
    features = extract_features(file_path)
    
    if features is not None:
        # Reshape features to match the input shape expected by the model
        features = features.reshape(1, -1)
        
        # Make prediction
        prediction = loaded_model.predict(features)
        
        # Convert prediction back to original label
        predicted_label = loaded_le.inverse_transform(prediction)
        
        return predicted_label[0]
    else:
        return "Error: Could not extract features from the audio file"

# Example usage
file_path = 'path/to/your/file.wav'
result = predict_cry(file_path)
print(f"Predicted cry type: {result}")
```

## Model Performance

Model Performance
The baby Cry Classifier has undergone extensive testing to evaluate its effectiveness. Here's an overview of its performance:
Accuracy Metrics:

|      class |precision|recall|f1-score|
|:----------:|:-------:|:----:|:------:|
|          0 | 0.00    | 0.00 |  0.00  |    
|          1 | 0.67    | 0.67 |  0.67  |    
|          2 | 0.75    | 0.33 |  0.46  |   
|          3 | 0.50    | 0.43 |  0.46  |    
|          4 | 0.25    | 0.50 |  0.33  |    
|   accuracy |         |      |  0.38  |  
|  macro avg | 0.43    | 0.39 |  0.38  |  
|weighted avg| 0.51    | 0.38 |  0.41  |       

Overall Accuracy: 

- Accuracy: 0.38461538461538464
- Precision: 0.4333333333333333
- Recall: 0.38571428571428573
- F1 Score: 0.38461538461538464

### Integration

You can integrate this model into your own applications, such as:

- A mobile app for parents
- A monitoring system for nurseries
- A research tool for pediatric studies

## License

This project is licensed under the MIT License - see the `LICENSE.md` file for details.

## Acknowledgments

- Thanks to all the parents and caregivers who contributed audio samples
- Pediatric researchers who provided domain expertise
- Open-source community for various tools and libraries used in this project

## Model Card Contact

For inquiries and contributions, please contact us at [email protected].

```bibtex
@ModelCard{
    author       = {Nehul Agrawal and
                              Priyal Mehta},
    title         = {baby Cry Classifier},
    year           = {2024}
}
```