alexcannan commited on
Commit
849623f
·
0 Parent(s):
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +38 -0
  2. LICENSE +21 -0
  3. LICENSE-EAT +21 -0
  4. README.md +169 -0
  5. config.json +191 -0
  6. configuration_laughter.py +50 -0
  7. eval/MANIFEST.json +554 -0
  8. eval/ami-eval-v1.clips.tsv +0 -0
  9. eval/configs/laughter-v0.1.json +27 -0
  10. eval/fsd50k-panel.clips.tsv +0 -0
  11. eval/podcastfillers-eval.clips.tsv +0 -0
  12. eval/podcastfillers-relabel.tsv +101 -0
  13. eval/probs/ami-eval-v1__eat.npy +3 -0
  14. eval/probs/ami-eval-v1__laughter-v0.1-seed0.npy +3 -0
  15. eval/probs/ami-eval-v1__laughter-v0.1-seed1.npy +3 -0
  16. eval/probs/ami-eval-v1__laughter-v0.1-seed10.npy +3 -0
  17. eval/probs/ami-eval-v1__laughter-v0.1-seed11.npy +3 -0
  18. eval/probs/ami-eval-v1__laughter-v0.1-seed12.npy +3 -0
  19. eval/probs/ami-eval-v1__laughter-v0.1-seed13.npy +3 -0
  20. eval/probs/ami-eval-v1__laughter-v0.1-seed14.npy +3 -0
  21. eval/probs/ami-eval-v1__laughter-v0.1-seed2.npy +3 -0
  22. eval/probs/ami-eval-v1__laughter-v0.1-seed3.npy +3 -0
  23. eval/probs/ami-eval-v1__laughter-v0.1-seed4.npy +3 -0
  24. eval/probs/ami-eval-v1__laughter-v0.1-seed5.npy +3 -0
  25. eval/probs/ami-eval-v1__laughter-v0.1-seed6.npy +3 -0
  26. eval/probs/ami-eval-v1__laughter-v0.1-seed7.npy +3 -0
  27. eval/probs/ami-eval-v1__laughter-v0.1-seed8.npy +3 -0
  28. eval/probs/ami-eval-v1__laughter-v0.1-seed9.npy +3 -0
  29. eval/probs/fsd50k-panel__ced-base.npy +3 -0
  30. eval/probs/fsd50k-panel__laughter-v0.1-seed0.npy +3 -0
  31. eval/probs/fsd50k-panel__laughter-v0.1-seed1.npy +3 -0
  32. eval/probs/fsd50k-panel__laughter-v0.1-seed10.npy +3 -0
  33. eval/probs/fsd50k-panel__laughter-v0.1-seed11.npy +3 -0
  34. eval/probs/fsd50k-panel__laughter-v0.1-seed12.npy +3 -0
  35. eval/probs/fsd50k-panel__laughter-v0.1-seed13.npy +3 -0
  36. eval/probs/fsd50k-panel__laughter-v0.1-seed14.npy +3 -0
  37. eval/probs/fsd50k-panel__laughter-v0.1-seed2.npy +3 -0
  38. eval/probs/fsd50k-panel__laughter-v0.1-seed3.npy +3 -0
  39. eval/probs/fsd50k-panel__laughter-v0.1-seed4.npy +3 -0
  40. eval/probs/fsd50k-panel__laughter-v0.1-seed5.npy +3 -0
  41. eval/probs/fsd50k-panel__laughter-v0.1-seed6.npy +3 -0
  42. eval/probs/fsd50k-panel__laughter-v0.1-seed7.npy +3 -0
  43. eval/probs/fsd50k-panel__laughter-v0.1-seed8.npy +3 -0
  44. eval/probs/fsd50k-panel__laughter-v0.1-seed9.npy +3 -0
  45. eval/probs/podcastfillers-eval__gillick.npy +3 -0
  46. eval/probs/podcastfillers-eval__laughter-v0.1-seed0.npy +3 -0
  47. eval/probs/podcastfillers-eval__laughter-v0.1-seed1.npy +3 -0
  48. eval/probs/podcastfillers-eval__laughter-v0.1-seed10.npy +3 -0
  49. eval/probs/podcastfillers-eval__laughter-v0.1-seed11.npy +3 -0
  50. eval/probs/podcastfillers-eval__laughter-v0.1-seed12.npy +3 -0
.gitattributes ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ figures/paperfig-arch.png filter=lfs diff=lfs merge=lfs -text
37
+ figures/results-table.pdf filter=lfs diff=lfs merge=lfs -text
38
+ figures/results-table.png filter=lfs diff=lfs merge=lfs -text
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Zencastr
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
LICENSE-EAT ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Wenxi Chen
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
README.md ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ library_name: transformers
4
+ pipeline_tag: audio-classification
5
+ base_model: worstchan/EAT-base_epoch30_finetune_AS2M
6
+ base_model_relation: finetune
7
+ language:
8
+ - multilingual
9
+ tags:
10
+ - audio
11
+ - sound-event-detection
12
+ - laughter-detection
13
+ - podcast
14
+ - onnx
15
+ metrics:
16
+ - average_precision
17
+ ---
18
+
19
+ # Zencastr Laughter Detection
20
+
21
+ Detect laughter events in close-microphone conversational speech. Built at [Zencastr](https://zencastr.com) for podcast audio and open-sourced as a tool for creators.
22
+ ## Usage
23
+
24
+ Whole audio in, events out. Input can use any format ffmpeg can decode (path, URL, bytes, array) at any length or sample rate.
25
+ ```python
26
+ from transformers import pipeline
27
+
28
+ pipe = pipeline(
29
+ "laughter-detection",
30
+ model="zencastr/laughter-detection",
31
+ trust_remote_code=True,
32
+ device=0,
33
+ )
34
+
35
+ pipe("episode.mp3")
36
+ # {
37
+ # "duration_s": 3591.4,
38
+ # "events": [
39
+ # {
40
+ # "start": 812.16,
41
+ # "end": 814.4,
42
+ # "score": 0.997,
43
+ # },
44
+ # ...
45
+ # ],
46
+ # "operating_point": {
47
+ # "name": "high_precision",
48
+ # "threshold": 0.99,
49
+ # "min_duration_s": 0.2,
50
+ # "merge_gap_s": 1.0
51
+ # },
52
+ # }
53
+ ```
54
+
55
+ From the model repository, run the command-line scripts with `uv`:
56
+
57
+ ```bash
58
+ uv run events.py episode.mp3 --operating-point max_f1 --pretty # PyTorch
59
+ uv run events_onnx.py episode.mp3 # ONNX
60
+ ```
61
+
62
+ For clip-level classification of audio up to 4 s:
63
+
64
+ ```python
65
+ clf = pipeline(
66
+ "audio-classification",
67
+ model="zencastr/laughter-detection",
68
+ trust_remote_code=True,
69
+ )
70
+ clf("clip.wav")
71
+ # [
72
+ # {"label": "laughter", "score": 0.93},
73
+ # {"label": "no_laughter", "score": 0.07}
74
+ # ]
75
+ ```
76
+
77
+ ## Inference
78
+
79
+ <img src="figures/inference_simple.svg" alt="Inference architecture" width="720">
80
+
81
+ Audio **x** is converted to a 128-bin log-mel spectrogram **X** at 16 kHz using 25 ms Hann windows and a 10 ms hop. The encoder **f** and laughter heads **g** then produce frame and clip probabilities. **φ** denotes the LoRA adapters. The model produces frame probabilities every 160 ms from 4 s windows evaluated with a 2 s hop. Scores from overlapping windows are combined by taking their maximum, then converted into events with approximate timestamps using a threshold, minimum duration, and merge gap. View the frame probabilities and tune the event parameters as follows:
82
+
83
+ ```python
84
+ pipe("episode.mp3", threshold=0.9, return_frame_probs=True)
85
+ ```
86
+
87
+ The `audio-classification` pipeline instead returns one attention-pooled probability for the entire clip.
88
+
89
+ ## Operating points
90
+
91
+ Operating points are named presets for decoding frame probabilities into events.
92
+
93
+ ```python
94
+ pipe("episode.mp3", operating_point="max_f1")
95
+ ```
96
+
97
+ The presets were selected on ~17 h of internal podcast audio from 21 recordings using a 0.2 s matching tolerance. `high_precision` maximizes recall at precision ≥ 0.88 and is recommended when false alarms are costly; `high_recall` reaches recall 0.88 and is recommended when missed laughter is costly; `max_f1` maximizes F1 and provides a balance between precision and recall.
98
+
99
+ | Preset | Threshold | Min duration | Merge gap | Precision | Recall | F1 | Onset error |
100
+ |---|---:|---:|---:|---:|---:|---:|---:|
101
+ | `high_precision` (default) | 0.99 | 0.2 s | 1.0 s | 0.88 | 0.70 | 0.78 | 1.6 s |
102
+ | `max_f1` | 0.97 | 0.16 s | 1.0 s | 0.80 | 0.77 | 0.78 | 1.6 s |
103
+ | `high_recall` | 0.69 | 0.2 s | 0.16 s | 0.59 | 0.88 | 0.70 | 1.4 s |
104
+
105
+ ## Evaluation
106
+
107
+ Our model achieves the highest mean clip-level average precision (AP) on three conversational benchmarks while maintaining a reasonable false positive rate (FPR) on other non-speech vocalizations.
108
+
109
+ | Model | Podcast holdout AP ↑ | PodcastFillers AP ↑ | AMI AP ↑ | VocalSound AP ↑ | FSD50K FPR ↓ |
110
+ |---|---:|---:|---:|---:|---:|
111
+ | **Ours** | **0.973 ± 0.002** | 0.833 ± 0.011 | **0.948 ± 0.003** | 0.955 ± 0.005 | 15 ± 1% |
112
+ | EAT | 0.948 ± 0.018 | 0.784 ± 0.049 | 0.923 ± 0.024 | 0.957 ± 0.013 | 8 ± 3% |
113
+ | SenseVoice-S | 0.967 ± 0.012 | 0.771 ± 0.044 | 0.898 ± 0.030 | 0.935 ± 0.017 | 17 ± 4% |
114
+ | CED-base | 0.950 ± 0.019 | 0.811 ± 0.060 | 0.854 ± 0.039 | 0.970 ± 0.010 | 4 ± 2% |
115
+ | CED-tiny | 0.933 ± 0.024 | 0.798 ± 0.066 | 0.856 ± 0.032 | 0.956 ± 0.012 | 7 ± 2% |
116
+ | BEATs | 0.908 ± 0.023 | 0.748 ± 0.064 | 0.842 ± 0.030 | 0.927 ± 0.017 | 15 ± 4% |
117
+ | Gillick et al. | 0.951 ± 0.019 | 0.819 ± 0.042 | 0.853 ± 0.031 | 0.717 ± 0.031 | 48 ± 5% |
118
+
119
+ Our row reports mean ± SD across multiple seeds while baselines rows report the performance of a single checkpoint ± the 95% bootstrap half-width. FSD50K FPR measures false positives on 1,136 clips of non-laughter vocalizations (coughing, sneezing, breathing, gasping, sighing, crying, and burping) at model-specific thresholds yielding 90% recall. CED, EAT, and BEATs use their AudioSet heads; SenseVoice uses its utterance-level laughter tag.
120
+
121
+ ## Inference speed
122
+
123
+ Real-time factors measured on an NVIDIA L4 using the same 1,800 s of audio, batch 64, and the median of nine passes. All models use fp16 and PyTorch except ours, which uses ONNX opset 23 with fused attention. Timings include windowing and host-to-device transfer, and exclude model loading, audio decoding, and event decoding.
124
+
125
+ | Model | Parameters | Window / hop | × realtime ↑ |
126
+ |---|---:|---:|---:|
127
+ | CED-tiny | 5.5 M | 4 s / 2 s | 4,540× |
128
+ | CED-base | 85.7 M | 4 s / 2 s | 2,145× |
129
+ | **Ours (ONNX)** | 90.7 M | 4 s / 2 s | **1,355×** |
130
+ | EAT (PyTorch) | 90.4 M | 4 s / 2 s | 1,032× |
131
+ | BEATs | 90.7 M | 2 s / 1 s | 410× |
132
+ | SenseVoice-Small | 234.0 M | 4 s / 2 s | 328× |
133
+ | Gillick et al. | 0.8 M | 1 s / 23 ms | 46× |
134
+
135
+
136
+ ## Files
137
+
138
+ | File | Purpose |
139
+ |---|---|
140
+ | `model.safetensors` | PyTorch weights with LoRA merged and the AudioSet teacher head removed. Loads through `AutoModelForAudioClassification` / `AutoModelForAudioFrameClassification`. |
141
+ | `model.onnx` | Float32, opset 17. Takes 16 kHz waveforms, including the mel front end in the graph. Runs with onnxruntime + numpy on CPU or GPU. |
142
+ | `model_fp16.onnx` | Float16 encoder, opset 17, for GPU inference. |
143
+ | `model_fp16_opset23.onnx` | Float16 with native ONNX Attention; onnxruntime ≥ 1.22, GPU. Used for the throughput result above. |
144
+ | `export.json` | ONNX input/output contracts and parity checks against PyTorch. |
145
+ | `laughter_core.py` | Shared numpy windowing, stitching, and event decoding. |
146
+
147
+ ## Provenance and licenses
148
+
149
+ Model and code: MIT ([LICENSE](LICENSE)). Base encoder: [`worstchan/EAT-base_epoch30_finetune_AS2M`](https://huggingface.co/worstchan/EAT-base_epoch30_finetune_AS2M), revision `60d61e8b`, weights SHA-256 `5fa59385…69fff1b`; MIT, © 2024 Wenxi Chen ([LICENSE-EAT](LICENSE-EAT)). The base encoder was pretrained and fine-tuned on AudioSet.
150
+
151
+ Adaptation used Zencastr platform audio collected under terms permitting model training. Public datasets were used only for evaluation and monitoring during adaptation. Dataset licenses: AudioSet annotations (CC BY 4.0), AMI (CC BY 4.0), VocalSound (CC BY-SA 4.0), PodcastFillers (CC BY-NC), and FSD50K (per-clip CC licenses).
152
+
153
+ ## Citation
154
+
155
+ ```bibtex
156
+ @software{zencastr2026laughter,
157
+ title = {Zencastr Laughter Detection},
158
+ author = {{Zencastr}},
159
+ year = {2026},
160
+ url = {https://huggingface.co/zencastr/laughter-detection}
161
+ }
162
+
163
+ @article{chen2024eat,
164
+ title = {EAT: Self-Supervised Pre-Training with Efficient Audio Transformer},
165
+ author = {Chen, Wenxi and Liang, Yuzhe and Ma, Ziyang and Zheng, Zhisheng and Chen, Xie},
166
+ journal = {arXiv preprint arXiv:2401.03497},
167
+ year = {2024}
168
+ }
169
+ ```
config.json ADDED
@@ -0,0 +1,191 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_type": "eat-laughter",
3
+ "architectures": [
4
+ "LaughterForAudioFrameClassification"
5
+ ],
6
+ "auto_map": {
7
+ "AutoConfig": "configuration_laughter.LaughterConfig",
8
+ "AutoModel": "modeling_laughter.LaughterModel",
9
+ "AutoModelForAudioClassification": "modeling_laughter.LaughterForAudioClassification",
10
+ "AutoModelForAudioFrameClassification": "modeling_laughter.LaughterForAudioFrameClassification"
11
+ },
12
+ "custom_pipelines": {
13
+ "laughter-detection": {
14
+ "impl": "pipeline_laughter.LaughterDetectionPipeline",
15
+ "pt": [
16
+ "AutoModelForAudioFrameClassification"
17
+ ],
18
+ "tf": [],
19
+ "type": "audio"
20
+ }
21
+ },
22
+ "hidden_size": 768,
23
+ "num_hidden_layers": 12,
24
+ "num_attention_heads": 12,
25
+ "mlp_ratio": 4.0,
26
+ "patch_size": 16,
27
+ "num_mel_bins": 128,
28
+ "max_time_patches": 768,
29
+ "layer_norm_eps": 1e-06,
30
+ "qkv_bias": true,
31
+ "sample_rate": 16000,
32
+ "mel_frame_shift_s": 0.01,
33
+ "window_s": 4.0,
34
+ "window_hop_s": 2.0,
35
+ "default_operating_point": "high_precision",
36
+ "operating_points": {
37
+ "high_precision": {
38
+ "threshold": 0.99,
39
+ "min_duration_s": 0.2,
40
+ "merge_gap_s": 1.0
41
+ },
42
+ "high_recall": {
43
+ "threshold": 0.69,
44
+ "min_duration_s": 0.2,
45
+ "merge_gap_s": 0.16
46
+ },
47
+ "max_f1": {
48
+ "threshold": 0.97,
49
+ "min_duration_s": 0.16,
50
+ "merge_gap_s": 1.0
51
+ }
52
+ },
53
+ "id2label": {
54
+ "0": "no_laughter",
55
+ "1": "laughter"
56
+ },
57
+ "label2id": {
58
+ "no_laughter": 0,
59
+ "laughter": 1
60
+ },
61
+ "torch_dtype": "float32",
62
+ "release": {
63
+ "_comment": "v0.1 - SELECTED ARTIFACT is seed 4 of the 15-seed release family keep1-tnw4-lora-eat (the v0.1 LoRA recipe with the base checkpoint as teacher: keep-nsv gradient projection and teacher-weighted negatives). Selection rule, written before looking at test surfaces for this family: among seeds with validation AP >= 0.980 and event recall at the precision-first operating point in the family's upper band (>= 0.69; three seeds fell below on both criteria), the seed with the best event F1 at that point whose AP on every surface lies within 1.5 family standard deviations of the family mean. Every value below was read from the built model or the run's own artifacts.",
64
+ "version": "0.1.0",
65
+ "encoder": {
66
+ "base_model": "worstchan/EAT-base_epoch30_finetune_AS2M",
67
+ "base_model_revision": "60d61e8b2e9e5ba3be6860285de80cb7d625ccbb",
68
+ "base_model_weights_sha256": "5fa59385650eeb7b6c74414461306e055d943523cd7206c181e2d329969fff1b",
69
+ "base_model_license": "mit",
70
+ "_base_model_note": "The revision and hash pins are functional, not decoration: this repo is loaded with trust_remote_code, so an unpinned reference would execute whatever its author last pushed. Licence chain verified against the recorded provenance: HF metadata MIT + the upstream GitHub MIT LICENSE ((c) 2024 Wenxi Chen, read 2026-08-31, mirror confirmed by the authors' own README link), and the base checkpoint's AudioSet-2M fine-tuning data is CC BY 4.0 with attribution REQUIRED - carried in the card's Attribution section.",
71
+ "frozen": true,
72
+ "lora": {
73
+ "rank": 8,
74
+ "alpha": 16,
75
+ "dropout": 0.05,
76
+ "target_modules": [
77
+ "qkv"
78
+ ],
79
+ "injected_layers": 12,
80
+ "scaling_alpha_over_rank": 2.0,
81
+ "trainable_params": {
82
+ "head": 1538,
83
+ "encoder_lora": 294912,
84
+ "total": 296450
85
+ }
86
+ },
87
+ "embed_dim_verify": 768,
88
+ "depth_verify": 12,
89
+ "num_heads_verify": 12
90
+ },
91
+ "audio": {
92
+ "sample_rate": 16000,
93
+ "mono": true,
94
+ "n_mels_verify": 128,
95
+ "win_length_verify": 400,
96
+ "hop_length_verify": 160,
97
+ "normalize": "(x - -4.268) / (4.569 * 2)",
98
+ "_features": "torchaudio.compliance.kaldi.fbank, htk_compat=True, use_energy=False, window_type='hanning', num_mel_bins=128, dither=0.0, frame_shift=10 — then the normalize above. Front-end is Python, deliberately outside the ONNX graph."
99
+ },
100
+ "head": {
101
+ "type": "frame_logits_attention_pooling",
102
+ "frame_hop_s": 0.16,
103
+ "pooling": "attention",
104
+ "num_classes": 1,
105
+ "_frame_hop_s_derivation": "16 mel frames per patch x 10 ms hop; measured, not assumed"
106
+ },
107
+ "inference": {
108
+ "window_s": 4.0,
109
+ "window_hop_s": 2.0,
110
+ "min_input_s": 0.175,
111
+ "pad_short_inputs": true,
112
+ "frame_prob_stitching": "max_over_overlapping_windows",
113
+ "_decoder_note": "min_duration and merge_gap are per operating point, not global - calibration selects a different pair for each (high_precision favours longer minimum duration and wider merging, high_recall the opposite). See operating_points below.",
114
+ "event_score": "peak_frame_probability",
115
+ "_min_input_s_derivation": "2800 samples at 16 kHz — the shortest input that runs, found by sweeping in 10 ms steps. Matches the analytic bound: 400 window samples + 15 x 160 hop = 16 mel frames = one patch."
116
+ },
117
+ "calibration": {
118
+ "clip_level": null,
119
+ "_note": "No clip-level calibration ships. Clip probabilities are the MIL-pooled head output, uncalibrated. Fitting a temperature or isotonic map on val would inherit val's duration leak, so the shipped operating points are event-level only — see operating_points._clip_level_not_shipped."
120
+ },
121
+ "operating_points": {
122
+ "default": "event_high_precision",
123
+ "_level_note": "clip_* threshold MIL-pooled clip probabilities; event_* threshold frame probabilities and decode to events. Different quantities on different scales — never substitute one for the other.",
124
+ "event_high_precision": {
125
+ "threshold": 0.99,
126
+ "min_duration_s": 0.2,
127
+ "merge_gap_s": 1.0,
128
+ "precision": 0.881,
129
+ "recall": 0.7,
130
+ "event_f1": 0.78,
131
+ "onset_mae_s": 1.61
132
+ },
133
+ "event_high_recall": {
134
+ "threshold": 0.69,
135
+ "min_duration_s": 0.2,
136
+ "merge_gap_s": 0.16,
137
+ "precision": 0.587,
138
+ "recall": 0.88,
139
+ "event_f1": 0.704,
140
+ "onset_mae_s": 1.35,
141
+ "_grid_limited": "min_duration_s sits at the smallest value swept, so a better setting may exist below 0.16 s — this is the best of what was looked at."
142
+ },
143
+ "_clip_level_not_shipped": "Deliberately absent. Clip-level thresholds are fitted on validation data, where clip duration leaks the label (duration alone scores AP 0.566 vs a 0.378 base rate), and that cue does not exist at inference. Use the event operating points.",
144
+ "_calibrated_on": "16.85 h of internal audit audio, 3276 decoder settings swept jointly (threshold x min_duration x merge_gap). Tolerance 0.2 s. high_precision is the highest-recall setting with precision >= 0.88, high_recall the setting reaching recall 0.88, max_f1 the best F1, all against the corpus's labelled laughs (precision is a lower bound). Meetings figures come from AMI.",
145
+ "event_max_f1": {
146
+ "threshold": 0.97,
147
+ "min_duration_s": 0.16,
148
+ "merge_gap_s": 1.0,
149
+ "precision": 0.798,
150
+ "recall": 0.766,
151
+ "event_f1": 0.782,
152
+ "onset_mae_s": 1.55
153
+ }
154
+ },
155
+ "release_contents": {
156
+ "_note": "These files back the card's claim that the significance analyses can be rerun without a GPU.",
157
+ "eval/probs/": "per-clip probabilities, one .npy per (surface, model) - 48 files, public surfaces only",
158
+ "eval/<surface>.clips.tsv": "clip metadata (id, target, class, recording, language, duration) for the 3 public surfaces",
159
+ "eval/MANIFEST.json": "bundle provenance: family, members, bootstrap params, code revision",
160
+ "eval/configs/": "the family's shared training config, shipped once as laughter-v0.1.json (the 15 runs are seeds 0-14 of it)",
161
+ "_internal_surface": "annotation-eval-v5 (2,297 clips, 21 recordings; digest 2dcdba95c052bbde), the rebuilt internal holdout in which each laughter clip is cut from the annotated speaker's track. Per-clip data for it is not shipped."
162
+ },
163
+ "provenance": {
164
+ "train_data_hash": "d63ba2795f597baa",
165
+ "training_commit": "e4db7af66b151e230c6075e28253302b9b48ff6e",
166
+ "_train_data_hash_note": "sha256-derived digest over the training-determining columns of the training set (9600 rows, 6694/1366/1540 train/val/test). Recomputed on the set the run trained from; equal to the digest of the original labeled-v8v9 build.",
167
+ "_training_commit_note": "Recorded by train.py at run time. The tree was dirty at that commit: the uncommitted files were training/hf_convert.py (accept a full-fine-tune checkpoint) and the hq5a job scripts, none of them on the training path."
168
+ },
169
+ "total_params": 89974274,
170
+ "_total_params_note": "Tensors in model.safetensors: the encoder with LoRA folded in plus the 1,538-parameter laughter head. The training checkpoint held 90,675,985, the extra being the unmerged LoRA factors and the AudioSet classifier, neither of which ships.",
171
+ "_open": [],
172
+ "training": {
173
+ "recipe": {
174
+ "adapt": "lora",
175
+ "epochs": 60,
176
+ "patience": 8,
177
+ "batch_size": 32,
178
+ "head_lr": 0.001,
179
+ "encoder_lr": 1e-05,
180
+ "keep_nsv": 1.0,
181
+ "teacher_neg_weight": 4.0,
182
+ "seed": 4,
183
+ "family": "keep1-tnw4-lora-eat",
184
+ "family_size": 15
185
+ },
186
+ "teacher": "The base checkpoint itself, read through its own AudioSet classifier (the student with adapters off; no second model, no additional data). Two uses: (1) a non-laughter clip's loss is weighted 1 + 4 x the teacher's strongest posterior over cough, sneeze, throat clearing, sniff, breathing, gasp, sigh, burp and hiccup; (2) the component of each encoder step that would raise a BCE between the student's and the teacher's AudioSet logits on 13 non-speech classes is removed (A-GEM projection, alpha 1). Measured effect vs the same recipe without the teacher: laughter AP unchanged on every surface; laugh-vs-cough AUROC 0.939 -> 0.956 on VocalSound and 0.861 -> 0.876 on AMI; FSD50K non-laughter vocalisations called laughter at 90% laughter recall 19% -> 15%.",
187
+ "monitoring_only": "An FSD50K panel (4,269 dev clips with cough/sneeze/breathing/crying/... labels, CC licences mixed) is scored every epoch through the frozen AudioSet head to detect forgetting. No FSD50K audio is trained on; the trainer refuses to start if a panel clip is also a training clip.",
188
+ "training_data": "9,600 internal clips (labeled-v8v9), digest below. No public dataset was used for training."
189
+ }
190
+ }
191
+ }
configuration_laughter.py ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Configuration for the zencastr/laughter-detection model (EAT-base encoder + MIL laughter head)."""
2
+ from transformers import PreTrainedConfig
3
+
4
+
5
+ class LaughterConfig(PreTrainedConfig):
6
+ model_type = "eat-laughter"
7
+
8
+ def __init__(
9
+ self,
10
+ hidden_size: int = 768,
11
+ num_hidden_layers: int = 12,
12
+ num_attention_heads: int = 12,
13
+ mlp_ratio: float = 4.0,
14
+ patch_size: int = 16,
15
+ num_mel_bins: int = 128,
16
+ max_time_patches: int = 768,
17
+ layer_norm_eps: float = 1e-6,
18
+ qkv_bias: bool = True,
19
+ sample_rate: int = 16000,
20
+ mel_frame_shift_s: float = 0.01,
21
+ window_s: float = 4.0,
22
+ window_hop_s: float = 2.0,
23
+ default_operating_point: str = "high_precision",
24
+ operating_points: dict | None = None,
25
+ **kwargs,
26
+ ):
27
+ self.hidden_size = hidden_size
28
+ self.num_hidden_layers = num_hidden_layers
29
+ self.num_attention_heads = num_attention_heads
30
+ self.mlp_ratio = mlp_ratio
31
+ self.patch_size = patch_size
32
+ self.num_mel_bins = num_mel_bins
33
+ self.max_time_patches = max_time_patches
34
+ self.layer_norm_eps = layer_norm_eps
35
+ self.qkv_bias = qkv_bias
36
+ self.sample_rate = sample_rate
37
+ self.mel_frame_shift_s = mel_frame_shift_s
38
+ self.window_s = window_s
39
+ self.window_hop_s = window_hop_s
40
+ self.default_operating_point = default_operating_point
41
+ # threshold / min_duration_s / merge_gap_s per named point; the decoder needs all three
42
+ self.operating_points = operating_points or {}
43
+ kwargs.setdefault("id2label", {0: "no_laughter", 1: "laughter"})
44
+ kwargs.setdefault("label2id", {"no_laughter": 0, "laughter": 1})
45
+ super().__init__(**kwargs)
46
+
47
+ @property
48
+ def frame_hop_s(self) -> float:
49
+ """One output frame per time patch: patch_size mel frames x the mel frame shift (0.16 s)."""
50
+ return self.patch_size * self.mel_frame_shift_s
eval/MANIFEST.json ADDED
@@ -0,0 +1,554 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bootstrap": {
3
+ "n": 2000,
4
+ "seed": 0,
5
+ "unit": "recording"
6
+ },
7
+ "code_dirty": [
8
+ "hf-release-v0.1/config.json",
9
+ "training/hf_convert.py",
10
+ "training/hq5a_cough_eval.sbatch",
11
+ "training/hq5a_evalsets.sbatch",
12
+ "training/release_gate.py",
13
+ "hf-release-v0.1/release-manifest.json",
14
+ "training/hq5a_event_calib.sbatch"
15
+ ],
16
+ "code_revision": "e4db7af66b151e230c6075e28253302b9b48ff6e",
17
+ "family": "laughter-v0.1",
18
+ "members": [
19
+ "laughter-v0.1-seed0",
20
+ "laughter-v0.1-seed1",
21
+ "laughter-v0.1-seed10",
22
+ "laughter-v0.1-seed11",
23
+ "laughter-v0.1-seed12",
24
+ "laughter-v0.1-seed13",
25
+ "laughter-v0.1-seed14",
26
+ "laughter-v0.1-seed2",
27
+ "laughter-v0.1-seed3",
28
+ "laughter-v0.1-seed4",
29
+ "laughter-v0.1-seed5",
30
+ "laughter-v0.1-seed6",
31
+ "laughter-v0.1-seed7",
32
+ "laughter-v0.1-seed8",
33
+ "laughter-v0.1-seed9"
34
+ ],
35
+ "reproduce": "For each public surface: AP of each probs/<surface>__laughter-v0.1-seedN.npy against target>=0.5 in <surface>.clips.tsv, mean over the 15 seeds = family_mean; margin = family_mean - reference AP; CI by paired recording (speaker on VocalSound) bootstrap, 2000 resamples, seed 0.",
36
+ "rule": "internal-and-any-public",
37
+ "set_digests": {
38
+ "ami-eval-v1": "1ab59b11012d18d9",
39
+ "annotation-eval-v5": "2dcdba95c052bbde",
40
+ "podcastfillers-eval": "e4deca38c6380c35",
41
+ "public-vocalsound": "c4557271c7f68f70",
42
+ "fsd50k-panel": "b55cd8789c24fda8"
43
+ },
44
+ "table": {
45
+ "ami-eval-v1": {
46
+ "ci_hi": 0.03942520109963582,
47
+ "ci_lo": 0.012154065156311903,
48
+ "family_mean": 0.9483739882117678,
49
+ "floor_ci_upper": 0.0039598598827272615,
50
+ "floor_sigma": 0.002556051282820607,
51
+ "label": "AMI",
52
+ "margin": 0.02538138623377517,
53
+ "member_ap": [
54
+ 0.9507902186015077,
55
+ 0.9500519992061698,
56
+ 0.9452210675451327,
57
+ 0.9503056961627866,
58
+ 0.9508894430969833,
59
+ 0.9470331036343588,
60
+ 0.9450138166749027,
61
+ 0.9465480039960334,
62
+ 0.9513989118555961,
63
+ 0.9483455133944823,
64
+ 0.9432426745514125,
65
+ 0.9511137070448046,
66
+ 0.9483085823703894,
67
+ 0.9485920621237138,
68
+ 0.9487550229182443
69
+ ],
70
+ "n": 15,
71
+ "n_clips": 3082,
72
+ "n_recordings": 24,
73
+ "reference_ap": 0.9229926019779926,
74
+ "reference_model": "eat"
75
+ },
76
+ "annotation-eval-v5": {
77
+ "ci_hi": 0.023578607063105828,
78
+ "ci_lo": -0.014470678820449834,
79
+ "family_mean": 0.8996943593326668,
80
+ "floor_ci_upper": 0.004720526387522345,
81
+ "floor_sigma": 0.003047054159932776,
82
+ "label": "internal",
83
+ "margin": 0.0028852774625475197,
84
+ "member_ap": [
85
+ 0.8975475415661825,
86
+ 0.9039947028281456,
87
+ 0.8983932783475506,
88
+ 0.8993346068750109,
89
+ 0.9005183386530095,
90
+ 0.9016603462847035,
91
+ 0.9028680945100267,
92
+ 0.8955774413407963,
93
+ 0.9002877424905875,
94
+ 0.9031921793787044,
95
+ 0.8952398854096171,
96
+ 0.9011704571931498,
97
+ 0.8995806005577214,
98
+ 0.8942340859359875,
99
+ 0.9018160886188078
100
+ ],
101
+ "n": 15,
102
+ "n_clips": 2297,
103
+ "n_recordings": 21,
104
+ "reference_ap": 0.8968090818701193,
105
+ "reference_model": "ced-base",
106
+ "_per_clip": "not shipped (internal audio)"
107
+ },
108
+ "podcastfillers-eval": {
109
+ "ci_hi": 0.050521526766975876,
110
+ "ci_lo": -0.02075922278013193,
111
+ "family_mean": 0.8333527146573345,
112
+ "floor_ci_upper": 0.01673321979650875,
113
+ "floor_sigma": 0.010801131654468506,
114
+ "label": "PF",
115
+ "margin": 0.014778337531855201,
116
+ "member_ap": [
117
+ 0.8344361951641851,
118
+ 0.841598928384278,
119
+ 0.8411140826012734,
120
+ 0.8366294402860901,
121
+ 0.8337691285784827,
122
+ 0.8382277485746962,
123
+ 0.8403275294236768,
124
+ 0.831845088772049,
125
+ 0.8383355800012807,
126
+ 0.8350686755602265,
127
+ 0.7975593280141196,
128
+ 0.8376021852481,
129
+ 0.8343551388336643,
130
+ 0.8279070269767151,
131
+ 0.8315146434411776
132
+ ],
133
+ "n": 15,
134
+ "n_clips": 10398,
135
+ "n_recordings": 20,
136
+ "reference_ap": 0.8185743771254793,
137
+ "reference_model": "gillick"
138
+ },
139
+ "public-vocalsound": {
140
+ "ci_hi": -0.005603668917087099,
141
+ "ci_lo": -0.02523479335876062,
142
+ "family_mean": 0.9550608658482184,
143
+ "floor_ci_upper": 0.007326952674220729,
144
+ "floor_sigma": 0.004729477137259021,
145
+ "label": "VS",
146
+ "margin": -0.015235673719981468,
147
+ "member_ap": [
148
+ 0.9520376579742674,
149
+ 0.9552183790146299,
150
+ 0.9540970381377161,
151
+ 0.9509495673970976,
152
+ 0.9519229996151687,
153
+ 0.9537347287207015,
154
+ 0.9557549955025102,
155
+ 0.9619265200931599,
156
+ 0.9544285936941963,
157
+ 0.9517720709172127,
158
+ 0.9652754551778516,
159
+ 0.9524594157733894,
160
+ 0.9488156226153927,
161
+ 0.9624520243219058,
162
+ 0.9550679187680756
163
+ ],
164
+ "n": 15,
165
+ "n_clips": 3591,
166
+ "n_recordings": 574,
167
+ "reference_ap": 0.9702965395681998,
168
+ "reference_model": "ced-base"
169
+ }
170
+ },
171
+ "tolerance": {
172
+ "ap": 1e-12,
173
+ "ci": 0.005
174
+ },
175
+ "verdict": "FAIL: internal",
176
+ "z_whole_ci": {
177
+ "AMI": 6.409667762358887,
178
+ "PF": 0.8831735739787857,
179
+ "VS": -2.0794011367900485,
180
+ "internal": 0.6112194331068893
181
+ },
182
+ "curation": {
183
+ "by": "release packaging",
184
+ "date": "2026-09-05",
185
+ "note": "Public bundle, curated from the internal eval bundle: the private internal surface's per-clip data is excluded (its digest and aggregate row are kept so the card's internal row stays auditable), run names are mapped to release naming (laughter-v0.1-seed0..14, order preserved against the member_ap arrays), the fifteen per-seed configs ship once as configs/laughter-v0.1.json (runs are seeds 0-14 of it), and operational fields are removed from that config. eval/podcastfillers-relabel.tsv records the 100 PodcastFillers non-laughter clips both model families scored above 0.9 and the listening verdict on each (97 contain audible laughter); the table above uses the published labels. 2026-09-09: the FSD50K NSV panel added (fsd50k-panel.clips.tsv, probs for the 15 seeds and ced-base); its column is defined under fsd50k_panel. 2026-09-10: the two no-teacher arms retrained on seeds 0-14 so every trained row shares the same seeds; card_table holds every cell."
186
+ },
187
+ "fsd50k_panel": {
188
+ "label": "FSD50K NSV",
189
+ "what": "Share of FSD50K non-laughter vocalisation clips (any of cough, sneeze, breathing, gasp, sigh, crying, burping; no Laughter label) scored as laughter, at the threshold where the model recovers 90% of the panel's Laughter clips. Each clip's score is the max over its 4 s windows (hop 4 s). Lower is better.",
190
+ "n_laughter": 933,
191
+ "n_nsv": 1136,
192
+ "n_clips": 4269,
193
+ "recall": 0.9,
194
+ "family_mean": 0.1459507042253521,
195
+ "family_sd": 0.013560746885563212,
196
+ "member_nsv_fp": [
197
+ 0.14964788732394366,
198
+ 0.15316901408450703,
199
+ 0.1267605633802817,
200
+ 0.13556338028169015,
201
+ 0.1637323943661972,
202
+ 0.13468309859154928,
203
+ 0.13556338028169015,
204
+ 0.1619718309859155,
205
+ 0.12147887323943662,
206
+ 0.13908450704225353,
207
+ 0.16549295774647887,
208
+ 0.14964788732394366,
209
+ 0.15933098591549297,
210
+ 0.14788732394366197,
211
+ 0.14524647887323944
212
+ ],
213
+ "reference_model": "ced-base",
214
+ "reference_nsv_fp": 0.03609154929577465,
215
+ "others": {
216
+ "eat-lora-no-teacher": {
217
+ "nsv_fp": 0.1931338028169014,
218
+ "sd": 0.01694497340594801,
219
+ "n": 15
220
+ },
221
+ "eat-full-finetune-teacher": {
222
+ "nsv_fp": 0.17951877934272303,
223
+ "sd": 0.04972447014311274,
224
+ "n": 15
225
+ },
226
+ "eat-full-finetune-no-teacher": {
227
+ "nsv_fp": 0.26085680751173707,
228
+ "sd": 0.030258187344898973,
229
+ "n": 15
230
+ },
231
+ "eat": {
232
+ "nsv_fp": 0.0801056338028169,
233
+ "n": 1
234
+ },
235
+ "ced-tiny": {
236
+ "nsv_fp": 0.07130281690140845,
237
+ "n": 1
238
+ },
239
+ "beats": {
240
+ "nsv_fp": 0.14524647887323944,
241
+ "n": 1
242
+ },
243
+ "gillick": {
244
+ "nsv_fp": 0.48327464788732394,
245
+ "n": 1
246
+ }
247
+ },
248
+ "reproduce": "s = probs/fsd50k-panel__<model>.npy aligned with fsd50k-panel.clips.tsv; thr = the 840th highest score among laughter==1 rows (ceil(0.9*933)); nsv_fp = mean(s[nsv==1] >= thr). Clips are FSD50K dev audio (train and val folds) that carry panel labels; none of it is training data."
249
+ },
250
+ "card_table": {
251
+ "note": "Every cell of the card's results table. Trained rows: mean and sd over seeds 0-14. Off-the-shelf rows: value and 95% bootstrap half-width (2000 draws, seed 0) over recordings (speakers on VocalSound, clips on the FSD50K panel). Built by training.card_results.",
252
+ "columns": [
253
+ "annotation-eval-v5",
254
+ "podcastfillers-eval",
255
+ "ami-eval-v1",
256
+ "public-vocalsound",
257
+ "fsd50k-panel"
258
+ ],
259
+ "panel_recall": 0.9,
260
+ "bootstrap": 2000,
261
+ "n_laughter": 933,
262
+ "n_nsv": 1136,
263
+ "rows": {
264
+ "**this release**: EAT + LoRA, teacher-trained": {
265
+ "annotation-eval-v5": {
266
+ "value": 0.8996943593326668,
267
+ "spread": 0.0029931705939927142,
268
+ "spread_kind": "seed sd",
269
+ "n": 15
270
+ },
271
+ "podcastfillers-eval": {
272
+ "value": 0.8333527146573345,
273
+ "spread": 0.010610126355847991,
274
+ "spread_kind": "seed sd",
275
+ "n": 15
276
+ },
277
+ "ami-eval-v1": {
278
+ "value": 0.9483739882117678,
279
+ "spread": 0.002510850524772026,
280
+ "spread_kind": "seed sd",
281
+ "n": 15
282
+ },
283
+ "public-vocalsound": {
284
+ "value": 0.9550608658482184,
285
+ "spread": 0.0046458419014504355,
286
+ "spread_kind": "seed sd",
287
+ "n": 15
288
+ },
289
+ "fsd50k-panel": {
290
+ "value": 0.14595070422535214,
291
+ "spread": 0.013560746885563212,
292
+ "spread_kind": "seed sd",
293
+ "n": 15
294
+ }
295
+ },
296
+ "EAT + LoRA, no teacher": {
297
+ "annotation-eval-v5": {
298
+ "value": 0.9022181395955502,
299
+ "spread": 0.0028596226591157932,
300
+ "spread_kind": "seed sd",
301
+ "n": 15
302
+ },
303
+ "podcastfillers-eval": {
304
+ "value": 0.846728733967997,
305
+ "spread": 0.014180319446455675,
306
+ "spread_kind": "seed sd",
307
+ "n": 15
308
+ },
309
+ "ami-eval-v1": {
310
+ "value": 0.9524466643323456,
311
+ "spread": 0.003276968221102732,
312
+ "spread_kind": "seed sd",
313
+ "n": 15
314
+ },
315
+ "public-vocalsound": {
316
+ "value": 0.9420809875492873,
317
+ "spread": 0.006998231467778743,
318
+ "spread_kind": "seed sd",
319
+ "n": 15
320
+ },
321
+ "fsd50k-panel": {
322
+ "value": 0.1931338028169014,
323
+ "spread": 0.01694497340594801,
324
+ "spread_kind": "seed sd",
325
+ "n": 15
326
+ }
327
+ },
328
+ "EAT full fine-tune, teacher-trained": {
329
+ "annotation-eval-v5": {
330
+ "value": 0.9166429554840164,
331
+ "spread": 0.005625359041947865,
332
+ "spread_kind": "seed sd",
333
+ "n": 15
334
+ },
335
+ "podcastfillers-eval": {
336
+ "value": 0.8750703685982714,
337
+ "spread": 0.011921685111299707,
338
+ "spread_kind": "seed sd",
339
+ "n": 15
340
+ },
341
+ "ami-eval-v1": {
342
+ "value": 0.9446209554473263,
343
+ "spread": 0.005212745805492586,
344
+ "spread_kind": "seed sd",
345
+ "n": 15
346
+ },
347
+ "public-vocalsound": {
348
+ "value": 0.9437988023703398,
349
+ "spread": 0.01700459450721973,
350
+ "spread_kind": "seed sd",
351
+ "n": 15
352
+ },
353
+ "fsd50k-panel": {
354
+ "value": 0.17951877934272303,
355
+ "spread": 0.04972447014311274,
356
+ "spread_kind": "seed sd",
357
+ "n": 15
358
+ }
359
+ },
360
+ "EAT full fine-tune, no teacher": {
361
+ "annotation-eval-v5": {
362
+ "value": 0.918610648846479,
363
+ "spread": 0.006374031205233863,
364
+ "spread_kind": "seed sd",
365
+ "n": 15
366
+ },
367
+ "podcastfillers-eval": {
368
+ "value": 0.8808029276378652,
369
+ "spread": 0.008482409285809667,
370
+ "spread_kind": "seed sd",
371
+ "n": 15
372
+ },
373
+ "ami-eval-v1": {
374
+ "value": 0.9523479177219377,
375
+ "spread": 0.004569827830633127,
376
+ "spread_kind": "seed sd",
377
+ "n": 15
378
+ },
379
+ "public-vocalsound": {
380
+ "value": 0.9089073852987579,
381
+ "spread": 0.059372105425155815,
382
+ "spread_kind": "seed sd",
383
+ "n": 15
384
+ },
385
+ "fsd50k-panel": {
386
+ "value": 0.26085680751173707,
387
+ "spread": 0.030258187344898973,
388
+ "spread_kind": "seed sd",
389
+ "n": 15
390
+ }
391
+ },
392
+ "CED-base, AudioSet head": {
393
+ "annotation-eval-v5": {
394
+ "value": 0.8968090818701193,
395
+ "spread": 0.0228192185597908,
396
+ "spread_kind": "bootstrap 95% half-width",
397
+ "n": 1
398
+ },
399
+ "podcastfillers-eval": {
400
+ "value": 0.8105831097976058,
401
+ "spread": 0.06036189372814932,
402
+ "spread_kind": "bootstrap 95% half-width",
403
+ "n": 1
404
+ },
405
+ "ami-eval-v1": {
406
+ "value": 0.8541544974880243,
407
+ "spread": 0.039408864655789466,
408
+ "spread_kind": "bootstrap 95% half-width",
409
+ "n": 1
410
+ },
411
+ "public-vocalsound": {
412
+ "value": 0.9702965395681998,
413
+ "spread": 0.009631731710918856,
414
+ "spread_kind": "bootstrap 95% half-width",
415
+ "n": 1
416
+ },
417
+ "fsd50k-panel": {
418
+ "value": 0.03609154929577465,
419
+ "spread": 0.016285211267605633,
420
+ "spread_kind": "bootstrap 95% half-width",
421
+ "n": 1
422
+ }
423
+ },
424
+ "EAT, AudioSet head (the base checkpoint, zero-shot)": {
425
+ "annotation-eval-v5": {
426
+ "value": 0.8829045193537908,
427
+ "spread": 0.02558446961170535,
428
+ "spread_kind": "bootstrap 95% half-width",
429
+ "n": 1
430
+ },
431
+ "podcastfillers-eval": {
432
+ "value": 0.7844658804345496,
433
+ "spread": 0.04947444610463847,
434
+ "spread_kind": "bootstrap 95% half-width",
435
+ "n": 1
436
+ },
437
+ "ami-eval-v1": {
438
+ "value": 0.9229926019779926,
439
+ "spread": 0.024309727861856867,
440
+ "spread_kind": "bootstrap 95% half-width",
441
+ "n": 1
442
+ },
443
+ "public-vocalsound": {
444
+ "value": 0.9571953064111093,
445
+ "spread": 0.013309956523687383,
446
+ "spread_kind": "bootstrap 95% half-width",
447
+ "n": 1
448
+ },
449
+ "fsd50k-panel": {
450
+ "value": 0.0801056338028169,
451
+ "spread": 0.027739876760563317,
452
+ "spread_kind": "bootstrap 95% half-width",
453
+ "n": 1
454
+ }
455
+ },
456
+ "CED-tiny, AudioSet head": {
457
+ "annotation-eval-v5": {
458
+ "value": 0.8857709447136373,
459
+ "spread": 0.02259637836585593,
460
+ "spread_kind": "bootstrap 95% half-width",
461
+ "n": 1
462
+ },
463
+ "podcastfillers-eval": {
464
+ "value": 0.7980219459500315,
465
+ "spread": 0.06555965664476748,
466
+ "spread_kind": "bootstrap 95% half-width",
467
+ "n": 1
468
+ },
469
+ "ami-eval-v1": {
470
+ "value": 0.8564672033882755,
471
+ "spread": 0.03207273515356468,
472
+ "spread_kind": "bootstrap 95% half-width",
473
+ "n": 1
474
+ },
475
+ "public-vocalsound": {
476
+ "value": 0.9558670210236383,
477
+ "spread": 0.012283620217255986,
478
+ "spread_kind": "bootstrap 95% half-width",
479
+ "n": 1
480
+ },
481
+ "fsd50k-panel": {
482
+ "value": 0.07130281690140845,
483
+ "spread": 0.02112676056338028,
484
+ "spread_kind": "bootstrap 95% half-width",
485
+ "n": 1
486
+ }
487
+ },
488
+ "BEATs, AudioSet head": {
489
+ "annotation-eval-v5": {
490
+ "value": 0.8383485927709583,
491
+ "spread": 0.031978569016706926,
492
+ "spread_kind": "bootstrap 95% half-width",
493
+ "n": 1
494
+ },
495
+ "podcastfillers-eval": {
496
+ "value": 0.7475556060918509,
497
+ "spread": 0.06449430520655708,
498
+ "spread_kind": "bootstrap 95% half-width",
499
+ "n": 1
500
+ },
501
+ "ami-eval-v1": {
502
+ "value": 0.8419949943494651,
503
+ "spread": 0.029730828291308575,
504
+ "spread_kind": "bootstrap 95% half-width",
505
+ "n": 1
506
+ },
507
+ "public-vocalsound": {
508
+ "value": 0.9273063305843975,
509
+ "spread": 0.016602341784197117,
510
+ "spread_kind": "bootstrap 95% half-width",
511
+ "n": 1
512
+ },
513
+ "fsd50k-panel": {
514
+ "value": 0.14524647887323944,
515
+ "spread": 0.03962367957746479,
516
+ "spread_kind": "bootstrap 95% half-width",
517
+ "n": 1
518
+ }
519
+ },
520
+ "Gillick et al.": {
521
+ "annotation-eval-v5": {
522
+ "value": 0.8590035695842937,
523
+ "spread": 0.022847874353034203,
524
+ "spread_kind": "bootstrap 95% half-width",
525
+ "n": 1
526
+ },
527
+ "podcastfillers-eval": {
528
+ "value": 0.8185743771254793,
529
+ "spread": 0.04195457050713697,
530
+ "spread_kind": "bootstrap 95% half-width",
531
+ "n": 1
532
+ },
533
+ "ami-eval-v1": {
534
+ "value": 0.8525958378855036,
535
+ "spread": 0.030944159938566085,
536
+ "spread_kind": "bootstrap 95% half-width",
537
+ "n": 1
538
+ },
539
+ "public-vocalsound": {
540
+ "value": 0.7171790828625292,
541
+ "spread": 0.0312806324260928,
542
+ "spread_kind": "bootstrap 95% half-width",
543
+ "n": 1
544
+ },
545
+ "fsd50k-panel": {
546
+ "value": 0.48327464788732394,
547
+ "spread": 0.053268045774647804,
548
+ "spread_kind": "bootstrap 95% half-width",
549
+ "n": 1
550
+ }
551
+ }
552
+ }
553
+ }
554
+ }
eval/ami-eval-v1.clips.tsv ADDED
The diff for this file is too large to render. See raw diff
 
eval/configs/laughter-v0.1.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "sets": [
3
+ "<internal labeled set - private>"
4
+ ],
5
+ "encoder": "eat",
6
+ "adapt": "lora",
7
+ "epochs": 60,
8
+ "batch_size": 32,
9
+ "head_lr": 0.001,
10
+ "encoder_lr": 1e-05,
11
+ "patience": 8,
12
+ "truncate_blocks": null,
13
+ "lr_t_max": null,
14
+ "train_fraction": 1.0,
15
+ "distill_cough": 0.0,
16
+ "no_val": false,
17
+ "save_every_epoch": false,
18
+ "nsv_head": 0.0,
19
+ "nsv_weight": 1.0,
20
+ "keep_nsv": 1.0,
21
+ "teacher_neg_weight": 4.0,
22
+ "teacher_aux": 0.0,
23
+ "nsv_panel": [
24
+ "<FSD50K NSV panel - monitoring only>"
25
+ ],
26
+ "init_from": null
27
+ }
eval/fsd50k-panel.clips.tsv ADDED
The diff for this file is too large to render. See raw diff
 
eval/podcastfillers-eval.clips.tsv ADDED
The diff for this file is too large to render. See raw diff
 
eval/podcastfillers-relabel.tsv ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ clip_id pf_label episode v0.1_score candidate_score verdict
2
+ pf_30199 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.996 0.996 laughter
3
+ pf_74068 breath The Genealogy Happy Hour_Episode 20_Privacy 0.994 0.996 laughter
4
+ pf_11944 speech The RegenNarration_79. Gondwana Link The most exciting restoration at scale in Australia, with Keith Bradby OAM 0.995 0.996 laughter
5
+ pf_80857 speech Beer Tour Guy Podcast_Episode 12 - Mark Larson - Falling Down Beer Company 0.993 0.995 laughter
6
+ pf_85103 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.991 0.993 laughter
7
+ pf_20739 speech Spaces Podcast_Evolution of Architecture I 0.992 0.993 laughter
8
+ pf_50969 breath Between You & Me Podcast_Ep 54_MORIAH SMALLBONE Becoming a Lead Lady 0.99 0.993 laughter
9
+ pf_08802 speech Spaces Podcast_Evolution of Architecture I 0.993 0.993 laughter
10
+ pf_68449 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.992 0.993 laughter
11
+ pf_05868 breath Beer Tour Guy Podcast_Episode 12 - Mark Larson - Falling Down Beer Company 0.988 0.992 laughter
12
+ pf_70216 speech Spaces Podcast_Evolution of Architecture I 0.992 0.988 laughter
13
+ pf_74417 speech The Booktopia Books Podcast_John Birmingham on How to Be a Writer 0.99 0.992 laughter
14
+ pf_29389 breath Footy for Two_Transfers and Fantasy League 0.992 0.991 laughter
15
+ pf_02945 speech g1 pdcst_Foodie Call #11 The 2016 Digest 0.991 0.992 laughter
16
+ pf_13808 speech Break The Cycle_Episode 7 Patriarchy 0.991 0.991 laughter
17
+ pf_31378 breath The Genealogy Happy Hour_Episode 20_Privacy 0.99 0.991 laughter
18
+ pf_13939 speech Spaces Podcast_Evolution of Architecture I 0.988 0.99 laughter
19
+ pf_20786 speech Break The Cycle_Episode 7 Patriarchy 0.989 0.99 laughter
20
+ pf_41961 breath Break The Cycle_Episode 7 Patriarchy 0.988 0.99 laughter
21
+ pf_85602 breath The RegenNarration_79. Gondwana Link The most exciting restoration at scale in Australia, with Keith Bradby OAM 0.982 0.99 laughter
22
+ pf_45598 speech The RegenNarration_79. Gondwana Link The most exciting restoration at scale in Australia, with Keith Bradby OAM 0.979 0.989 laughter
23
+ pf_56587 speech Spaces Podcast_Evolution of Architecture I 0.988 0.987 laughter
24
+ pf_15529 speech The Booktopia Books Podcast_John Birmingham on How to Be a Writer 0.988 0.978 laughter
25
+ pf_14343 other Food as medicine_Integrative Medicine 0.988 0.984 laughter
26
+ pf_77467 speech Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.979 0.987 laughter
27
+ pf_19039 overlap The Booktopia Books Podcast_John Birmingham on How to Be a Writer 0.985 0.987 laughter
28
+ pf_19970 speech Between You & Me Podcast_Ep 54_MORIAH SMALLBONE Becoming a Lead Lady 0.987 0.985 laughter
29
+ pf_78788 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.987 0.981 laughter
30
+ pf_01704 breath Between You & Me Podcast_Ep 54_MORIAH SMALLBONE Becoming a Lead Lady 0.986 0.979 laughter
31
+ pf_68606 breath The RegenNarration_79. Gondwana Link The most exciting restoration at scale in Australia, with Keith Bradby OAM 0.979 0.986 laughter
32
+ pf_09148 breath Between You & Me Podcast_Ep 54_MORIAH SMALLBONE Becoming a Lead Lady 0.985 0.985 laughter
33
+ pf_49544 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.985 0.971 laughter
34
+ pf_82668 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.976 0.985 laughter
35
+ pf_51275 breath Break The Cycle_Episode 7 Patriarchy 0.984 0.98 laughter
36
+ pf_48894 breath Break The Cycle_Episode 7 Patriarchy 0.983 0.981 laughter
37
+ pf_08149 speech Spaces Podcast_Evolution of Architecture I 0.983 0.966 laughter
38
+ pf_33722 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.975 0.982 laughter
39
+ pf_27533 overlap Food as medicine_Integrative Medicine 0.972 0.982 laughter
40
+ pf_45870 breath Tin Pan Alley_On the Road Charlotte Eriksson 0.982 0.979 laughter
41
+ pf_28283 speech The RegenNarration_79. Gondwana Link The most exciting restoration at scale in Australia, with Keith Bradby OAM 0.965 0.981 laughter
42
+ pf_60849 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.978 0.981 laughter
43
+ pf_23028 overlap Free Podcast Day_Home Grown Girls – Apr 7 2018 0.981 0.978 laughter
44
+ pf_41112 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.977 0.98 laughter
45
+ pf_18485 breath g1 pdcst_Foodie Call #11 The 2016 Digest 0.979 0.98 laughter
46
+ pf_44027 event Footy for Two_Transfers and Fantasy League 0.98 0.958 laughter
47
+ pf_60970 speech Spaces Podcast_Evolution of Architecture I 0.98 0.98 laughter
48
+ pf_67669 speech Beer Tour Guy Podcast_Episode 12 - Mark Larson - Falling Down Beer Company 0.98 0.976 laughter
49
+ pf_36287 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.968 0.979 laughter
50
+ pf_09295 breath Food as medicine_Integrative Medicine 0.973 0.977 laughter
51
+ pf_64782 speech Spaces Podcast_Evolution of Architecture I 0.976 0.977 laughter
52
+ pf_74733 speech Spaces Podcast_Evolution of Architecture I 0.977 0.966 laughter
53
+ pf_23984 speech The Housing Hour_History of Coal Creek Miners 0.974 0.977 laughter
54
+ pf_09557 breath The Booktopia Books Podcast_John Birmingham on How to Be a Writer 0.962 0.974 laughter
55
+ pf_23130 speech Design Story_025 Moira Cullen Design is Soft Power 0.966 0.974 laughter
56
+ pf_78502 speech Beer Tour Guy Podcast_Episode 12 - Mark Larson - Falling Down Beer Company 0.973 0.973 laughter
57
+ pf_43620 speech The Housing Hour_History of Coal Creek Miners 0.972 0.973 laughter
58
+ pf_69203 speech g1 pdcst_Foodie Call #11 The 2016 Digest 0.963 0.972 laughter
59
+ pf_66810 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.962 0.971 laughter
60
+ pf_36989 breath Break The Cycle_Episode 7 Patriarchy 0.97 0.96 laughter
61
+ pf_18407 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.961 0.97 laughter
62
+ pf_48234 speech Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.968 0.969 laughter
63
+ pf_72082 speech Beer Tour Guy Podcast_Episode 12 - Mark Larson - Falling Down Beer Company 0.966 0.969 laughter
64
+ pf_55357 speech Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.943 0.968 laughter
65
+ pf_35665 speech Spaces Podcast_Evolution of Architecture I 0.968 0.958 laughter
66
+ pf_70852 speech Public Access America_Obama Foundation Town Hall Europe 0.962 0.965 laughter
67
+ pf_07535 speech g1 pdcst_Foodie Call #11 The 2016 Digest 0.95 0.963 laughter
68
+ pf_18576 speech Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.946 0.959 laughter
69
+ pf_51021 breath g1 pdcst_Foodie Call #11 The 2016 Digest 0.939 0.957 laughter
70
+ pf_19038 overlap g1 pdcst_Foodie Call #11 The 2016 Digest 0.952 0.956 laughter
71
+ pf_54944 breath Between You & Me Podcast_Ep 54_MORIAH SMALLBONE Becoming a Lead Lady 0.954 0.942 laughter
72
+ pf_62127 speech The Housing Hour_History of Coal Creek Miners 0.921 0.952 laughter
73
+ pf_50835 breath Break The Cycle_Episode 7 Patriarchy 0.946 0.951 laughter
74
+ pf_17226 speech The RegenNarration_79. Gondwana Link The most exciting restoration at scale in Australia, with Keith Bradby OAM 0.951 0.941 laughter
75
+ pf_41917 speech Spaces Podcast_Evolution of Architecture I 0.951 0.949 laughter
76
+ pf_41975 event The Booktopia Books Podcast_John Birmingham on How to Be a Writer 0.946 0.951 laughter
77
+ pf_70849 speech Free Podcast Day_Home Grown Girls – Apr 7 2018 0.929 0.948 laughter
78
+ pf_57530 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.943 0.947 laughter
79
+ pf_55480 speech The Housing Hour_History of Coal Creek Miners 0.909 0.947 laughter
80
+ pf_42257 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.946 0.941 laughter
81
+ pf_17471 breath The Genealogy Happy Hour_Episode 20_Privacy 0.944 0.942 laughter
82
+ pf_48051 breath Break The Cycle_Episode 7 Patriarchy 0.943 0.943 laughter
83
+ pf_41628 breath Between You & Me Podcast_Ep 54_MORIAH SMALLBONE Becoming a Lead Lady 0.943 0.937 not_laughter
84
+ pf_23761 breath The Booktopia Books Podcast_John Birmingham on How to Be a Writer 0.927 0.942 laughter
85
+ pf_81497 breath g1 pdcst_Foodie Call #11 The 2016 Digest 0.942 0.93 laughter
86
+ pf_58668 speech Spaces Podcast_Evolution of Architecture I 0.906 0.941 laughter
87
+ pf_73853 breath g1 pdcst_Foodie Call #11 The 2016 Digest 0.941 0.93 laughter
88
+ pf_70708 speech Free Podcast Day_Home Grown Girls – Apr 7 2018 0.94 0.937 laughter
89
+ pf_80941 speech Free Podcast Day_Home Grown Girls – Apr 7 2018 0.892 0.939 not_laughter
90
+ pf_56505 breath Between You & Me Podcast_Ep 54_MORIAH SMALLBONE Becoming a Lead Lady 0.938 0.931 laughter
91
+ pf_75369 speech Beer Tour Guy Podcast_Episode 12 - Mark Larson - Falling Down Beer Company 0.936 0.937 laughter
92
+ pf_31326 speech Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.937 0.935 laughter
93
+ pf_48743 speech Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.917 0.936 not_laughter
94
+ pf_74113 breath Design Story_025 Moira Cullen Design is Soft Power 0.935 0.934 laughter
95
+ pf_06727 speech The Genealogy Happy Hour_Episode 20_Privacy 0.914 0.933 laughter
96
+ pf_57048 breath Design Story_025 Moira Cullen Design is Soft Power 0.918 0.932 laughter
97
+ pf_75304 breath Spaces Podcast_Evolution of Architecture I 0.924 0.93 laughter
98
+ pf_23823 speech Spaces Podcast_Evolution of Architecture I 0.93 0.911 laughter
99
+ pf_01326 breath The RegenNarration_79. Gondwana Link The most exciting restoration at scale in Australia, with Keith Bradby OAM 0.865 0.929 laughter
100
+ pf_81098 breath Claire Zorn_'Turns Out I Had More Things To Write Down!' 0.929 0.925 laughter
101
+ pf_10411 speech Spaces Podcast_Evolution of Architecture I 0.923 0.916 laughter
eval/probs/ami-eval-v1__eat.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1f19519a5dbe56f27f18ff8959d4738c3f1c135c39cfdb5b418da4a3b6e69762
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed0.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a4422cf6a5f6d0e60ca9680b08f1740caee17bb88c565f4c3692cb01a1aaca8b
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed1.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fe3803baa7acc3b653998fb1ac749c6a9965d34cc2dc09670c81d6777f2dd05e
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed10.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:502abd36b110be9748a48e403d7dffb0104ee7231424c56e9938cb788e768e59
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed11.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b5733b3ac3529829aee9ca9952a56064c5f24028d8ff42c31315a8ebb806eda4
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed12.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f571cd69f69dcfc22669b89db71c3a0f2f4807a9da82f62321c5ce65156356d5
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed13.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:753b186c8c6cc33780c9d5a5c3f48a04134d0c0e0a5a8ec8beed76080ef16ac0
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed14.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7615eb564c069136840dbaf14a70cf8ccccc239c586a33a826491855c094b2e7
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed2.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:932f33fcb4f453ed3a1e0aad096c36953c75dabeb939e8b0a366975c64ac1f08
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed3.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:781f81b6429da97c3dfd0ea8f113478cc1a17590b4506e402e422abb7e8df7be
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed4.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6c911a0099294aee919a9e2e36e1f8e2c4d603343334fd30047413ac4d52b766
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed5.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:152dbddd8313ed29a478eadc2e6622c3724df014fb9f5b6c475169e89e3a280d
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed6.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:24cff8270393ce488f3ba66253931af4cff6ecd3394326601556c1981f0296f2
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed7.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1f3f8da6e79c6fd93b7bf96d54e805037517d5f882436246540d0c6b0b737350
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed8.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6ac5165f5a0359158603e14d39d2cf80ecdcf1f06226d664cbadb8df8eb9502d
3
+ size 12456
eval/probs/ami-eval-v1__laughter-v0.1-seed9.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a6130e836221f7ff07841ae53641613bbda29be8cb76a4c9d2717eeed8fb6148
3
+ size 12456
eval/probs/fsd50k-panel__ced-base.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b5bddab84987dfc5c47dbb287bdcfa4d3d6ec8b70c05b681c7a79903b9faad8c
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed0.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a4d9e8ac86d4a49d9fbb5575b1ed0f019253d40f23b317d03b892910d3e97698
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed1.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dae7d3f6055f89a9c7397a668ccbcc28c5ee3326dee46405151124fde56eb130
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed10.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b6e3c4c73b2d811f8c8d630de22873e72ba8228ab4d19217d2f11b3ad8f29ffe
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed11.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:48c621d99a0936faebc3965d09e4c6e818241bdf2d99d93ed0d858112dfe33cf
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed12.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b11e6e17ced4798c3ac37a95fc7a83399fa0e7f2e13e45942a33f0a9f104f674
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed13.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:716b59703d3d7fc437a54056fb57452baf4b8440fbc85403a88463139f15e1a7
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed14.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fc036d9afca777f5e024153a51f962fee81b4af50cc19900a780e62bb25a74e9
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed2.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:95e4e4b212e162fab8600da1f46d71202e1360a743d689d3324db538e2d6537a
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed3.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:985f6a3b53e6513bdbf9fca17476ebe522be7761e895ec3f2a4d61663a9e7424
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed4.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:748496f4327f22cce9925435af9352fda194bf1be7bd2058b9ef1c5d5d0a7491
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed5.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:513cdbff1145c6541454993b1750c6549a49e82255c38a9013cb5a2dd9ac5787
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed6.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0496bac5a1eae49f6a7c5ccc277e31715320cddee37683910bea4f611e3ddb7d
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed7.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9a3a56d29a1d0f1be384a0cd8f2675e78dbea8ffa6df19b94fa7940f5f7ae990
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed8.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6c3c2b01ad594c6010838991fadaf2978fe49b8949f4e5dd06b9691c18849325
3
+ size 34280
eval/probs/fsd50k-panel__laughter-v0.1-seed9.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:692cf31c4a85e4313a91df97f5232c4477544b5b81abcc98474d34c57a39f8ec
3
+ size 34280
eval/probs/podcastfillers-eval__gillick.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fcdd03193a6b100159bd174ca63b0fc71caad8108a8e3b2dd9490f26d852e565
3
+ size 41720
eval/probs/podcastfillers-eval__laughter-v0.1-seed0.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:690f122faed5b59971263f3fc2a4b42cab9a6ce385ec5547cc5b18f8eed7ac26
3
+ size 41720
eval/probs/podcastfillers-eval__laughter-v0.1-seed1.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cf06ca2884932b54590accc5a7e9f63a837a3ceb101dcc566fa770cc5a4d7886
3
+ size 41720
eval/probs/podcastfillers-eval__laughter-v0.1-seed10.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:81f49334d0ea69b34b917b58ee2f7a9debe5f577da76a11dacb4ad32417ed4b1
3
+ size 41720
eval/probs/podcastfillers-eval__laughter-v0.1-seed11.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4818408b6dafa09af8b049a24f48a263049a4f30cc0a10e6858d73fbcd217d2a
3
+ size 41720
eval/probs/podcastfillers-eval__laughter-v0.1-seed12.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4c3011889f52acb048cec8bd4e7edaae67487cc34581299010dfc640f40a45b6
3
+ size 41720