| |
| """MOSS-TTS-Nano 中文语音合成 demo。 |
| |
| 用法: |
| python demo.py --text "欢迎关注模思智能" [--out out.wav] [--provider auto] |
| """ |
| from __future__ import annotations |
|
|
| import argparse |
| import sys |
| from pathlib import Path |
|
|
| ROOT = Path(__file__).resolve().parent |
| sys.path.insert(0, str(ROOT)) |
|
|
| from moss_tts_sdk import MossTTSNano |
|
|
|
|
| def main(): |
| ap = argparse.ArgumentParser() |
| ap.add_argument("--text", default="欢迎关注模思智能、上海创智学院与复旦大学自然语言处理实验室。") |
| ap.add_argument("--out", default=str(ROOT.parent.parent / "out.wav")) |
| ap.add_argument("--model-dir", default=str(ROOT.parent.parent / "models")) |
| ap.add_argument("--provider", default="auto", choices=["auto", "axengine", "onnxruntime"]) |
| ap.add_argument("--max-frames", type=int, default=375) |
| ap.add_argument("--seed", type=int, default=None) |
| args = ap.parse_args() |
|
|
| print(f"[demo] loading model from {args.model_dir} (provider={args.provider}) ...") |
| tts = MossTTSNano(args.model_dir, provider=args.provider) |
| print(f"[demo] decoding provider: {tts.decoder['type']}") |
| print(f"[demo] synthesizing: {args.text}") |
| result = tts.synthesize(args.text, args.out, max_new_frames=args.max_frames, seed=args.seed) |
| print(f"[demo] done: {result['audio_path']}") |
| print(f"[demo] duration={result['duration_s']:.2f}s frames={result['frames']} " |
| f"provider={result['provider']} llm={result.get('llm_backend', 'cpu')} " |
| f"sr={result['sample_rate']} channels={result['channels']}") |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|