|
# Truth Detection from Audio Stories |
|
|
|
This model predicts whether a short audio story is truthful or deceptive using MFCC feature extraction and a Random Forest classifier. |
|
|
|
## Model Details |
|
|
|
* **Type:** Random Forest Classifier |
|
* **Features:** 13-dimensional MFCC (Mel-Frequency Cepstral Coefficients) |
|
* **Training Framework:** scikit-learn (`joblib` serialization) |
|
* **Input:** WAV audio file |
|
* **Output:** Predicted label: `True Story` or `Deceptive Story` |
|
|
|
## Intended Uses & Limitations |
|
|
|
**Intended Uses:** |
|
|
|
* Detecting potential deception in short, spoken stories or statements. |
|
* Research experiments on vocal biomarkers of deception. |
|
* Educational demonstrations on audio feature extraction and classification. |
|
|
|
**Limitations & Risks:** |
|
|
|
* The model was trained on a limited dataset; performance may degrade on different languages, audio quality, or speaking styles. |
|
* Predictions are probabilistic and should not be used as sole evidence in high-stakes scenarios (e.g., legal or security decisions). |
|
* Cultural, linguistic, or demographic biases in the training data can lead to unfair predictions. |
|
|
|
## Evaluation Metrics |
|
|
|
* **Accuracy:** 91% |
|
* **Languages in Training Data:** 15+ spoken languages |
|
|
|
## Training Data |
|
|
|
* **Source:** Curated dataset of narrated stories labeled as truthful or deceptive. |
|
* **Preprocessing:** Resampled to original sampling rates, trimmed to 30 seconds, MFCC extraction. |
|
|
|
## How to Use |
|
|
|
### Installation |
|
|
|
```bash |
|
pip install -r requirements.txt |
|
``` |
|
|
|
### Loading the Model in Python |
|
|
|
```python |
|
import joblib |
|
from huggingface_hub import hf_hub_download |
|
|
|
repo_id = "sangambhamare/TruthDetection" |
|
model_file = hf_hub_download(repo_id=repo_id, filename="model.joblib") |
|
model = joblib.load(model_file) |
|
``` |
|
|
|
### Making Predictions |
|
|
|
```python |
|
import librosa |
|
import numpy as np |
|
|
|
def extract_mfcc(file_path): |
|
y, sr = librosa.load(file_path, sr=None) |
|
mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13) |
|
return np.mean(mfcc, axis=1) |
|
|
|
features = extract_mfcc("path/to/audio.wav").reshape(1, -1) |
|
prediction = model.predict(features)[0] |
|
label = "True Story" if prediction == 1 else "Deceptive Story" |
|
print(label) |
|
``` |
|
|
|
## Gradio Demo |
|
|
|
A live demo of this model is available via a Gradio interface. To launch locally: |
|
|
|
```bash |
|
python app.py |
|
``` |
|
|
|
This will start a web app where you can upload a WAV file and see the prediction. |
|
|
|
tag::end |
|
|
|
--- |
|
|
|
## Citation |
|
|
|
If you use this model in your research, please cite: |
|
|
|
``` |
|
@misc{bhamare2025truthdetection, |
|
title={Truth Detection from Audio Stories}, |
|
author={Sangam Sanjay Bhamare}, |
|
year={2025}, |
|
howpublished={\url{https://huggingface.co/sangambhamare/TruthDetection}} |
|
} |
|
``` |
|
|
|
## License |
|
|
|
This model is released under the MIT License. |
|
|