AuralGuard / scripts /make_edacc_metadata_old.py
AyoPrince's picture
Upload folder using huggingface_hub
127b976 verified
Raw History Blame Contribute Delete
2.09 kB
from datasets import load_dataset
from pathlib import Path
import soundfile as sf
import pandas as pd
import argparse
def save_split(ds, split_name, out_audio_dir, out_csv, max_items=None):
out_audio_dir = Path(out_audio_dir)
out_audio_dir.mkdir(parents=True, exist_ok=True)
rows = []
n = len(ds) if max_items is None else min(len(ds), max_items)
for i in range(n):
item = ds[i]
audio = item["audio"]
speaker = item.get("speaker", f"unknown_{i}")
accent = item.get("accent", "unknown").replace(" ", "_").replace("/", "_")
wav_path = out_audio_dir / f"{split_name}_{i:06d}_{speaker}_{accent}.wav"
sf.write(wav_path, audio["array"], audio["sampling_rate"])
rows.append({
"file_path": wav_path.resolve().as_posix(),
"binary_label": 0,
"attack_type": "bonafide",
"start_fake": -1,
"end_fake": -1,
"dataset": "EdAcc",
"split": split_name
})
pd.DataFrame(rows).to_csv(out_csv, index=False)
print(f"Saved {out_csv} rows={len(rows)}")
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--out-audio-root", default="data/edacc/audio")
parser.add_argument("--out-dir", default="data/metadata")
parser.add_argument("--max-train", type=int, default=3000)
parser.add_argument("--max-val", type=int, default=500)
args = parser.parse_args()
print("Downloading/loading EdAcc...")
edacc = load_dataset("edinburghcstr/edacc")
out_dir = Path(args.out_dir)
out_dir.mkdir(parents=True, exist_ok=True)
save_split(
edacc["validation"],
"train",
Path(args.out_audio_root) / "train",
out_dir / "edacc_train.csv",
max_items=args.max_train
)
save_split(
edacc["test"],
"val",
Path(args.out_audio_root) / "val",
out_dir / "edacc_val.csv",
max_items=args.max_val
)
if __name__ == "__main__":
main()