kokoclone / cli.py
PatnaikAshish's picture
Update cli.py
5e8b2a1 verified
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()