Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """ | |
| Soprano TTS Command Line Interface | |
| """ | |
| import argparse | |
| from soprano import SopranoTTS | |
| from soprano.utils.streaming import play_stream | |
| def main(): | |
| parser = argparse.ArgumentParser(description='Soprano Text-to-Speech CLI') | |
| parser.add_argument('text', help='Text to synthesize') | |
| parser.add_argument('--output', '-o', default='output.wav', | |
| help='Output audio file path (non-streaming only)') | |
| parser.add_argument('--model-path', '-m', | |
| help='Path to local model directory (optional)') | |
| parser.add_argument('--device', '-d', default='auto', | |
| choices=['auto', 'cuda', 'cpu', 'mps'], | |
| help='Device to use for inference') | |
| parser.add_argument('--backend', '-b', default='auto', | |
| choices=['auto', 'transformers', 'lmdeploy'], | |
| help='Backend to use for inference') | |
| parser.add_argument('--cache-size', '-c', type=int, default=100, | |
| help='Cache size in MB (for lmdeploy backend)') | |
| parser.add_argument('--decoder-batch-size', '-bs', type=int, default=1, | |
| help='Batch size when decoding audio') | |
| parser.add_argument('--streaming', '-s', action='store_true', | |
| help='Enable streaming playback to speakers') | |
| args = parser.parse_args() | |
| # Initialize TTS | |
| tts = SopranoTTS( | |
| backend=args.backend, | |
| device=args.device, | |
| cache_size_mb=args.cache_size, | |
| decoder_batch_size=args.decoder_batch_size, | |
| model_path=args.model_path | |
| ) | |
| print(f"Generating speech for: '{args.text}'") | |
| if args.streaming: | |
| stream = tts.infer_stream(args.text, chunk_size=1) | |
| play_stream(stream) | |
| else: | |
| tts.infer(args.text, out_path=args.output) | |
| print(f"Audio saved to: {args.output}") | |
| if __name__ == "__main__": | |
| main() |