Spaces:
Runtime error
Runtime error
File size: 2,595 Bytes
05b45a5 |
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 75 76 77 78 79 |
import argparse
from pathlib import Path
from validate_wav import validate_tts
def print_validation_result(result: dict, rel_path: Path):
"""Print full validation details for a single file."""
print(f"\nValidating: {rel_path}")
if "error" in result:
print(f"Error: {result['error']}")
else:
print(f"Duration: {result['duration']}")
print(f"Sample Rate: {result['sample_rate']} Hz")
print(f"Peak Amplitude: {result['peak_amplitude']}")
print(f"RMS Level: {result['rms_level']}")
print(f"DC Offset: {result['dc_offset']}")
if result["issues"]:
print("\nIssues Found:")
for issue in result["issues"]:
print(f"- {issue}")
else:
print("\nNo issues found")
def validate_directory(directory: str):
"""Validate all wav files in a directory with detailed output and summary."""
dir_path = Path(directory)
# Find all wav files (including nested directories)
wav_files = list(dir_path.rglob("*.wav"))
wav_files.extend(dir_path.rglob("*.mp3")) # Also check mp3s
wav_files = sorted(wav_files)
if not wav_files:
print(f"No .wav or .mp3 files found in {directory}")
return
print(f"Found {len(wav_files)} files in {directory}")
print("=" * 80)
# Store results for summary
results = []
# Detailed validation output
for wav_file in wav_files:
result = validate_tts(str(wav_file))
rel_path = wav_file.relative_to(dir_path)
print_validation_result(result, rel_path)
results.append((rel_path, result))
print("=" * 80)
# Summary with detailed issues
print("\nSUMMARY:")
for rel_path, result in results:
if "error" in result:
print(f"{rel_path}: ERROR - {result['error']}")
elif result["issues"]:
# Show first issue in summary, indicate if there are more
issues = result["issues"]
first_issue = issues[0].replace("WARNING: ", "")
if len(issues) > 1:
print(
f"{rel_path}: FAIL - {first_issue} (+{len(issues)-1} more issues)"
)
else:
print(f"{rel_path}: FAIL - {first_issue}")
else:
print(f"{rel_path}: PASS")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Batch validate TTS wav files")
parser.add_argument("directory", help="Directory containing wav files to validate")
args = parser.parse_args()
validate_directory(args.directory)
|