Files
vllm-omni/vllm_omni/entrypoints/openai/protocol/audio.py
T
2025-12-27 13:56:51 +08:00

43 lines
1.2 KiB
Python

from typing import Literal
import numpy as np
from pydantic import BaseModel, Field, field_validator
class OpenAICreateSpeechRequest(BaseModel):
input: str
model: str | None = None
voice: Literal["alloy", "ash", "ballad", "coral", "echo", "fable", "onyx", "nova", "sage", "shimmer", "verse"]
instructions: str | None = None
response_format: Literal["wav", "pcm", "flac", "mp3", "aac", "opus"]
speed: float | None = Field(
default=1.0,
ge=0.25,
le=4.0,
)
stream_format: Literal["sse", "audio"] | None = "audio"
@field_validator("stream_format")
@classmethod
def validate_stream_format(cls, v: str) -> str:
if v == "sse":
raise ValueError("'sse' is not a supported stream_format yet. Please use 'audio'.")
return v
class CreateAudio(BaseModel):
audio_tensor: np.ndarray
sample_rate: int = 24000
response_format: str = "wav"
speed: float = 1.0
stream_format: Literal["sse", "audio"] | None = "audio"
base64_encode: bool = True
class Config:
arbitrary_types_allowed = True
class AudioResponse(BaseModel):
audio_data: bytes | str
media_type: str