"""Positive-control variants of the same 40 utterances: the 1.5 s gap filled with white noise at -60 and -50 dBFS RMS instead of digital zeros (a room-tone pause rather than a gated one), and a 0.75 s zero gap. Reference unchanged. Writes data/pc-n60.jsonl, data/pc-n50.jsonl, data/pc-z075.jsonl.""" import json import os import numpy as np import soundfile as sf D = "/tank/spikes/parakeet-ab/data" pc = [json.loads(l) for l in open(f"{D}/pc.jsonl")] clean = {json.loads(l)["id"]: json.loads(l) for l in open(f"{D}/ls-clean.jsonl")} rng = np.random.default_rng(20260930) for tag, mode, level, span in (("pc-n60", "noise", -60, 1.5), ("pc-n50", "noise", -50, 1.5), ("pc-z075", "zero", None, 0.75)): os.makedirs(f"{D}/{tag}", exist_ok=True) rows = [] for r in pc: a, sr = sf.read(clean[r["id"]]["wav"].replace("/ab/", "/tank/spikes/parakeet-ab/", 1), dtype="float32") s0 = int(0.40 * len(a)); s1 = s0 + int(span * sr) b = a.copy() b[s0:s1] = (rng.standard_normal(s1 - s0).astype(np.float32) * 10 ** (level / 20)) if mode == "noise" else 0.0 p = f"{D}/{tag}/{r['id']}.wav" sf.write(p, b, sr, subtype="PCM_16") rows.append(dict(r, wav=p.replace("/tank/spikes/parakeet-ab/", "/ab/", 1), silence=[round(s0 / sr, 3), round(s1 / sr, 3)], fill=f"{mode} {level}")) with open(f"{D}/{tag}.jsonl", "w") as f: for r in rows: f.write(json.dumps(r) + "\n") print(tag, len(rows))