File size: 1,938 Bytes
8dae870
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import argparse
import sys
from core.cloner import KokoClone


def main() -> None:
    """Entry point for the KokoClone command-line tool."""
    parser = argparse.ArgumentParser(description="KokoClone: Zero-Shot Multilingual Voice Cloning")
    parser.add_argument(
        "--mode",
        choices=["tts", "convert"],
        default="tts",
        help="Operation mode: 'tts' (text → cloned speech) or 'convert' (audio → re-voiced speech)",
    )
    parser.add_argument("--text", type=str, help="[tts mode] Text to synthesize")
    parser.add_argument(
        "--lang",
        type=str,
        default="en",
        help="[tts mode] Language code (en, hi, fr, ja, zh, it, pt, es)",
    )
    parser.add_argument(
        "--source",
        type=str,
        help="[convert mode] Path to source audio file to re-voice (.wav)",
    )
    parser.add_argument("--ref", type=str, required=True, help="Path to reference voice audio file (.wav)")
    parser.add_argument("--out", type=str, default="output.wav", help="Output file path (.wav)")

    args = parser.parse_args()

    cloner = KokoClone()

    if args.mode == "tts":
        if not args.text:
            parser.error("--text is required when --mode is 'tts'")
        cloner.generate(
            text=args.text,
            lang=args.lang,
            reference_audio=args.ref,
            output_path=args.out,
        )

    elif args.mode == "convert":
        if not args.source:
            parser.error("--source is required when --mode is 'convert'")

        try:
            cloner.convert(
                source_audio=args.source,
                reference_audio=args.ref,
                output_path=args.out,
            )
        except Exception as exc:
            print(f"Error during voice conversion: {exc}", file=sys.stderr)
            sys.exit(1)


if __name__ == "__main__":
    main()