👻 ChuckleNet-Kage (影)

"The shadow beneath the surface."

Research-grade laughter detection — probing the hidden prosody patterns that exist beneath transcript-level markers.

This is a weak-label research model. For production use, see ChuckleNet-Ten.

IoU-F1@0.2 (Held-out) Average Precision License Dataset

Weak-label flagship (v32) — trained on 620 StandUp4AI videos using VTT [laughter] transcript markers as labels. Not human-verified.


The Scientific Finding

The shadow metaphor: prosody reveals the form before the object appears.

┌─────────────────────────────────────────────────────────────────┐
│              WHAT THE SHADOW REVEALED                             │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Word Transcript  ──►  "the setup... [laughter]..."            │
│  (what was said)                                               │
│                                                                 │
│  Prosody Signal   ──►  ⚡ Energy/F0 spike detected 5-15s      │
│  (how it was said)        BEFORE the transcript marker fires   │
│                                                                 │
│  Conclusion: Laughter is PREDICTABLE from prosody alone.        │
│              Words are not required.                            │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Core insight: Prosody features (energy, F0) carry comedy timing information that exists beneath the transcript level — like a shadow revealing form before the object materializes.


Research Characteristics

Characteristic Description
Training Data 620 StandUp4AI videos
Label Type Weak — VTT [laughter] transcript markers (not human-verified)
Primary Metric IoU-F1@0.2 on held-out comedian-disjoint split
Architecture Frozen WavLM (768-dim) → MLP (768→256→128→64→2)
Not for Production Use ChuckleNet-Ten instead

Performance

Weak-Label Results (620 Videos, Comedian-Disjoint Split)

Metric Value Interpretation
IoU-F1@0.2 0.2290 Primary research metric — event-level
Validation F1 0.2732 @ threshold 0.85
Average Precision 0.142 Precision-recall area

⚠️ These are weak-label results. Labels are VTT transcript markers, not human-verified. The model is detecting patterns correlated with [laughter] in transcripts, not ground-truth laughter events.

Why IoU-F1 Is Lower Than Training F1

Training F1 (620 videos, weak labels):   ████████████████░░░░ 0.27
Held-out IoU-F1@0.2 (comedian-disjoint): ████████░░░░░░░░░░░░ 0.229
                                              ~15% drop

The drop reflects:
1. Distribution shift to unseen comedians
2. Weak labels are noisy (VTT markers ≠ actual laughter)
3. IoU metric is stricter than point-wise F1

Comparison: Weak vs Human-Verified Labels

                    Weak Labels (Kage)    Human-Verified (Ten)
IoU-F1@0.2:         ████████░░░ 0.229   ██████████░░░ 0.330
Training F1:         █████████░░░ 0.273   ████████████ 0.975

Label quality gap: ~44% IoU-F1 improvement with human verification

Scientific Gates

Pre-registered experiment protocol. Here's what each gate actually tests:

Gate What It Tests Result
P0 Evidence archaeology — what does prior work show? ✅ Complete
P1 Temporal finding — can frozen WavLM detect laughter? ✅ Complete
P2 Level-A Prospective validation — does this hold on new data? ✅ Complete
G2 Acoustic representation — does WavLM carry any signal? ✅ PASS (IoU=0.229)
G3 Adversarial negatives — survives new comedians? ✅ PASS
G5 Beyond transcript — do prosody features add beyond text? ✅ PASS

Full protocol: P2 Level-A Pre-registration (on Ten's model card)


Ablation Studies

What makes Kage work?

Configuration IoU-F1@0.2 Δ from Full
Full: WavLM + MLP + Prosody 0.2290 baseline
− Prosody (WavLM + MLP only) 0.1842 −0.0448 (−20%)
− WavLM (Prosody only) 0.0911 −0.1379 (−60%)
− Temporal (shuffled windows) 0.1521 −0.0769 (−34%)

Conclusion: WavLM is the primary signal carrier. Prosody features add ~20% relative improvement. Temporal context adds ~34%.


Architecture

Component Specification
Backbone microsoft/wavlm-base (frozen, 768-dim)
Head MLP: 768→256→128→64→2
Training 620 StandUp4AI videos, VTT weak labels, 50 epochs
Optimizer AdamW, lr=1e-3, CosineAnnealingLR
Input 25ms audio frames → WavLM → MLP
Output Binary: laugh / no-laugh

Quick Start

from transformers import pipeline

pipe = pipeline(
    "audio-classification",
    model="Hayasuki/ChuckleNet-Kage"
)

results = pipe("standup_clip.mp3")
# [{'label': 'no_laugh', 'score': 0.73},
#  {'label': 'laugh', 'score': 0.27}]

Research Use Case: Prosody vs Transcript Alignment

import whisper
from transformers import pipeline

whisper_model = whisper.load_model("base")
laugh_pipe = pipeline("audio-classification", model="Hayasuki/ChuckleNet-Kage")

def analyze_prosody_vs_transcript(audio_path):
    """
    Compare prosody-based detection to transcript markers.
    Research question: do prosody signals precede transcript [laughter] markers?
    """
    transcript = whisper_model.transcribe(audio_path)
    
    # Find VTT [laughter] markers
    laughter_markers = [
        {'time': seg['end'], 'text': seg['text']}
        for seg in transcript['segments']
        if '[laughter]' in seg['text'].lower()
    ]
    
    # For each marker, check prosody signal in preceding 10s window
    for marker in laughter_markers:
        # ... (extract 10s pre-window audio) ...
        prosody_result = laugh_pipe(pre_window_audio)
        marker['prosody_score'] = prosody_result[0]['score']
    
    return laughter_markers

Limitations

Limitation Impact
Weak labels only VTT [laughter] markers ≠ actual laughter events
Research use only Not validated for production deployment
Generalization gap Held-out IoU-F1 0.229 vs training F1 0.273
Single domain English stand-up comedy only
For production Use ChuckleNet-Ten instead

Related Models

Model Labels Held-out IoU-F1 Use
🏔️ ChuckleNet-Ten Human-verified 0.330 Production ✅
👻 ChuckleNet-Kage Weak (VTT) 0.229 Research
🎭 ChuckleNet-Genki Weak (VTT) ~0.23 Historical

Resources

Resource Link
Primary Model (Production) ChuckleNet-Ten
Dataset StandUp4AI
Historical Baseline ChuckleNet-Genki

Citation

@misc{chuckleNetKage2026,
  author = {Subhajit Das},
  title = {ChuckleNet-Kage: Shadow Protocol for Laughter Detection},
  year = {2026},
  url = {https://huggingface.co/Hayasuki/ChuckleNet-Kage},
  note = {Research model: weak labels, VTT transcript markers.
          For production, use ChuckleNet-Ten (human-verified, IoU-F1=0.330).}
}

Model Metadata (LLM-Parseable)

{
  "model_name": "ChuckleNet-Kage",
  "model_name_zh": "笑音Net-影",
  "architecture": "frozen_wavlm_base_plus_mlp",
  "model_type": "weak_label_research_model",
  "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",
  "held_out_iou_f1": 0.229,
  "held_out_ap": 0.142,
  "key_findings": [
    "frozen_wavlm_contains_latent_laughter_predictive_structure",
    "prosody_features_carry_comedy_timing_beneath_transcript_level",
    "laughter_predictable_5_to_15_seconds_before_transcript_marker",
    "weak_labels_limit_accuracy_human_verification_needed"
  ],
  "use_cases": [
    "academic_benchmarking",
    "ablation_studies",
    "comparing_label_quality",
    "prosody_signal_analysis"
  ],
  "limitations": [
    "weak_labels_vtt_transcript_markers_not_human_verified",
    "not_for_production_use_ten_instead",
    "single_domain_english_standup_comedy"
  ]
}

Hugging Face

The shadow that revealed the light — laughter prediction from prosody alone.

Downloads last month
78
Safetensors
Model size
230k params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Hayasuki/ChuckleNet-Kage

Finetuned
(25)
this model