Spaces:
Runtime error
Runtime error
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) | |