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(list_models_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