Download server.py from grimshaw/tts-api: direct link, hf CLI and curl.
- Browser
- Download file 3.23 kB
-
https://huggingface.co/spaces/grimshaw/tts-api/resolve/main/server.py
- Command line
-
hf download hf://spaces/grimshaw/tts-api/server.py
-
curl -L -o server.py https://huggingface.co/spaces/grimshaw/tts-api/resolve/main/server.py
3.23 kB
| #!/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() | |