"""Inflect-Nano-v2 TTS CLI Usage: python -m inflect_tts_sdk --text "Hello world" --output output.wav python -m inflect_tts_sdk --text "Hello world" --output output.wav --speed 1.2 --variation 0.5 """ import argparse, sys, time from pathlib import Path def main(): parser = argparse.ArgumentParser( description="Inflect-Nano-v2 TTS CLI for AX650 NPU3", formatter_class=argparse.RawDescriptionHelpFormatter, epilog="""Examples: python -m inflect_tts_sdk --text "Hello world" --output hello.wav python -m inflect_tts_sdk --text "Hello!" --speed 1.5 --variation 0.3 python -m inflect_tts_sdk --text "Hello!" --model-dir /path/to/models """) parser.add_argument("--text", required=True, help="Input text to synthesize") parser.add_argument("--output", required=True, help="Output WAV file path") parser.add_argument("--model-dir", default=None, help="Model directory (default: auto-detect)") parser.add_argument("--speed", type=float, default=1.0, help="Playback speed 0.5-2.0 (default: 1.0)") parser.add_argument("--variation", type=float, default=0.667, help="Voice variation 0.0-1.0 (default: 0.667)") parser.add_argument("--seed", type=int, default=0, help="Random seed (default: 0)") args = parser.parse_args() print(f"🎤 Text: {args.text}") print(f"📁 Output: {args.output}") sys.path.insert(0, str(Path(__file__).resolve().parent)) from tts_engine import InflectTTSEngine try: engine = InflectTTSEngine(model_dir=args.model_dir) except Exception as e: print(f"❌ Failed to init engine: {e}") print(" Make sure axmodels are at models/ or use --model-dir") sys.exit(1) t0 = time.perf_counter() engine.save( args.text, args.output, speed=args.speed, variation=args.variation, seed=args.seed, ) elapsed = time.perf_counter() - t0 import soundfile as sf info = sf.info(args.output) rtf = elapsed / info.duration if info.duration > 0 else 0 print(f"✅ Done! {info.duration:.2f}s audio, {elapsed:.2f}s wall, RTF={rtf:.3f}x") print(f"🔊 {args.output}") if __name__ == "__main__": main()