|
|
| """
|
| 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()
|
|
|
|
|
| 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() |