File size: 1,705 Bytes
409d4fb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""Command line:  python -m lgtm.cli --text "Xin chào" --lang vi --voice F1 --out out.wav [--ref ref.wav] [--backend onnx]"""
import argparse


def main():
    ap = argparse.ArgumentParser(description="LGTM text-to-speech")
    ap.add_argument("--text", required=True)
    ap.add_argument("--lang", default="en", help="en es pt fr de it sv vi ja ko id")
    ap.add_argument("--voice", default="F1", help="preset (F1-F5, M1-M5) or voice .json")
    ap.add_argument("--ref", default=None, help="reference .wav to clone the voice from (overrides --voice)")
    ap.add_argument("--save_voice", default=None, help="save the cloned voice to this .json")
    ap.add_argument("--out", default="out.wav")
    ap.add_argument("--model", default=".", help="local model dir or Hugging Face repo id")
    ap.add_argument("--backend", choices=["torch", "onnx"], default="torch")
    ap.add_argument("--steps", type=int, default=8)
    ap.add_argument("--speed", type=float, default=1.05)
    ap.add_argument("--gpu", action="store_true", help="(onnx) use CUDAExecutionProvider")
    a = ap.parse_args()
    if a.backend == "onnx":
        from .onnx_inference import LGTMOnnx, save_voice_style
        tts = LGTMOnnx.from_pretrained(a.model, use_gpu=a.gpu)
    else:
        from .inference import LGTMTTS, save_voice_style
        tts = LGTMTTS.from_pretrained(a.model)
    voice = tts.clone_voice(a.ref) if a.ref else a.voice
    if a.ref and a.save_voice:
        save_voice_style(a.save_voice, voice)
    wav = tts.synthesize(a.text, lang=a.lang, voice=voice, steps=a.steps, speed=a.speed)
    tts.save_wav(wav, a.out)
    print(f"wrote {a.out} ({len(wav) / 44100:.2f} s)")


if __name__ == "__main__":
    main()