| |
| """Kokoro TTS CLI for AX650 NPU.""" |
| import argparse, sys, time, soundfile as sf |
| from kokoro_axera import KokoroEngine |
|
|
| def main(): |
| parser = argparse.ArgumentParser(description="Kokoro TTS on AX650 NPU") |
| parser.add_argument("--text", "-t", type=str, required=True, |
| help="Phoneme string (e.g. 'həlˈoʊ wˈɜːld')") |
| parser.add_argument("--output", "-o", type=str, default="output.wav", |
| help="Output WAV file path") |
| parser.add_argument("--model-dir", type=str, default=None, |
| help="Model directory path") |
| args = parser.parse_args() |
|
|
| print(f"Loading models...") |
| engine = KokoroEngine(model_dir=args.model_dir) |
| |
| print(f"Synthesizing: {args.text}") |
| t0 = time.time() |
| audio, sr = engine.synthesize(args.text) |
| elapsed = time.time() - t0 |
| duration = len(audio) / sr |
| |
| sf.write(args.output, audio, sr) |
| print(f"Done! {args.output}: {duration:.1f}s, RTF={elapsed/duration:.2f}") |
|
|
| if __name__ == "__main__": |
| main() |
|
|