Ava-82M / src /ava_tts /cli.py
xmanii's picture
Release Ava 82M v0.1
bb3a349 verified
Raw
History Blame Contribute Delete
1.53 kB
"""Command-line interface for Ava Persian TTS."""
from __future__ import annotations
import argparse
from pathlib import Path
from .model import Ava
def main() -> None:
parser = argparse.ArgumentParser(description="Generate Persian speech with Ava")
parser.add_argument("text", nargs="?", help="Persian text to speak")
parser.add_argument("--text-file", type=Path, help="read Persian text from a UTF-8 file")
parser.add_argument("-o", "--output", type=Path, default=Path("ava.wav"))
parser.add_argument("--speed", type=float, default=1.0)
parser.add_argument(
"--device",
choices=("auto", "cpu", "mps", "cuda"),
default="auto",
)
parser.add_argument(
"--raw-boundaries",
action="store_true",
help="disable the recommended leading/trailing artifact cleanup",
)
args = parser.parse_args()
text = args.text
if args.text_file:
text = args.text_file.read_text(encoding="utf-8")
if not text:
parser.error("provide Persian text or --text-file")
tts = Ava(device=args.device)
result = tts.generate(
text,
speed=args.speed,
cleanup=not args.raw_boundaries,
)
import soundfile as sf
args.output.parent.mkdir(parents=True, exist_ok=True)
sf.write(args.output, result.audio, result.sample_rate, subtype="PCM_16")
print(f"Saved {result.duration:.2f}s of speech to {args.output.resolve()}")
print(f"Device: {result.device}; segments: {len(result.phonemes)}")