"""CLI: аудио файл → текст. Пример: python -m audio_audit.cli examples/jfk.wav python -m audio_audit.cli examples/jfk.wav --language ru --json """ from __future__ import annotations import argparse import json import sys from .engine import AuditEngine def main(argv=None) -> int: ap = argparse.ArgumentParser( prog="audit", description="Audit: аудио → текст (Whisper base)" ) ap.add_argument("audio", help="путь к аудио: wav, mp3, m4a, ogg, flac") ap.add_argument( "--language", "-l", default=None, help="язык, напр. ru или en; по умолчанию автоопределение", ) ap.add_argument("--beam-size", type=int, default=5, help="размер beam search") ap.add_argument( "--model-dir", default=None, help="каталог с весами (по умолчанию ./model)", ) ap.add_argument("--json", action="store_true", help="вывести полный JSON") args = ap.parse_args(argv) engine = AuditEngine(model_dir=args.model_dir) result = engine.transcribe(args.audio, language=args.language, beam_size=args.beam_size) if args.json: print(json.dumps(result, ensure_ascii=False, indent=2)) else: print(f"[{result['language']} p={result['language_probability']}]") print(result["text"]) return 0 if __name__ == "__main__": sys.exit(main())