| 1 | # SPDX-License-Identifier: Apache-2.0 |
| 2 | # SPDX-FileCopyrightText: Copyright contributors to the vLLM project |
| 3 | |
| 4 | |
| 5 | from typing import TYPE_CHECKING |
| 6 | |
| 7 | from fastapi import FastAPI |
| 8 | |
| 9 | if TYPE_CHECKING: |
| 10 | from argparse import Namespace |
| 11 | |
| 12 | from starlette.datastructures import State |
| 13 | |
| 14 | from vllm.engine.protocol import EngineClient |
| 15 | from vllm.entrypoints.serve.utils.request_logger import RequestLogger |
| 16 | from vllm.tasks import SupportedTask |
| 17 | else: |
| 18 | RequestLogger = object |
| 19 | |
| 20 | |
| 21 | def register_speech_to_text_api_routers( |
| 22 | app: FastAPI, |
| 23 | supported_tasks: tuple["SupportedTask", ...], |
| 24 | ): |
| 25 | if "realtime" in supported_tasks: |
| 26 | from .realtime.api_router import router as realtime_router |
| 27 | |
| 28 | app.include_router(realtime_router) |
| 29 | |
| 30 | if "transcription" in supported_tasks: |
| 31 | from .transcription.api_router import router as transcription_router |
| 32 | |
| 33 | app.include_router(transcription_router) |
| 34 | |
| 35 | from .translation.api_router import router as translation_router |
| 36 | |
| 37 | app.include_router(translation_router) |
| 38 | |
| 39 | |
| 40 | def init_speech_to_text_state( |
| 41 | engine_client: "EngineClient", |
| 42 | state: "State", |
| 43 | args: "Namespace", |
| 44 | request_logger: RequestLogger | None, |
| 45 | supported_tasks: tuple["SupportedTask", ...], |
| 46 | ): |
| 47 | if "transcription" in supported_tasks: |
| 48 | from .transcription.serving import OpenAIServingTranscription |
| 49 | |
| 50 | state.openai_serving_transcription = OpenAIServingTranscription( |
| 51 | engine_client, |
| 52 | state.openai_serving_models, |
| 53 | request_logger=request_logger, |
| 54 | enable_force_include_usage=args.enable_force_include_usage, |
| 55 | ) |
| 56 | |
| 57 | from .translation.serving import OpenAIServingTranslation |
| 58 | |
| 59 | state.openai_serving_translation = OpenAIServingTranslation( |
| 60 | engine_client, |
| 61 | state.openai_serving_models, |
| 62 | request_logger=request_logger, |
| 63 | enable_force_include_usage=args.enable_force_include_usage, |
| 64 | ) |
| 65 | |
| 66 | if "realtime" in supported_tasks: |
| 67 | from .realtime.serving import OpenAIServingRealtime |
| 68 | |
| 69 | state.openai_serving_realtime = OpenAIServingRealtime( |
| 70 | engine_client, |
| 71 | state.openai_serving_models, |
| 72 | request_logger=request_logger, |
| 73 | ) |