#!/usr/bin/env python3 """ SuperTonic3 OpenAI-Compatible Server An OpenAI-compatible TTS API using the supertonic3 TTS engine. Runs on CPU, supports 31 languages with 10 built-in voices. Usage: python server.py [OPTIONS] # Or with environment variables: SUPERTONIC3_PORT=8080 python server.py """ import argparse import os import sys from app import create_app, init_tts_service from app.config import Config from app.logging_config import get_logger def parse_args(): parser = argparse.ArgumentParser( description='SuperTonic3 OpenAI-Compatible Server', formatter_class=argparse.RawDescriptionHelpFormatter, epilog=""" Examples: # Start with defaults python server.py # Custom port python server.py --port 8080 Environment Variables: SUPERTONIC3_HOST Server host (default: 0.0.0.0) SUPERTONIC3_PORT Server port (default: 7860) SUPERTONIC3_VOICE Default voice (default: M1) SUPERTONIC3_STREAM_DEFAULT Enable streaming by default SUPERTONIC3_TEXT_PREPROCESS_DEFAULT Enable text preprocessing by default SUPERTONIC3_LOG_LEVEL Log verbosity """, ) parser.add_argument( '--host', type=str, default=Config.HOST, help=f'Host to bind to (default: {Config.HOST})' ) parser.add_argument( '--port', type=int, default=Config.PORT, help=f'Port to listen on (default: {Config.PORT})' ) parser.add_argument( '--voice', type=str, default=Config.DEFAULT_VOICE, dest='voice', help=f'Default voice (default: {Config.DEFAULT_VOICE})', ) parser.add_argument( '--stream', action='store_true', default=Config.STREAM_DEFAULT, help='Enable streaming by default for all requests', ) parser.add_argument( '--text-preprocess', action='store_true', default=Config.TEXT_PREPROCESS_DEFAULT, help='Enable text preprocessing for all requests', ) parser.add_argument( '--log-level', type=str, default=Config.LOG_LEVEL, choices=['DEBUG', 'INFO', 'WARNING', 'ERROR'], dest='log_level', help='Logging level', ) return parser.parse_args() def main(): args = parse_args() os.environ.setdefault('SUPERTONIC3_LOG_LEVEL', args.log_level) app = create_app( {'STREAM_DEFAULT': args.stream, 'TEXT_PREPROCESS_DEFAULT': args.text_preprocess} ) logger = get_logger() try: init_tts_service(voice=args.voice) except Exception as e: logger.error(f'Failed to initialize TTS service: {e}') sys.exit(1) try: from waitress import serve logger.info(f'Starting SuperTonic3 server on http://{args.host}:{args.port}') logger.info('Press Ctrl+C to stop') serve(app, host=args.host, port=args.port, threads=4, url_scheme='http') except ImportError: logger.warning('Waitress not installed, falling back to Flask dev server') logger.warning('Install waitress for production: pip install waitress') app.run(host=args.host, port=args.port, debug=False, threaded=True) if __name__ == '__main__': main()