()
| 38 | |
| 39 | |
| 40 | def parse_args() -> argparse.Namespace: |
| 41 | parser = argparse.ArgumentParser( |
| 42 | description="Run FunASR over a representative audio set and write migration benchmark results." |
| 43 | ) |
| 44 | parser.add_argument("--input", "-i", type=Path, required=True, help="Audio file or folder to benchmark.") |
| 45 | parser.add_argument( |
| 46 | "--output-dir", |
| 47 | "-o", |
| 48 | type=Path, |
| 49 | default=Path("outputs/migration_benchmark"), |
| 50 | help="Directory for results.jsonl and summary.md.", |
| 51 | ) |
| 52 | parser.add_argument( |
| 53 | "--model", |
| 54 | "-m", |
| 55 | default="iic/SenseVoiceSmall", |
| 56 | help="FunASR model name or ModelScope/Hugging Face id.", |
| 57 | ) |
| 58 | parser.add_argument("--device", "-d", default="cpu", help="Inference device: cpu, cuda, or mps.") |
| 59 | parser.add_argument("--vad-model", default="fsmn-vad", help="VAD model, or 'none' to disable.") |
| 60 | parser.add_argument("--spk-model", default="", help="Optional speaker model such as cam++.") |
| 61 | parser.add_argument("--language", default="auto", help="Language hint passed to model.generate.") |
| 62 | parser.add_argument("--batch-size", type=int, default=1, help="batch_size passed to model.generate.") |
| 63 | parser.add_argument("--recursive", "-r", action="store_true", help="Recursively scan input folders.") |
| 64 | parser.add_argument( |
| 65 | "--extensions", |
| 66 | nargs="+", |
| 67 | default=list(AUDIO_EXTENSIONS), |
| 68 | help="Audio extensions to include when --input is a folder.", |
| 69 | ) |
| 70 | parser.add_argument( |
| 71 | "--metadata", |
| 72 | action="append", |
| 73 | default=[], |
| 74 | help="Free-form key=value metadata to copy into the summary, e.g. --metadata baseline=whisper-large-v3.", |
| 75 | ) |
| 76 | return parser.parse_args() |
| 77 | |
| 78 | |
| 79 | def normalize_extensions(values: Iterable[str]) -> List[str]: |
no outgoing calls
no test coverage detected
searching dependent graphs…