File size: 1,302 Bytes
4e75a38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/usr/bin/env python3
"""Generate speech with Pocket TTS MNN."""

import argparse
import time
from pathlib import Path

from pocket_tts_mnn import PocketTTSMnn


def main() -> int:
    parser = argparse.ArgumentParser(description="Pocket TTS MNN generate")
    parser.add_argument("text")
    parser.add_argument("voice", help="Reference wav path or built-in voice name")
    parser.add_argument("output", help="Output wav path")
    parser.add_argument("--models-dir", default=".")
    parser.add_argument("--lsd-steps", type=int, default=1)
    parser.add_argument("--temperature", type=float, default=0.7)
    args = parser.parse_args()

    print("Loading MNN models...")
    t0 = time.time()
    tts = PocketTTSMnn(
        models_dir=args.models_dir,
        mnn_dir=str(Path(args.models_dir) / "mnn"),
        temperature=args.temperature,
        lsd_steps=args.lsd_steps,
    )
    print(f"Loaded in {time.time() - t0:.2f}s")

    t0 = time.time()
    audio = tts.generate(args.text, voice=args.voice)
    gen = time.time() - t0
    dur = len(audio) / tts.sample_rate
    print(f"Generated {dur:.2f}s audio in {gen:.2f}s (RTFx: {dur / gen:.2f}x)")
    tts.save_audio(audio, args.output)
    print(f"Saved {args.output}")
    return 0


if __name__ == "__main__":
    raise SystemExit(main())