File size: 1,631 Bytes
de996a0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/usr/bin/env python3
"""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  # noqa: E402


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()