ChuckleNet-Genki / README.md
Hayasuki's picture
FIXED: English-first, clear historical-only status, add teaching example
d228346 verified
|
Raw History Blame Contribute Delete
9.95 kB
---
title: ChuckleNet-Genki — The Original Spirit
emoji: 🎭
colorFrom: blue
colorTo: purple
sdk: gradio
pipeline_tag: audio-classification
license: mit
library_name: transformers
base_model: microsoft/wavlm-base
tags:
- audio-classification
- laughter-detection
- wavlm
- speech
- humor
- stand-up-comedy
- transformers
- genki
metrics:
- f1
datasets:
- StandUp4AI
papers:
- https://huggingface.co/Hayasuki/ChuckleNet-Genki
---
<div align="center">
# 🎭 ChuckleNet-Genki (元気)
***"The original spirit."***
**First-generation laughter detection model — the proof-of-concept that started it all.**
**For production use, see [ChuckleNet-Ten](https://huggingface.co/Hayasuki/ChuckleNet-Ten) (human-verified, F1=0.975). For research, see [ChuckleNet-Kage](https://huggingface.co/Hayasuki/ChuckleNet-Kage) (IoU-F1=0.229).**
[![Downloads](https://img.shields.io/badge/Downloads-265+-brightgreen?style=flat-square)](https://huggingface.co/Hayasuki/ChuckleNet-Genki)
[![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)](https://opensource.org/licenses/MIT)
[![Dataset](https://img.shields.io/badge/Dataset-StandUp4AI%20620v-purple?style=flat-square)](https://github.com/Standup4AI/dataset)
**Most-downloaded ChuckleNet model. Historical reference only — not for production.**
</div>
---
## Origin Story
```
┌─────────────────────────────────────────────────────────────────┐
│ GENKI TIMELINE │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 2024-09 "Can frozen WavLM detect laughter?" │
│ First experiment designed │
│ │ │
│ ▼ │
│ 2024-10 Genki v1 trained: 620 StandUp4AI videos │
│ Labels: VTT [laughter] transcript markers │
│ Result: F1 = 0.27 — proof of concept! ✅ │
│ │ │
│ ▼ │
│ 2025-01 "Weak labels are noisy — need human verification" │
│ → ChuckleNet-Ten project begins │
│ │ │
│ ▼ │
│ 2025-06 ChuckleNet-Ten: held-out IoU-F1 = 0.330 │
│ (human-verified labels) │
│ │
│ Genki lives on as the historical baseline. │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
## Model Characteristics
| Characteristic | Description |
|----------------|-------------|
| **Generation** | First — v1 proof-of-concept |
| **Labels** | Weak — VTT `[laughter]` transcript markers |
| **Architecture** | Frozen WavLM (768-dim) → Linear (768→2) |
| **Training Data** | 620 StandUp4AI videos |
| **Status** | Historical reference only — not for production |
---
## Performance
| Metric | Value | Note |
|--------|-------|------|
| **F1 Score** | `~0.27` | Weak-label metric, not human-verified |
| **Event IoU-F1@0.2** | `~0.23` | Approximate — different splits |
| **Downloads** | **265+** | Most popular ChuckleNet model |
> ⚠️ These are weak-label results on VTT `[laughter]` markers — not ground-truth laughter events. The model detects patterns correlated with transcript markers, not actual audience laughter.
---
## Evolutionary Tree
```
ChuckleNet Family
┌──────────────────┐
│ microsoft/ │
│ wavlm-base │
│ (frozen) │
└────────┬─────────┘
│
┌────────────────────┼────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ 🎭 Genki v1 │ │ 👻 Kage v32 │ │ 🏔️ Ten │
│ Weak labels │ │ Weak labels │ │ Human-verified│
│ 620 videos │ │ 620 videos │ │ 87 videos │
│ IoU ≈ 0.23 │ │ IoU = 0.229 │ │ IoU = 0.330 │
│ First attempt │ │ Refined probe │ │ Gold standard │
└───────────────┘ └───────────────┘ └───────────────┘
2024-10 2025-03 2025-06
```
---
## Comparison Table
| Model | Labels | Held-out IoU-F1 | Downloads | Use |
|-------|--------|-----------------|----------|-----|
| 🏔️ **[ChuckleNet-Ten](https://huggingface.co/Hayasuki/ChuckleNet-Ten)** | Human-verified | **0.330** | New | **Production ✅** |
| 👻 **[ChuckleNet-Kage](https://huggingface.co/Hayasuki/ChuckleNet-Kage)** | Weak (VTT) | 0.229 | 49 | Research |
| 🎭 **ChuckleNet-Genki** | Weak (VTT) | ~0.23 | **265+** | Historical |
---
## Quick Start
```python
from transformers import pipeline
pipe = pipeline(
"audio-classification",
model="Hayasuki/ChuckleNet-Genki"
)
result = pipe("standup_clip.mp3")
# [{'label': 'no_laugh', 'score': 0.77},
# {'label': 'laugh', 'score': 0.23}]
```
> ⚠️ Genki is a baseline model with limited accuracy. For any real use case, use [ChuckleNet-Ten](https://huggingface.co/Hayasuki/ChuckleNet-Ten) instead.
---
## Teaching Use Case
Genki is useful for **ML education** — demonstrating frozen feature probing:
```python
"""
Genki for teaching: frozen feature probing concept
"""
import torch
import torchaudio
from transformers import WavLMModel
# Load frozen WavLM backbone (NOT trained)
wavlm = WavLMModel.from_pretrained("microsoft/wavlm-base")
wavlm.eval() # Keep frozen
# Genki's linear probe: 768 → 2
class GenkiProbe(torch.nn.Module):
def __init__(self, input_dim=768, num_classes=2):
super().__init__()
self.classifier = torch.nn.Linear(input_dim, num_classes)
def forward(self, x):
return self.classifier(x)
# Load Genki weights (from this model card's files)
probe = GenkiProbe()
probe.load_state_dict(torch.load("genki_weights.pt"))
# Extract frozen features
with torch.no_grad():
features = wavlm(audio).last_hidden_state
# [batch, time, 768]
# Temporal pooling
pooled = features.mean(dim=1) # [batch, 768]
# Classify with frozen features
logits = probe(pooled) # [batch, 2]
```
---
## Limitations
| Limitation | Impact |
|------------|--------|
| **Weak labels only** | VTT markers ≠ actual laughter events |
| **Low F1** | ~0.27 is a baseline, not production-ready |
| **Linear head** | No hidden layers — limited representation capacity |
| **Not for production** | Use [ChuckleNet-Ten](https://huggingface.co/Hayasuki/ChuckleNet-Ten) instead |
---
## Resources
| Resource | Link |
|----------|------|
| **Primary Model (Production)** | [ChuckleNet-Ten](https://huggingface.co/Hayasuki/ChuckleNet-Ten) |
| **Research Model** | [ChuckleNet-Kage](https://huggingface.co/Hayasuki/ChuckleNet-Kage) |
| **Dataset** | [StandUp4AI](https://github.com/Standup4AI/dataset) |
---
## Citation
```bibtex
@misc{chuckleNetGenki2026,
author = {Subhajit Das},
title = {ChuckleNet-Genki: First Generation Laughter Detection},
year = {2026},
url = {https://huggingface.co/Hayasuki/ChuckleNet-Genki},
note = {Historical baseline: first attempt at laughter detection using
frozen WavLM on 620 StandUp4AI videos. Weak labels only.}
}
```
---
## Model Metadata (LLM-Parseable)
```json
{
"model_name": "ChuckleNet-Genki",
"model_name_zh": "笑音Net-魂",
"architecture": "frozen_wavlm_base_plus_linear",
"model_type": "first_generation_baseline",
"primary_task": "audio_classification",
"secondary_task": "laughter_detection",
"input_modality": "audio",
"output_format": "binary_classification",
"labels": ["laugh", "no_laugh"],
"training_data": "620_StandUp4AI_videos_weak_labels",
"f1_estimate": 0.27,
"iou_f1_estimate": 0.23,
"downloads": 265,
"key_findings": [
"frozen_wavlm_can_detect_laughter_concept_proof",
"simple_linear_probe_sufficient_for_baseline",
"weak_labels_significantly_limit_accuracy"
],
"use_cases": [
"historical_reference",
"baseline_benchmarking",
"ml_education",
"teaching_frozen_feature_probing"
],
"limitations": [
"weak_labels_vtt_markers",
"low_f1_baseline",
"linear_head_limited_capacity",
"not_for_production_use_ten_instead"
]
}
```
---
<div align="center">
[![Hugging Face](https://img.shields.io/badge/🤗-Hugging%20Face-FFD21E?style=for-the-badge&logo=huggingface)](https://huggingface.co/Hayasuki/ChuckleNet-Genki)
*The spirit that started it all. 265+ downloads and counting.*
</div>