File size: 1,458 Bytes
313814b
 
3a14175
8f3dcc9
313814b
d0feed8
 
 
e0e6882
313814b
39ee116
 
 
 
8f3dcc9
 
 
 
 
 
 
 
 
d0feed8
313814b
dc4f25f
8f3dcc9
dc4f25f
aada575
65e955b
 
3a14175
 
 
 
624f97e
3a14175
 
 
 
313814b
8f3dcc9
 
 
 
e0e6882
9d4a9a2
 
e0e6882
9d4a9a2
 
 
 
 
4e64465
 
 
 
 
 
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
from __future__ import annotations

from contextlib import asynccontextmanager
from typing import TYPE_CHECKING

from fastapi import (
    FastAPI,
)
from fastapi.middleware.cors import CORSMiddleware

from faster_whisper_server.config import (
    config,
)
from faster_whisper_server.logger import logger
from faster_whisper_server.model_manager import model_manager
from faster_whisper_server.routers.list_models import (
    router as list_models_router,
)
from faster_whisper_server.routers.misc import (
    router as misc_router,
)
from faster_whisper_server.routers.stt import (
    router as stt_router,
)

if TYPE_CHECKING:
    from collections.abc import AsyncGenerator


logger.debug(f"Config: {config}")


@asynccontextmanager
async def lifespan(_app: FastAPI) -> AsyncGenerator[None, None]:
    for model_name in config.preload_models:
        model_manager.load_model(model_name)
    yield


app = FastAPI(lifespan=lifespan)

app.include_router(stt_router)
app.include_router(list_models_router)
app.include_router(misc_router)

if config.allow_origins is not None:
    app.add_middleware(
        CORSMiddleware,
        allow_origins=config.allow_origins,
        allow_credentials=True,
        allow_methods=["*"],
        allow_headers=["*"],
    )

if config.enable_ui:
    import gradio as gr

    from faster_whisper_server.gradio_app import create_gradio_demo

    app = gr.mount_gradio_app(app, create_gradio_demo(config), path="/")