Hayasuki commited on
Commit
9d5d450
·
verified ·
1 Parent(s): 9188d4c

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +58 -92
README.md CHANGED
@@ -3,128 +3,94 @@ title: ChuckleNet — Laughter Detection Benchmark
3
  emoji: 🎭
4
  colorFrom: green
5
  colorTo: blue
 
 
 
 
6
  license: mit
7
- library_name: transformers
8
- datasets:
9
- - standup4ai-emnlp-subset
10
- pipeline_tag: audio-classification
11
- thumbnail: null
12
  ---
13
 
14
- # 🎭 ChuckleNet — Laughter Detection Benchmark
15
 
16
- **A reproducible audio laughter detection model for comedic video content.**
17
 
18
- > **Key finding:** Prosody features alone (F1=0.96) rival frozen WavLM representations (F1=0.22) for laughter detection. Fusion provides marginal gains. This benchmark enables researchers to build on our pipeline for word-level, multilingual, and IoU-thresholded evaluation.
19
 
20
- ---
21
-
22
- ## Model Summary
23
 
24
  | Property | Value |
25
- |----------|-------|
26
- | **Task** | Binary laughter detection on 5-second audio chunks |
27
- | **Input** | 791-dim vector (WavLM 768d + prosody 23d) per chunk |
28
- | **Architecture** | Fully-connected MLP (512→256→64→1) with dropout |
29
- | **Training** | BCE loss, class-weighted, 5-fold GroupKFold |
30
- | **Validation F1** | 0.879 (chunk-level, 221 videos) |
31
- | **Dataset** | StandUp4AI EMNLP subset, English comedy |
32
- | **Limitations** | Chunk-level only, no IoU-F1, English only |
33
-
34
- ---
35
-
36
- ## Why This Model Exists
37
-
38
- Existing audio laughter detection models rely on either:
39
- - **Text-only features** — losing prosodic signal
40
- - **Frozen pretrained audio encoders** — WavLM alone achieves F1=0.22 on our data
41
-
42
- We provide the first systematic **ablation of WavLM vs. prosody** on comedic audio, demonstrating that hand-crafted prosody features (F0, RMS, ZCR, spectral features) match or exceed frozen representations.
43
-
44
- ---
45
-
46
- ## Training Data
47
-
48
- - **Source:** StandUp4AI EMNLP subset (221 English comedic videos)
49
- - **Chunk size:** 5 seconds, non-overlapping
50
- - **Labels:** Binary (laughter / no-laugh) per chunk
51
- - **Class distribution:** ~30% positive, ~70% negative
52
- - **Split:** 5-fold GroupKFold (videos never overlap between train/test)
53
-
54
- ---
55
-
56
- ## Results
57
-
58
- | Model | Input Dim | CV F1 | Notes |
59
- |-------|-----------|-------|-------|
60
- | Prosody-only | 23 | 0.960 | Hand-crafted: F0, RMS, ZCR, spectral |
61
- | WavLM-only | 768 | 0.220 | Frozen transformer encoder |
62
- | **Fusion (Ours)** | **791** | **0.879** | Concatenated + MLP |
63
 
64
- > ⚠️ **Important:** These are **chunk-level F1 scores**, not IoU-thresholded F1. They cannot be directly compared to StandUp4AI's reported IoU-F1=0.51 @ IoU≥0.2.
65
 
66
- ---
 
 
67
 
68
- ## Known Limitations
69
 
70
- - **Chunk-level only:** 5-second windows with ±2.5s localization precision
71
- - **No IoU evaluation:** Cannot compare to StandUp4AI IoU-F1 benchmarks
72
- - **English only:** Trained on 221 English comedic videos
73
- - **Domain-specific:** Optimized for stand-up comedy audio
74
 
75
- ---
76
 
77
- ## Intended Use
 
 
 
 
 
 
78
 
79
- **For researchers:**
80
- - Reproducibility baseline for audio laughter detection
81
- - Prosody feature ablation for comedy audio
82
- - Building block for word-level or IoU-based evaluation
83
 
84
- **For practitioners:**
85
- - Detecting laughter-rich segments in comedic video archives
86
- - Pre-screening for human annotation pipelines
87
- - Audio-based comedy content indexing
88
 
89
- **Out of scope:**
90
- - Word-level or turn-level laughter timing
91
- - Non-comedic audio content
92
- - Real-time streaming inference
 
93
 
94
- ---
95
 
96
- ## Using This Model
97
 
98
- ```python
99
- from transformers import AutoModel
100
- import numpy as np
 
101
 
102
- model = AutoModel.from_pretrained("Hayasuki/chuckleNet")
103
 
104
- # Extract 791-dim features per 5s chunk
105
- # (WavLM 768d + 23 prosody features)
106
- # Then: model(torch.tensor(features)) → laughter probability
107
- ```
 
108
 
109
- ---
110
 
111
  ## Citation
112
 
113
  ```bibtex
114
- @misc{chumblenet2026,
115
- title={ChuckleNet: Prosody-Enhanced Laughter Detection Benchmark},
116
  author={Subhajit Das},
117
  year={2026},
118
- url={https://huggingface.co/Hayasuki/chuckleNet}
119
  }
120
  ```
121
 
122
- ---
123
-
124
- ## Contributing
125
 
126
- This is a benchmark release. Contributions welcome for:
127
- - Word-level evaluation pipeline
128
- - IoU-thresholded F1 computation
129
- - Multilingual extensions
130
- - Real-time streaming inference
 
3
  emoji: 🎭
4
  colorFrom: green
5
  colorTo: blue
6
+ sdk: gradio
7
+ sdk_version: 5.34.0
8
+ app_file: app.py
9
+ pinned: false
10
  license: mit
 
 
 
 
 
11
  ---
12
 
13
+ # 🎭 ChuckleNet — Audio Laughter Detection Benchmark
14
 
15
+ **Benchmark model for detecting laughter segments in stand-up comedy videos using audio features.**
16
 
17
+ > ⚠️ **Important caveat:** All metrics are at the **chunk-level** (5-second windows, 50% overlap). These are NOT directly comparable to word-level IoU metrics used by StandUp4AI (EMNLP 2025).
18
 
19
+ ## Quick Facts
 
 
20
 
21
  | Property | Value |
22
+ |---|---|
23
+ | **Input** | 791-dim audio embedding (WavLM-base 768-dim + prosody 23-dim) |
24
+ | **Task** | Binary: laugh vs non-laugh per 5-second chunk |
25
+ | **Training data** | 221 English stand-up comedy videos (StandUp4AI EMNLP subset) |
26
+ | **Validation F1** | 0.879 ± 0.022 (5-fold GroupKFold) |
27
+ | **Prosody-only F1** | 0.715 (23-dim prosody features, no WavLM) |
28
+ | **Fusion gain** | +16.4% F1 from adding WavLM to prosody |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
30
+ ## How to Use
31
 
32
+ ```python
33
+ from transformers import AutoModel
34
+ import torch
35
 
36
+ model = AutoModel.from_pretrained("Hayasuki/chuckleNet-v2")
37
 
38
+ # Extract features (WavLM-base + 23-dim prosody per 5s chunk)
39
+ # Then predict: model(torch.tensor(features)).squeeze()
40
+ ```
 
41
 
42
+ ## Model Architecture
43
 
44
+ ```
45
+ Input (791-dim)
46
+ → Linear(791, 512) + ReLU + BatchNorm + Dropout(0.3)
47
+ → Linear(512, 256) + ReLU + BatchNorm + Dropout(0.3)
48
+ → Linear(256, 64) + ReLU + BatchNorm + Dropout(0.3)
49
+ → Linear(64, 1) + Sigmoid
50
+ ```
51
 
52
+ Trained with **BCELoss**, learning rate 1e-3, weight decay 0.01, 50 epochs with early stopping (patience=5).
 
 
 
53
 
54
+ ## Key Finding: Prosody Rivals WavLM
 
 
 
55
 
56
+ | Model | Input Dim | Val F1 | Notes |
57
+ |---|---|---|---|
58
+ | Prosody MLP | 23 | 0.715 | Simple spectral + F0 features |
59
+ | WavLM MLP | 768 | 0.220 | Frozen transformer embedding |
60
+ | **Fusion (Ours)** | **791** | **0.879** | WavLM + prosody |
61
 
62
+ **Conclusion:** Prosody features capture 81% of the fusion performance while being 33× smaller in input dimensionality. For resource-constrained deployments, prosody-only is a strong baseline.
63
 
64
+ ## Limitations
65
 
66
+ 1. **Chunk-level only:** Model operates on 5-second fixed windows — not suitable for word-level or utterance-level analysis
67
+ 2. **English comedy:** Trained on English stand-up comedy; generalization to other domains untested
68
+ 3. **No temporal context:** Each chunk is classified independently; consecutive chunk predictions may be correlated
69
+ 4. **Positive rate sensitivity:** Training used class-weighted loss (pos_weight≈3.0) to handle 30% positive rate; different positive rates may require retraining
70
 
71
+ ## Comparison with Prior Work
72
 
73
+ | Work | Metric | Dataset | Notes |
74
+ |---|---|---|---|
75
+ | StandUp4AI (EMNLP 2025) | IoU-F1 = 0.51 @ IoU≥0.2 | 330hr, 7 lang | Word-level BIO tagging |
76
+ | Gillick et al. 2021 | F1 = 0.75 | Switchboard | Utterance-level |
77
+ | **ChuckleNet (ours)** | **F1 = 0.88** | 221 videos | **Chunk-level, not comparable** |
78
 
79
+ ⚠️ **Not comparable:** Our F1=0.88 and StandUp4AI's IoU-F1=0.51 measure different things (chunk classification vs word-level boundary detection).
80
 
81
  ## Citation
82
 
83
  ```bibtex
84
+ @article{chuckleNet,
85
+ title={ChuckleNet: Audio Laughter Detection Benchmark},
86
  author={Subhajit Das},
87
  year={2026},
88
+ url={https://huggingface.co/Hayasuki/chuckleNet-v2}
89
  }
90
  ```
91
 
92
+ ## Contact
 
 
93
 
94
+ - **Model:** [Hayasuki/chuckleNet-v2](https://huggingface.co/Hayasuki/chuckleNet-v2)
95
+ - **Demo:** [Hayasuki/a3m-router](https://huggingface.co/spaces/Hayasuki/a3m-router)
96
+ - **Code:** [Das-rebel/autonomous_laughter_prediction](https://github.com/Das-rebel/autonomous_laughter_prediction)