Spaces:
Configuration error
Configuration error
Fedir Zadniprovskyi
commited on
Commit
·
7785332
1
Parent(s):
a5d79bf
feat: add API tags
Browse files
src/faster_whisper_server/main.py
CHANGED
|
@@ -12,12 +12,12 @@ from fastapi.middleware.cors import CORSMiddleware
|
|
| 12 |
|
| 13 |
from faster_whisper_server.dependencies import ApiKeyDependency, get_config, get_model_manager
|
| 14 |
from faster_whisper_server.logger import setup_logger
|
| 15 |
-
from faster_whisper_server.routers.list_models import (
|
| 16 |
-
router as list_models_router,
|
| 17 |
-
)
|
| 18 |
from faster_whisper_server.routers.misc import (
|
| 19 |
router as misc_router,
|
| 20 |
)
|
|
|
|
|
|
|
|
|
|
| 21 |
from faster_whisper_server.routers.stt import (
|
| 22 |
router as stt_router,
|
| 23 |
)
|
|
@@ -25,6 +25,19 @@ from faster_whisper_server.routers.stt import (
|
|
| 25 |
if TYPE_CHECKING:
|
| 26 |
from collections.abc import AsyncGenerator
|
| 27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
|
| 29 |
def create_app() -> FastAPI:
|
| 30 |
config = get_config() # HACK
|
|
@@ -53,10 +66,10 @@ def create_app() -> FastAPI:
|
|
| 53 |
if config.api_key is not None:
|
| 54 |
dependencies.append(ApiKeyDependency)
|
| 55 |
|
| 56 |
-
app = FastAPI(lifespan=lifespan, dependencies=dependencies)
|
| 57 |
|
| 58 |
app.include_router(stt_router)
|
| 59 |
-
app.include_router(
|
| 60 |
app.include_router(misc_router)
|
| 61 |
if speech_router is not None:
|
| 62 |
app.include_router(speech_router)
|
|
|
|
| 12 |
|
| 13 |
from faster_whisper_server.dependencies import ApiKeyDependency, get_config, get_model_manager
|
| 14 |
from faster_whisper_server.logger import setup_logger
|
|
|
|
|
|
|
|
|
|
| 15 |
from faster_whisper_server.routers.misc import (
|
| 16 |
router as misc_router,
|
| 17 |
)
|
| 18 |
+
from faster_whisper_server.routers.models import (
|
| 19 |
+
router as models_router,
|
| 20 |
+
)
|
| 21 |
from faster_whisper_server.routers.stt import (
|
| 22 |
router as stt_router,
|
| 23 |
)
|
|
|
|
| 25 |
if TYPE_CHECKING:
|
| 26 |
from collections.abc import AsyncGenerator
|
| 27 |
|
| 28 |
+
# https://swagger.io/docs/specification/v3_0/grouping-operations-with-tags/
|
| 29 |
+
# https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-tags
|
| 30 |
+
TAGS_METADATA = [
|
| 31 |
+
{"name": "automatic-speech-recognition"},
|
| 32 |
+
{"name": "speech-to-text"},
|
| 33 |
+
{"name": "models"},
|
| 34 |
+
{"name": "diagnostic"},
|
| 35 |
+
{
|
| 36 |
+
"name": "experimental",
|
| 37 |
+
"description": "Not meant for public use yet. May change or be removed at any time.",
|
| 38 |
+
},
|
| 39 |
+
]
|
| 40 |
+
|
| 41 |
|
| 42 |
def create_app() -> FastAPI:
|
| 43 |
config = get_config() # HACK
|
|
|
|
| 66 |
if config.api_key is not None:
|
| 67 |
dependencies.append(ApiKeyDependency)
|
| 68 |
|
| 69 |
+
app = FastAPI(lifespan=lifespan, dependencies=dependencies, openapi_tags=TAGS_METADATA)
|
| 70 |
|
| 71 |
app.include_router(stt_router)
|
| 72 |
+
app.include_router(models_router)
|
| 73 |
app.include_router(misc_router)
|
| 74 |
if speech_router is not None:
|
| 75 |
app.include_router(speech_router)
|
src/faster_whisper_server/routers/misc.py
CHANGED
|
@@ -13,7 +13,7 @@ from faster_whisper_server.dependencies import ModelManagerDependency # noqa: T
|
|
| 13 |
router = APIRouter()
|
| 14 |
|
| 15 |
|
| 16 |
-
@router.get("/health")
|
| 17 |
def health() -> Response:
|
| 18 |
return Response(status_code=200, content="OK")
|
| 19 |
|
|
|
|
| 13 |
router = APIRouter()
|
| 14 |
|
| 15 |
|
| 16 |
+
@router.get("/health", tags=["diagnostic"])
|
| 17 |
def health() -> Response:
|
| 18 |
return Response(status_code=200, content="OK")
|
| 19 |
|
src/faster_whisper_server/routers/{list_models.py → models.py}
RENAMED
|
@@ -18,7 +18,7 @@ from faster_whisper_server.hf_utils import list_whisper_models
|
|
| 18 |
if TYPE_CHECKING:
|
| 19 |
from huggingface_hub.hf_api import ModelInfo
|
| 20 |
|
| 21 |
-
router = APIRouter()
|
| 22 |
|
| 23 |
|
| 24 |
@router.get("/v1/models")
|
|
|
|
| 18 |
if TYPE_CHECKING:
|
| 19 |
from huggingface_hub.hf_api import ModelInfo
|
| 20 |
|
| 21 |
+
router = APIRouter(tags=["models"])
|
| 22 |
|
| 23 |
|
| 24 |
@router.get("/v1/models")
|
src/faster_whisper_server/routers/speech.py
CHANGED
|
@@ -43,7 +43,7 @@ MAX_SAMPLE_RATE = 48000
|
|
| 43 |
|
| 44 |
logger = logging.getLogger(__name__)
|
| 45 |
|
| 46 |
-
router = APIRouter()
|
| 47 |
|
| 48 |
|
| 49 |
# aip 'Write a function `resample_audio` which would take in RAW PCM 16-bit signed, little-endian audio data represented as bytes (`audio_bytes`) and resample it (either downsample or upsample) from `sample_rate` to `target_sample_rate` using numpy' # noqa: E501
|
|
|
|
| 43 |
|
| 44 |
logger = logging.getLogger(__name__)
|
| 45 |
|
| 46 |
+
router = APIRouter(tags=["speech-to-text"])
|
| 47 |
|
| 48 |
|
| 49 |
# aip 'Write a function `resample_audio` which would take in RAW PCM 16-bit signed, little-endian audio data represented as bytes (`audio_bytes`) and resample it (either downsample or upsample) from `sample_rate` to `target_sample_rate` using numpy' # noqa: E501
|
src/faster_whisper_server/routers/stt.py
CHANGED
|
@@ -55,7 +55,7 @@ if TYPE_CHECKING:
|
|
| 55 |
|
| 56 |
logger = logging.getLogger(__name__)
|
| 57 |
|
| 58 |
-
router = APIRouter()
|
| 59 |
|
| 60 |
|
| 61 |
# TODO: test async vs sync performance
|
|
|
|
| 55 |
|
| 56 |
logger = logging.getLogger(__name__)
|
| 57 |
|
| 58 |
+
router = APIRouter(tags=["automatic-speech-recognition"])
|
| 59 |
|
| 60 |
|
| 61 |
# TODO: test async vs sync performance
|