| import argparse |
| import logging |
|
|
| from fastapi import FastAPI |
|
|
| from modules import config |
| from modules.api.Api import APIManager |
| from modules.api.impl import ( |
| google_api, |
| models_api, |
| openai_api, |
| ping_api, |
| refiner_api, |
| speaker_api, |
| ssml_api, |
| style_api, |
| tts_api, |
| xtts_v2_api, |
| ) |
| from modules.utils import env |
|
|
| logger = logging.getLogger(__name__) |
|
|
|
|
| def create_api(app: FastAPI, exclude=[]): |
| app_mgr = APIManager(app=app, exclude_patterns=exclude) |
|
|
| ping_api.setup(app_mgr) |
| models_api.setup(app_mgr) |
| style_api.setup(app_mgr) |
| speaker_api.setup(app_mgr) |
| tts_api.setup(app_mgr) |
| ssml_api.setup(app_mgr) |
| google_api.setup(app_mgr) |
| openai_api.setup(app_mgr) |
| refiner_api.setup(app_mgr) |
| xtts_v2_api.setup(app_mgr) |
|
|
| return app_mgr |
|
|
|
|
| def setup_api_args(parser: argparse.ArgumentParser): |
| parser.add_argument( |
| "--cors_origin", |
| type=str, |
| help="Allowed CORS origins. Use '*' to allow all origins.", |
| ) |
| parser.add_argument( |
| "--no_playground", |
| action="store_true", |
| help="Disable the playground entry", |
| ) |
| parser.add_argument( |
| "--no_docs", |
| action="store_true", |
| help="Disable the documentation entry", |
| ) |
| |
| parser.add_argument( |
| "--exclude", |
| type=str, |
| help="Exclude the specified API from the server", |
| ) |
|
|
|
|
| def process_api_args(args: argparse.Namespace, app: FastAPI): |
| cors_origin = env.get_and_update_env(args, "cors_origin", "*", str) |
| no_playground = env.get_and_update_env(args, "no_playground", False, bool) |
| no_docs = env.get_and_update_env(args, "no_docs", False, bool) |
| exclude = env.get_and_update_env(args, "exclude", "", str) |
|
|
| api = create_api(app=app, exclude=exclude.split(",")) |
| config.api = api |
|
|
| if cors_origin: |
| api.set_cors(allow_origins=[cors_origin]) |
|
|
| if not no_playground: |
| api.setup_playground() |
|
|
| if compile: |
| logger.info("Model compile is enabled") |
|
|