| #!/usr/bin/env python3 | |
| """Babble lingala et shona depuis les clips TRAIN (moyenne de 4 clips), pour que le | |
| fond sonore ne soit plus un indice de langue lors de l'entrainement du LID robuste.""" | |
| import json | |
| import os | |
| import random | |
| import soundfile as sf | |
| random.seed(43) | |
| for lang in ("lin", "sna"): | |
| out = f"/scratch/noise_babble_{lang}" | |
| os.makedirs(out, exist_ok=True) | |
| rows = [json.loads(l) for l in open(f"/scratch/prep/manifests/waxal_{lang}_train.jsonl", encoding="utf-8")] | |
| files = [r["audio"] for r in rows if r["duration"] >= 5.0] | |
| random.shuffle(files) | |
| made = 0 | |
| i = 0 | |
| while made < 1000 and i + 4 < len(files): | |
| clips = [sf.read(f, dtype="float32")[0] for f in files[i:i + 4]] | |
| i += 4 | |
| L = min(len(c) for c in clips) | |
| if L < 16000 * 4: | |
| continue | |
| sf.write(f"{out}/babble_{lang}_{made:05d}.flac", sum(c[:L] for c in clips) / 4.0, 16000) | |
| made += 1 | |
| print(f"babble {lang}: {made}", flush=True) | |
| print("BABBLE_EXTRA_DONE", flush=True) | |