File size: 2,293 Bytes
a44ca9d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | """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()
|