#!/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)