ymdou commited on
Commit
3d94271
·
verified ·
1 Parent(s): 0c72f4e

Add files using upload-large-folder tool

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +47 -0
  2. README.md +88 -6
  3. app.py +323 -0
  4. pool/audio/white_noise/AudioSet_SL_Y6PSsSboko5E_clip_000000_rank_01.wav +3 -0
  5. pool/audio/white_noise/AudioSet_SL_Y7gn2ijaGups_clip_000000_rank_01.wav +3 -0
  6. pool/audio/white_noise/AudioSet_SL_Y8vasA2D2_Kc_clip_000000_rank_01.wav +3 -0
  7. pool/audio/white_noise/AudioSet_SL_YG-cQP0Naz0I_clip_000000_rank_01.wav +3 -0
  8. pool/audio/white_noise/AudioSet_SL_YHiWLW88p7MU_clip_000000_rank_01.wav +3 -0
  9. pool/audio/white_noise/AudioSet_SL_YKqtFSJBt2Bk_clip_000000_rank_01.wav +3 -0
  10. pool/audio/white_noise/AudioSet_SL_YN02I1dSTiSc_clip_000000_rank_01.wav +3 -0
  11. pool/audio/white_noise/AudioSet_SL_YOTun6NSJ6ac_clip_000000_rank_01.wav +3 -0
  12. pool/audio/white_noise/AudioSet_SL_YOk3byOaHGlc_clip_000000_rank_01.wav +3 -0
  13. pool/audio/white_noise/AudioSet_SL_YSQLWYmqRAuE_clip_000000_rank_01.wav +3 -0
  14. pool/audio/white_noise/AudioSet_SL_YSfSrm6NEJkA_clip_000000_rank_01.wav +3 -0
  15. pool/audio/white_noise/AudioSet_SL_YV5EO_u92VJI_clip_000000_rank_01.wav +3 -0
  16. pool/audio/white_noise/AudioSet_SL_YZoLBbbv2ez4_clip_000000_rank_01.wav +3 -0
  17. pool/audio/white_noise/AudioSet_SL_Y_rytZgjgjMk_clip_000000_rank_01.wav +3 -0
  18. pool/audio/white_noise/AudioSet_SL_Yddm8gvmItHU_clip_000000_rank_01.wav +3 -0
  19. pool/audio/white_noise/AudioSet_SL_Ye4tMBJqRbv8_clip_000000_rank_01.wav +3 -0
  20. pool/audio/white_noise/AudioSet_SL_YgDBJlsRdSfQ_clip_000000_rank_01.wav +3 -0
  21. pool/audio/white_noise/AudioSet_SL_YggWUrF1gI-g_clip_000000_rank_01.wav +3 -0
  22. pool/audio/white_noise/AudioSet_SL_Ym-Yw009COyI_clip_000000_rank_01.wav +3 -0
  23. pool/audio/white_noise/AudioSet_SL_Yy85HEwP81uk_clip_000000_rank_01.wav +3 -0
  24. pool/audio/white_noise/AudioSet_SL_YyoVl4OSIhgA_clip_000000_rank_01.wav +3 -0
  25. pool/audio/white_noise/BBC_Sound_Effects_07000017_clip_000001_rank_01.wav +3 -0
  26. pool/audio/white_noise/BBC_Sound_Effects_07002280_clip_000003_rank_01.wav +3 -0
  27. pool/audio/white_noise/BBC_Sound_Effects_07007014_clip_000015_rank_01.wav +3 -0
  28. pool/audio/white_noise/BBC_Sound_Effects_07013034_clip_000008_rank_01.wav +3 -0
  29. pool/audio/white_noise/BBC_Sound_Effects_07032152_clip_000002_rank_01.wav +3 -0
  30. pool/audio/white_noise/BBC_Sound_Effects_07041147_clip_000038_rank_01.wav +3 -0
  31. pool/audio/white_noise/BBC_Sound_Effects_07049072_clip_000004_rank_01.wav +3 -0
  32. pool/audio/white_noise/BBC_Sound_Effects_NHU05007095_clip_000010_rank_01.wav +3 -0
  33. pool/audio/white_noise/BBC_Sound_Effects_NHU05011105_clip_000004_rank_01.wav +3 -0
  34. pool/audio/white_noise/BBC_Sound_Effects_NHU05030114_clip_000001_rank_01.wav +3 -0
  35. pool/audio/white_noise/BBC_Sound_Effects_NHU05058025_clip_000001_rank_01.wav +3 -0
  36. pool/audio/white_noise/BBC_Sound_Effects_NHU05094125_clip_000011_rank_01.wav +3 -0
  37. pool/audio/white_noise/FreeSound_117507_clip_000025_rank_01.wav +3 -0
  38. pool/audio/white_noise/FreeSound_164798_clip_000004_rank_01.wav +3 -0
  39. pool/audio/white_noise/FreeSound_246405_clip_000000_rank_01.wav +3 -0
  40. pool/audio/white_noise/FreeSound_362811_clip_000000_rank_01.wav +3 -0
  41. pool/audio/white_noise/FreeSound_392499_clip_000000_rank_01.wav +3 -0
  42. pool/audio/white_noise/FreeSound_434092_clip_000017_rank_01.wav +3 -0
  43. pool/audio/white_noise/FreeSound_434092_clip_000025_rank_01.wav +3 -0
  44. pool/audio/white_noise/FreeSound_477970_clip_000002_rank_01.wav +3 -0
  45. pool/audio/white_noise/FreeSound_547056_clip_000003_rank_01.wav +3 -0
  46. pool/audio/white_noise/sonyc_17_009533_clip_000000_rank_01.wav +3 -0
  47. pool/audio/white_noise/tau_urban_bus-paris-31-980-a_clip_000000_rank_01.wav +3 -0
  48. pool/audio/white_noise/tau_urban_public_square-london-113-3280-a_clip_000000_rank_01.wav +3 -0
  49. pool/audio/white_noise/tau_urban_public_square-vienna-124-3695-a_clip_000000_rank_01.wav +3 -0
  50. pool/manifest.json +3 -0
.gitattributes CHANGED
@@ -33,3 +33,50 @@ saved_model/**/* 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
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ pool/audio/white_noise/BBC_Sound_Effects_NHU05058025_clip_000001_rank_01.wav filter=lfs diff=lfs merge=lfs -text
37
+ pool/audio/white_noise/BBC_Sound_Effects_NHU05007095_clip_000010_rank_01.wav filter=lfs diff=lfs merge=lfs -text
38
+ pool/audio/white_noise/BBC_Sound_Effects_07000017_clip_000001_rank_01.wav filter=lfs diff=lfs merge=lfs -text
39
+ pool/audio/white_noise/FreeSound_392499_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
40
+ pool/audio/white_noise/BBC_Sound_Effects_07041147_clip_000038_rank_01.wav filter=lfs diff=lfs merge=lfs -text
41
+ pool/audio/white_noise/tau_urban_bus-paris-31-980-a_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
42
+ pool/audio/white_noise/AudioSet_SL_YN02I1dSTiSc_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
43
+ pool/audio/white_noise/tau_urban_public_square-vienna-124-3695-a_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
44
+ pool/audio/white_noise/FreeSound_117507_clip_000025_rank_01.wav filter=lfs diff=lfs merge=lfs -text
45
+ pool/audio/white_noise/AudioSet_SL_YG-cQP0Naz0I_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
46
+ pool/audio/white_noise/AudioSet_SL_Yddm8gvmItHU_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
47
+ pool/audio/white_noise/AudioSet_SL_Y6PSsSboko5E_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
48
+ pool/audio/white_noise/FreeSound_434092_clip_000025_rank_01.wav filter=lfs diff=lfs merge=lfs -text
49
+ pool/audio/white_noise/BBC_Sound_Effects_07049072_clip_000004_rank_01.wav filter=lfs diff=lfs merge=lfs -text
50
+ pool/manifest.json filter=lfs diff=lfs merge=lfs -text
51
+ pool/audio/white_noise/AudioSet_SL_YSfSrm6NEJkA_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
52
+ pool/audio/white_noise/FreeSound_246405_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
53
+ pool/audio/white_noise/BBC_Sound_Effects_07032152_clip_000002_rank_01.wav filter=lfs diff=lfs merge=lfs -text
54
+ pool/audio/white_noise/FreeSound_434092_clip_000017_rank_01.wav filter=lfs diff=lfs merge=lfs -text
55
+ pool/audio/white_noise/AudioSet_SL_Yy85HEwP81uk_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
56
+ pool/audio/white_noise/AudioSet_SL_Y7gn2ijaGups_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
57
+ pool/audio/white_noise/AudioSet_SL_YZoLBbbv2ez4_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
58
+ pool/audio/white_noise/BBC_Sound_Effects_07007014_clip_000015_rank_01.wav filter=lfs diff=lfs merge=lfs -text
59
+ pool/audio/white_noise/AudioSet_SL_YOTun6NSJ6ac_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
60
+ pool/audio/white_noise/sonyc_17_009533_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
61
+ pool/audio/white_noise/FreeSound_164798_clip_000004_rank_01.wav filter=lfs diff=lfs merge=lfs -text
62
+ pool/audio/white_noise/AudioSet_SL_Ym-Yw009COyI_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
63
+ pool/audio/white_noise/AudioSet_SL_YyoVl4OSIhgA_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
64
+ pool/audio/white_noise/BBC_Sound_Effects_NHU05030114_clip_000001_rank_01.wav filter=lfs diff=lfs merge=lfs -text
65
+ pool/audio/white_noise/FreeSound_477970_clip_000002_rank_01.wav filter=lfs diff=lfs merge=lfs -text
66
+ pool/audio/white_noise/BBC_Sound_Effects_07002280_clip_000003_rank_01.wav filter=lfs diff=lfs merge=lfs -text
67
+ pool/audio/white_noise/AudioSet_SL_YHiWLW88p7MU_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
68
+ pool/audio/white_noise/BBC_Sound_Effects_07013034_clip_000008_rank_01.wav filter=lfs diff=lfs merge=lfs -text
69
+ pool/audio/white_noise/AudioSet_SL_YKqtFSJBt2Bk_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
70
+ pool/audio/white_noise/tau_urban_public_square-london-113-3280-a_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
71
+ pool/audio/white_noise/AudioSet_SL_YggWUrF1gI-g_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
72
+ pool/audio/white_noise/AudioSet_SL_YOk3byOaHGlc_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
73
+ pool/audio/white_noise/FreeSound_362811_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
74
+ pool/audio/white_noise/BBC_Sound_Effects_NHU05094125_clip_000011_rank_01.wav filter=lfs diff=lfs merge=lfs -text
75
+ pool/audio/white_noise/AudioSet_SL_YV5EO_u92VJI_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
76
+ pool/audio/white_noise/AudioSet_SL_Y8vasA2D2_Kc_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
77
+ pool/audio/white_noise/AudioSet_SL_Ye4tMBJqRbv8_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
78
+ pool/audio/white_noise/BBC_Sound_Effects_NHU05011105_clip_000004_rank_01.wav filter=lfs diff=lfs merge=lfs -text
79
+ pool/audio/white_noise/AudioSet_SL_YSQLWYmqRAuE_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
80
+ pool/audio/white_noise/AudioSet_SL_YgDBJlsRdSfQ_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
81
+ pool/audio/white_noise/AudioSet_SL_Y_rytZgjgjMk_clip_000000_rank_01.wav filter=lfs diff=lfs merge=lfs -text
82
+ pool/audio/white_noise/FreeSound_547056_clip_000003_rank_01.wav filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -1,13 +1,95 @@
1
  ---
2
- title: Hiding Sound
3
- emoji: 🐠
4
- colorFrom: indigo
5
  colorTo: blue
6
  sdk: gradio
7
- sdk_version: 6.14.0
8
- python_version: '3.13'
9
  app_file: app.py
10
  pinned: false
11
  ---
12
 
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: Hiding Sound Listening Study
3
+ emoji: 🎧
4
+ colorFrom: green
5
  colorTo: blue
6
  sdk: gradio
7
+ sdk_version: 4.40.0
 
8
  app_file: app.py
9
  pinned: false
10
  ---
11
 
12
+ # Hiding Sound Tier 4 Human Study
13
+
14
+ Participant-facing form for the Hiding Sound paper's human listening
15
+ evaluation. Each session draws a fresh random subset (default 20 per
16
+ condition × 5 conditions = 100 trials) from `pool/manifest.json`. The
17
+ participant listens to each clip and picks an option (A/B/C/D). On
18
+ submit, the responses are saved as a JSON file the participant can
19
+ download.
20
+
21
+ ## Files
22
+
23
+ ```
24
+ app.py ← Gradio app
25
+ requirements.txt
26
+ pool/
27
+ manifest.json ← all available trials (generated by 01_build_pool.py)
28
+ audio/
29
+ <condition>/<stem>.wav
30
+ ```
31
+
32
+ ## Deploying as a Hugging Face Space
33
+
34
+ 1. Build the pool (default = include every test stem per condition,
35
+ so each session can sample from the full set):
36
+ ```bash
37
+ python ../scripts/tier4/01_build_pool.py # ~15 k wavs, ~4.7 GB
38
+ # or cap pool size for a lighter Space:
39
+ python ../scripts/tier4/01_build_pool.py --pool-size 200
40
+ ```
41
+ (Output goes here, into `tier4_app/pool/`.)
42
+
43
+ 2. Push to a Space. **Recommended path** (no `git lfs` needed — uses the
44
+ `huggingface_hub` Python API):
45
+ ```bash
46
+ pip install -U huggingface_hub
47
+ huggingface-cli login # paste a write token, one-time
48
+
49
+ cd src/evaluation/eval/tier4_app
50
+ python deploy_space.py --repo-id <user>/<space-name>
51
+ ```
52
+ This idempotently creates the Space if it doesn't exist and uploads
53
+ everything in this folder (audio LFS is handled automatically). Re-run
54
+ to push updates.
55
+
56
+ Alternative (if you have `git-lfs` installed and prefer a git workflow):
57
+ ```bash
58
+ # install git-lfs once
59
+ conda install -c conda-forge git-lfs # or: apt install git-lfs
60
+ git lfs install
61
+
62
+ cd src/evaluation/eval/tier4_app
63
+ git init
64
+ git lfs track "pool/audio/**/*.wav"
65
+ git add .gitattributes
66
+ git add .
67
+ git commit -m "initial deploy"
68
+ git remote add origin https://huggingface.co/spaces/<user>/<space>
69
+ git push -u origin main
70
+ ```
71
+
72
+ 3. (Optional) Auto-upload submissions to a private HF Dataset. Set these
73
+ secrets on the Space settings page:
74
+ - `HF_TOKEN` — a write-access token
75
+ - `HF_RESULTS_REPO` — e.g. `<user>/hidingsound-tier4-results` (must
76
+ already exist as a HF Dataset; the app will push JSONs into a
77
+ `submissions/` subfolder).
78
+
79
+ With both set, every submission is pushed to the dataset alongside the
80
+ download link the participant gets.
81
+
82
+ ## Local testing
83
+
84
+ ```bash
85
+ pip install -r requirements.txt
86
+ python app.py
87
+ # → opens http://127.0.0.1:7860
88
+ ```
89
+
90
+ ## Re-sampling per visit
91
+
92
+ The manifest contains the full pool. Per-session trial selection happens
93
+ inside the Gradio handler (`sample_session_trials(...)`) which fires on
94
+ every `start_btn` click — so refreshing or re-opening the link gives a
95
+ fresh draw.
app.py ADDED
@@ -0,0 +1,323 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Hiding Sound — Tier 4 human-study Gradio app.
2
+
3
+ Deploy as a Hugging Face Space. On every fresh page-load the app draws a
4
+ new random subset of trials from `pool/manifest.json` (default 20 per
5
+ condition × 5 conditions = 100 trials). Trials are presented one at a time
6
+ with audio playback and 4 multiple-choice options. On submit, the app
7
+ generates a JSON file that the participant can download AND, if the Space
8
+ has the `HF_TOKEN` + `HF_RESULTS_REPO` secrets set, pushes the JSON to a
9
+ private HF dataset for automated collection.
10
+
11
+ Knobs (env vars):
12
+ HF_TOKEN HF write-access token (set as a Space secret)
13
+ HF_RESULTS_REPO target dataset, e.g. "ymdou/hidingsound-tier4-results"
14
+ N_PER_CONDITION override per-condition sample size (default 20)
15
+
16
+ Run locally:
17
+ python app.py
18
+ """
19
+ from __future__ import annotations
20
+
21
+ import json
22
+ import os
23
+ import random
24
+ import time
25
+ import uuid
26
+ from datetime import datetime
27
+ from pathlib import Path
28
+
29
+ import gradio as gr
30
+
31
+ POOL_DIR = Path(__file__).parent / "pool"
32
+ MANIFEST_PATH = POOL_DIR / "manifest.json"
33
+ N_PER_CONDITION = int(os.environ.get("N_PER_CONDITION", "1")) # smoke default
34
+ HF_TOKEN = os.environ.get("HF_TOKEN")
35
+ HF_RESULTS_REPO = os.environ.get("HF_RESULTS_REPO") # e.g. "user/dataset"
36
+
37
+
38
+ # ──────────────────────────── pool loading ───────────────────────────────
39
+
40
+ with open(MANIFEST_PATH) as _f:
41
+ _MANIFEST = json.load(_f)
42
+ ALL_TRIALS = _MANIFEST["trials"]
43
+ META = _MANIFEST.get("_meta", {})
44
+ CONDITIONS = META.get("conditions", sorted({t["condition"] for t in ALL_TRIALS}))
45
+ N_OPTIONS = META.get("n_options", 4)
46
+ TOTAL_PER_SESSION = N_PER_CONDITION * len(CONDITIONS)
47
+
48
+
49
+ def sample_session_trials(seed: int | None = None) -> list[dict]:
50
+ """Pick N_PER_CONDITION trials from each condition. Order shuffled."""
51
+ rng = random.Random(seed)
52
+ by_cond: dict[str, list[dict]] = {c: [] for c in CONDITIONS}
53
+ for t in ALL_TRIALS:
54
+ if t["condition"] in by_cond:
55
+ by_cond[t["condition"]].append(t)
56
+ chosen: list[dict] = []
57
+ for c in CONDITIONS:
58
+ pool = by_cond[c]
59
+ if not pool:
60
+ continue
61
+ n = min(N_PER_CONDITION, len(pool))
62
+ chosen.extend(rng.sample(pool, n))
63
+ rng.shuffle(chosen)
64
+ return chosen
65
+
66
+
67
+ # ──────────────────────────── submission storage ─────────────────────────
68
+
69
+ def upload_to_hf(submission: dict) -> str | None:
70
+ if not (HF_TOKEN and HF_RESULTS_REPO):
71
+ return None
72
+ try:
73
+ from huggingface_hub import HfApi
74
+ api = HfApi(token=HF_TOKEN)
75
+ ts = datetime.now().strftime("%Y%m%d_%H%M%S")
76
+ pid = submission.get("participant_id", uuid.uuid4().hex[:8])
77
+ fname = f"submissions/{ts}_{pid}.json"
78
+ local = Path("/tmp") / f"sub_{ts}_{pid}.json"
79
+ local.write_text(json.dumps(submission, ensure_ascii=False, indent=2))
80
+ api.upload_file(
81
+ path_or_fileobj=str(local),
82
+ path_in_repo=fname,
83
+ repo_id=HF_RESULTS_REPO,
84
+ repo_type="dataset",
85
+ )
86
+ return f"{HF_RESULTS_REPO}:{fname}"
87
+ except Exception as e:
88
+ print(f"[upload_to_hf] failed: {e!r}", flush=True)
89
+ return None
90
+
91
+
92
+ # ──────────────────────────── UI building blocks ─────────────────────────
93
+
94
+ INTRO_MD = f"""
95
+ # Hiding Sound — Listening Study
96
+
97
+ Thanks for participating! You will hear **{TOTAL_PER_SESSION} short audio
98
+ clip(s)** (currently configured as {N_PER_CONDITION} per condition ×
99
+ {len(CONDITIONS)} conditions). For each clip, listen carefully and click
100
+ the option button whose description best matches the dominant sound you
101
+ hear. Clicking an option records your answer and moves on automatically.
102
+
103
+ When you finish, your responses will be saved as a JSON file you can
104
+ download (and auto-uploaded if the host has configured a results dataset).
105
+
106
+ Click **Start** below when you're ready.
107
+ """
108
+
109
+
110
+ def render_trial(idx: int, trial: dict) -> str:
111
+ head = (f"### Trial {idx+1} / {TOTAL_PER_SESSION}\n\n"
112
+ f"Listen to the audio, then click the option that best "
113
+ f"describes the dominant sound.")
114
+ return head
115
+
116
+
117
+ # ──────────────────────────── main app ───────────────────────────────────
118
+
119
+ def make_app() -> gr.Blocks:
120
+ with gr.Blocks(title="Hiding Sound Listening Study") as demo:
121
+ gr.Markdown(INTRO_MD)
122
+
123
+ # session state
124
+ trials_state = gr.State(value=[])
125
+ idx_state = gr.State(value=0)
126
+ answers_state = gr.State(value=[]) # list of {"trial_id":int, "letter":str|None}
127
+ pid_state = gr.State(value="")
128
+
129
+ # intro page (no participant-id box; we auto-generate)
130
+ with gr.Group(visible=True) as intro_group:
131
+ start_btn = gr.Button("Start", variant="primary")
132
+
133
+ # trial page — 4 option buttons (label updated per-trial); clicking
134
+ # an option records the answer and auto-advances.
135
+ with gr.Group(visible=False) as trial_group:
136
+ progress_md = gr.Markdown("")
137
+ audio_player = gr.Audio(label="Audio", autoplay=False, type="filepath")
138
+ opt_btn_a = gr.Button("", variant="secondary")
139
+ opt_btn_b = gr.Button("", variant="secondary")
140
+ opt_btn_c = gr.Button("", variant="secondary")
141
+ opt_btn_d = gr.Button("", variant="secondary")
142
+ prev_btn = gr.Button("◀ Previous")
143
+
144
+ # submit page
145
+ with gr.Group(visible=False) as submit_group:
146
+ submit_btn = gr.Button("Submit my responses", variant="primary")
147
+ submit_status = gr.Markdown("")
148
+ download_file = gr.File(label="Download your responses (JSON)",
149
+ visible=False)
150
+
151
+ # ─── helpers ──────────────────────────────────────────────────
152
+
153
+ def _trial_ui_updates(i: int, trials: list[dict], answers: list[dict]):
154
+ """Returns [progress_md, audio_path, btn_A_label, btn_B_label,
155
+ btn_C_label, btn_D_label] for the trial at index i."""
156
+ t = trials[i]
157
+ audio_path = str(POOL_DIR / t["audio"])
158
+ head = render_trial(i, t)
159
+ chosen = answers[i].get("letter")
160
+ btn_labels: list[str] = []
161
+ for opt in t["options"]:
162
+ tag = "✓ " if chosen == opt["letter"] else ""
163
+ btn_labels.append(f"{tag}({opt['letter']}) {opt['description']}")
164
+ # Pad to 4 in case n_options < 4 for some reason.
165
+ while len(btn_labels) < 4:
166
+ btn_labels.append("")
167
+ return [head, audio_path, *btn_labels[:4]]
168
+
169
+ # ─── handlers ─────────────────────────────────────────────────
170
+
171
+ def on_start():
172
+ pid = uuid.uuid4().hex[:8]
173
+ trials = sample_session_trials(seed=int(time.time() * 1000) & 0xffff_ffff)
174
+ answers = [{"trial_id": i, "letter": None}
175
+ for i in range(len(trials))]
176
+ ui = _trial_ui_updates(0, trials, answers)
177
+ return (
178
+ gr.update(visible=False), # intro
179
+ gr.update(visible=True), # trial
180
+ gr.update(visible=False), # submit
181
+ trials, 0, answers, pid,
182
+ *ui, # progress, audio, btn A/B/C/D
183
+ )
184
+
185
+ def _advance(trials, i, answers, letter):
186
+ """Record answer and advance; auto-show submit page on last."""
187
+ if 0 <= i < len(trials):
188
+ answers[i]["letter"] = letter
189
+ if i + 1 < len(trials):
190
+ i += 1
191
+ ui = _trial_ui_updates(i, trials, answers)
192
+ return (
193
+ gr.update(visible=True), # trial
194
+ gr.update(visible=False), # submit
195
+ trials, i, answers, *ui,
196
+ )
197
+ # Last trial answered → flip to submit.
198
+ ui = _trial_ui_updates(i, trials, answers) # filler outputs
199
+ return (
200
+ gr.update(visible=False), # trial
201
+ gr.update(visible=True), # submit
202
+ trials, i, answers, *ui,
203
+ )
204
+
205
+ def make_pick(letter):
206
+ def _pick(trials, i, answers):
207
+ return _advance(trials, i, answers, letter)
208
+ return _pick
209
+
210
+ def on_prev(trials, i, answers):
211
+ if i > 0:
212
+ i -= 1
213
+ ui = _trial_ui_updates(i, trials, answers)
214
+ return (
215
+ gr.update(visible=True), # trial visible
216
+ gr.update(visible=False), # submit hidden
217
+ trials, i, answers, *ui,
218
+ )
219
+
220
+ def on_submit(trials, answers, pid):
221
+ now = datetime.now().isoformat()
222
+ sub = {
223
+ "participant_id": pid,
224
+ "submitted_at": now,
225
+ "n_options": N_OPTIONS,
226
+ "n_per_condition": N_PER_CONDITION,
227
+ "conditions": CONDITIONS,
228
+ "responses": [
229
+ {
230
+ "trial_id": i,
231
+ "stem": t["stem"],
232
+ "condition": t["condition"],
233
+ "gt_letter": t["gt_letter"],
234
+ "user_letter": a["letter"],
235
+ "correct": (a["letter"] is not None
236
+ and a["letter"] == t["gt_letter"]),
237
+ "options": t["options"],
238
+ }
239
+ for i, (t, a) in enumerate(zip(trials, answers))
240
+ ],
241
+ }
242
+ # Compute per-condition accuracy on the fly.
243
+ from collections import defaultdict
244
+ per_cond = defaultdict(lambda: [0, 0]) # [n_correct, n_total]
245
+ for r in sub["responses"]:
246
+ if r["user_letter"] is None:
247
+ continue
248
+ per_cond[r["condition"]][1] += 1
249
+ per_cond[r["condition"]][0] += int(r["correct"])
250
+ sub["per_condition_accuracy"] = {
251
+ c: {"correct": v[0], "n": v[1],
252
+ "accuracy": (v[0] / v[1] if v[1] else 0.0)}
253
+ for c, v in per_cond.items()
254
+ }
255
+
256
+ # Local download path.
257
+ ts = datetime.now().strftime("%Y%m%d_%H%M%S")
258
+ local = Path("/tmp") / f"hidingsound_tier4_{pid}_{ts}.json"
259
+ local.write_text(json.dumps(sub, ensure_ascii=False, indent=2))
260
+
261
+ uploaded = upload_to_hf(sub)
262
+ status_lines = ["**Thank you!** Your responses are recorded."]
263
+ if uploaded:
264
+ status_lines.append(f"Uploaded to: `{uploaded}`")
265
+ else:
266
+ status_lines.append(
267
+ "Auto-upload is **disabled** for this Space. "
268
+ "Please download the JSON and email it back to the study "
269
+ "organizers."
270
+ )
271
+ status_lines.append("")
272
+ status_lines.append("Per-condition accuracy on this submission:")
273
+ for c, v in sub["per_condition_accuracy"].items():
274
+ status_lines.append(f"- **{c}**: {v['correct']}/{v['n']} = "
275
+ f"{100*v['accuracy']:.1f}%")
276
+ return ("\n".join(status_lines), str(local),
277
+ gr.update(visible=True))
278
+
279
+ # ─── wiring ───────────────────────────────────────────────────
280
+
281
+ trial_outputs = [
282
+ trial_group, submit_group,
283
+ trials_state, idx_state, answers_state,
284
+ progress_md, audio_player,
285
+ opt_btn_a, opt_btn_b, opt_btn_c, opt_btn_d,
286
+ ]
287
+
288
+ start_btn.click(
289
+ on_start,
290
+ inputs=[],
291
+ outputs=[
292
+ intro_group, trial_group, submit_group,
293
+ trials_state, idx_state, answers_state, pid_state,
294
+ progress_md, audio_player,
295
+ opt_btn_a, opt_btn_b, opt_btn_c, opt_btn_d,
296
+ ],
297
+ )
298
+
299
+ for btn, letter in [(opt_btn_a, "A"), (opt_btn_b, "B"),
300
+ (opt_btn_c, "C"), (opt_btn_d, "D")]:
301
+ btn.click(
302
+ make_pick(letter),
303
+ inputs=[trials_state, idx_state, answers_state],
304
+ outputs=trial_outputs,
305
+ )
306
+
307
+ prev_btn.click(
308
+ on_prev,
309
+ inputs=[trials_state, idx_state, answers_state],
310
+ outputs=trial_outputs,
311
+ )
312
+
313
+ submit_btn.click(
314
+ on_submit,
315
+ inputs=[trials_state, answers_state, pid_state],
316
+ outputs=[submit_status, download_file, download_file],
317
+ )
318
+
319
+ return demo
320
+
321
+
322
+ if __name__ == "__main__":
323
+ make_app().launch()
pool/audio/white_noise/AudioSet_SL_Y6PSsSboko5E_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f68fb0a5ad68e9e631db7b5a39b651798967281fe02d7a203afcc0c71458d4df
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_Y7gn2ijaGups_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fbfa81641091c415032eddf3b92c2e7e2baf39715bed72356fd6e48e9d8a989a
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_Y8vasA2D2_Kc_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:73b9a081e645c0a2ea7efb2f4145cfaef9a67da7a21298206d681bb7f6eb2af6
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_YG-cQP0Naz0I_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d8413dd98cdd8bbb7a3c5ddab2e5609be102378377dd33dbd2ed065d7b1bf880
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_YHiWLW88p7MU_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c6479d70f01bd68a4f92465f6a4257642bc0cb1276fee009911f0e5f1c915115
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_YKqtFSJBt2Bk_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:22f2bb33d67cc5d806a81159af0fca49b6081dfc8d47b1e50698e6e19e7c0b79
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_YN02I1dSTiSc_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:03c1de55e27344786fb02e3d8fa4c2a1231e0d5583949022d44011a853a04abb
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_YOTun6NSJ6ac_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d0ddd8bc563ac77e2eff8e7e7ba9502020965ab1d1e411ee4730d590dd9381a4
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_YOk3byOaHGlc_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f2882818c390e851c971977e682fb9fb469542aba22663a398645fec38eda210
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_YSQLWYmqRAuE_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d188cef6e3269ac53f78ae69c2938bc7d5ca01c90c6f9cfce442b52d97de5ce4
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_YSfSrm6NEJkA_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ff67301f2e316839481cdedd3317a705166fb8cb69c97a286b6d853e2d9f4377
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_YV5EO_u92VJI_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2ffa6b048a0030311aed5437cbfb90901407ca08690bf8f356e054d299b2e9fa
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_YZoLBbbv2ez4_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4d9b7cd231737014ee5d17f844b2af93c3a723488bfe49c689fbf846dba690e2
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_Y_rytZgjgjMk_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8fd9f4108c89f67df710a46a90152ac727a7e5efedc4fdcee4e034b68fc6a43a
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_Yddm8gvmItHU_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5400f1c29ce89c59889f4ad23f4a4c7d41d3bc746a407928941d45ddc0ba9aa4
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_Ye4tMBJqRbv8_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ec8e4f7e03b257ac38c77a4aaf6761ded710a7653e77111a99b15ddf5737e4b8
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_YgDBJlsRdSfQ_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:73f5ba1fba3a73e796364930fd8949751eeb5ea631e08226ac17a01106911d3f
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_YggWUrF1gI-g_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:682f9e99ef37ad6ef4d1137a9e3abade7c5e4cb5b308c6b6865513bad56494c9
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_Ym-Yw009COyI_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3203974a827ea3819034ecf7f7e460167297e388d2896e105c43829aa734af39
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_Yy85HEwP81uk_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8babb2fc73a27d0b230936ec2969b9a0651da1fc52c36e6784efcd198c3025b6
3
+ size 319552
pool/audio/white_noise/AudioSet_SL_YyoVl4OSIhgA_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3e035532dddaa29b4f27f575943f6ebcf2f706573e2a7ecd57d02be7d9410120
3
+ size 319552
pool/audio/white_noise/BBC_Sound_Effects_07000017_clip_000001_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1a939a5b20c28ba78042570d27225c3d3bf2c823366ee99232f26ac359807224
3
+ size 319552
pool/audio/white_noise/BBC_Sound_Effects_07002280_clip_000003_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:43cc9b9db205c0ee6e3e5a5e9eda7ec3f2600915da633628ddc08089c9556062
3
+ size 319552
pool/audio/white_noise/BBC_Sound_Effects_07007014_clip_000015_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ca8d809811fcbfd52637e6efbabc1db9c7525f94b3e86b178d6f6f73e373bd77
3
+ size 319552
pool/audio/white_noise/BBC_Sound_Effects_07013034_clip_000008_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d54e494547aef3c7ccdbd9565d00fd19179a6a439274435e79a023d9867cc5df
3
+ size 319552
pool/audio/white_noise/BBC_Sound_Effects_07032152_clip_000002_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c2e2b2262761cb4b710f9f7444edba66ad37e4c847ba8451cdf212e0ae3baf7e
3
+ size 319552
pool/audio/white_noise/BBC_Sound_Effects_07041147_clip_000038_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:61410d0c2a1ee095b4ce83cf3b2c543c32cda39fd92e96ddfd31dbd5359f403e
3
+ size 319552
pool/audio/white_noise/BBC_Sound_Effects_07049072_clip_000004_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ab5c090cb44cda74f7d63a6d6f323a9450eb1554e1de05374ca7e7f5fd7225c3
3
+ size 319552
pool/audio/white_noise/BBC_Sound_Effects_NHU05007095_clip_000010_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f5a7cac8fbdd0fb852716a8d9c1616e14cd74e43eb1bdebaf671a8edcdf0227f
3
+ size 319552
pool/audio/white_noise/BBC_Sound_Effects_NHU05011105_clip_000004_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0263959adfbad0f41daebec98cdeec2c58e010c74583f9a3e83214b3b618e955
3
+ size 319552
pool/audio/white_noise/BBC_Sound_Effects_NHU05030114_clip_000001_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5573afe62153c1777c78e94ba9ada7853ac5d555726112de0903820c0fe443f8
3
+ size 319552
pool/audio/white_noise/BBC_Sound_Effects_NHU05058025_clip_000001_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3f5fc0829f1075824375cec8c0002b73763c2acb9cd7174811e50c54cfc9c567
3
+ size 319552
pool/audio/white_noise/BBC_Sound_Effects_NHU05094125_clip_000011_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:af58086c6a7afb82f214477264e9d731b66450fd980ad16503a3d99ff2b96caa
3
+ size 319552
pool/audio/white_noise/FreeSound_117507_clip_000025_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c00e1d834faaaf3db5464e3a4d05d344310092c02992a44800c38563ce366bbe
3
+ size 319552
pool/audio/white_noise/FreeSound_164798_clip_000004_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a7c363083b39618904a9f9544e7f7f83f59428cb274d42d0389f90633d6fb9fd
3
+ size 319552
pool/audio/white_noise/FreeSound_246405_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3729f63137f71f8784162abf3ca6fd2b65c0d2a45dda99f82cf90bff10195f4b
3
+ size 319552
pool/audio/white_noise/FreeSound_362811_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c07a60f6c4a17c02e0aba888f90306e3fded37c7cdf9c335027c166c9a762d7e
3
+ size 319552
pool/audio/white_noise/FreeSound_392499_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9a22e37ee6173c9b947e6e3112b9de005d2208191cec510fa31fc6d460b54296
3
+ size 319552
pool/audio/white_noise/FreeSound_434092_clip_000017_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2a18fcfe9d0482ee70ea37e0e00a18ae7933efc24b88c9061960eaa9359ebb5e
3
+ size 319552
pool/audio/white_noise/FreeSound_434092_clip_000025_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ae9cb893b50e40678779cee9e2a28b7cd61eedadc6a16a875bdbb3a001e98d48
3
+ size 319552
pool/audio/white_noise/FreeSound_477970_clip_000002_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:60e650a6bb33d0be14e2656db7cb63d2698fb19d32403c049bbafe1c71642d20
3
+ size 319552
pool/audio/white_noise/FreeSound_547056_clip_000003_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:14e43f24724b615f55b59f98b915b73a7973933a8f518aa836b71a7a5529744a
3
+ size 319552
pool/audio/white_noise/sonyc_17_009533_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:24c0827d565031d9ce605d2179c7dc07dab04dd2d5c4bca09b27648c974b8c7f
3
+ size 319552
pool/audio/white_noise/tau_urban_bus-paris-31-980-a_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8e6de25cf025b195ff27878c63072bf2fa0b4d75f6452b38f0d73b41f11f5acb
3
+ size 319552
pool/audio/white_noise/tau_urban_public_square-london-113-3280-a_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d4399c71ee2fccb039609b71a52e39e3ea24a5ee4bbb9d5d2569264112382617
3
+ size 319552
pool/audio/white_noise/tau_urban_public_square-vienna-124-3695-a_clip_000000_rank_01.wav ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e88753cc000915324d2d8fc181e65b62293b930d12433598f851413aeb9324c7
3
+ size 319552
pool/manifest.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:af18371b9a8a6eaf5cecf1d32a5fbc0a3e628d8365f2252a8d9348e53bc35c32
3
+ size 25406611