| 87 | |
| 88 | |
| 89 | def discover_cases(benchmark_dir: Path, tasks: list[str]) -> list[tuple[str, str, Path, str]]: |
| 90 | cases = [] |
| 91 | for task in tasks: |
| 92 | task_dir = benchmark_dir / task |
| 93 | if not task_dir.is_dir(): |
| 94 | log.warning("Task directory not found: %s", task_dir) |
| 95 | continue |
| 96 | for case_dir in sorted(task_dir.iterdir()): |
| 97 | if not case_dir.is_dir(): |
| 98 | continue |
| 99 | prompt_wav = case_dir / "prompt.wav" |
| 100 | label_txt = case_dir / "label.txt" |
| 101 | if not label_txt.exists(): |
| 102 | log.warning("Missing label.txt: %s", case_dir) |
| 103 | continue |
| 104 | text = label_txt.read_text().strip() |
| 105 | cases.append((task, case_dir.name, prompt_wav, text)) |
| 106 | return cases |
| 107 | |
| 108 | |
| 109 | def run_batch( |