File size: 2,155 Bytes
5f32b51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python3
"""
Verify pre-generated SVC example WAVs under example/outputs/.

Usage (from space/):
  python scripts/verify_example_outputs.py
  python scripts/verify_example_outputs.py --min-size-kb 10

Exit 0 if all expected files exist and are readable audio; else exit 1.
"""

import argparse
import sys
from pathlib import Path

import soundfile as sf

ROOT = Path(__file__).resolve().parent.parent
OUTPUT_DIR = ROOT / "example" / "outputs"

# Must match PREGENERATED_MAP values in webui_svc.py (unique basenames)
EXPECTED_WAVS = [
    "zh_prompt_zh_target.wav",
    "en_prompt_en_target.wav",
    "sunyanzi_im_yours.wav",
    "sunyanzi_legend.wav",
    "sunyanzi_kowarekakeru.wav",
    "sunyanzi_fujisan.wav",
]


def main() -> int:
    parser = argparse.ArgumentParser()
    parser.add_argument("--min-size-kb", type=int, default=8, help="Minimum file size (KB)")
    args = parser.parse_args()
    min_bytes = args.min_size_kb * 1024

    missing = []
    bad = []
    for name in EXPECTED_WAVS:
        path = OUTPUT_DIR / name
        if not path.is_file():
            missing.append(name)
            continue
        if path.stat().st_size < min_bytes:
            bad.append(f"{name} (too small: {path.stat().st_size} B)")
            continue
        try:
            info = sf.info(str(path))
            if info.frames <= 0 or info.samplerate <= 0:
                bad.append(f"{name} (invalid audio)")
        except Exception as e:
            bad.append(f"{name} (soundfile: {e})")

    if missing:
        print("Missing:", file=sys.stderr)
        for m in missing:
            print(f"  - {m}", file=sys.stderr)
    if bad:
        print("Invalid:", file=sys.stderr)
        for b in bad:
            print(f"  - {b}", file=sys.stderr)
    if missing or bad:
        print(f"\nExpected directory: {OUTPUT_DIR}", file=sys.stderr)
        print("Run: cd space && . .venv/bin/activate && python -u scripts/generate_example_outputs.py --device cpu", file=sys.stderr)
        return 1

    print(f"OK: all {len(EXPECTED_WAVS)} files verified under {OUTPUT_DIR}")
    return 0


if __name__ == "__main__":
    sys.exit(main())