File size: 3,233 Bytes
d2ee1c3 d715e26 d2ee1c3 d715e26 d2ee1c3 d715e26 d2ee1c3 d715e26 d2ee1c3 d715e26 d2ee1c3 d715e26 d2ee1c3 d715e26 d2ee1c3 d715e26 d2ee1c3 a05aaa6 d2ee1c3 d715e26 d2ee1c3 a05aaa6 d2ee1c3 d715e26 d2ee1c3 d715e26 d2ee1c3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | #!/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()
|