69 lines
1.7 KiB
Python
69 lines
1.7 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
|
|
|
import time
|
|
from typing import Literal
|
|
|
|
from pydantic import Field
|
|
|
|
from vllm.entrypoints.openai.engine.protocol import (
|
|
OpenAIBaseModel,
|
|
UsageInfo,
|
|
)
|
|
from vllm.utils import random_uuid
|
|
|
|
# Client -> Server Events
|
|
|
|
|
|
class InputAudioBufferAppend(OpenAIBaseModel):
|
|
"""Append audio chunk to buffer"""
|
|
|
|
type: Literal["input_audio_buffer.append"] = "input_audio_buffer.append"
|
|
audio: str # base64-encoded PCM16 @ 16kHz
|
|
|
|
|
|
class InputAudioBufferCommit(OpenAIBaseModel):
|
|
"""Process accumulated audio buffer"""
|
|
|
|
type: Literal["input_audio_buffer.commit"] = "input_audio_buffer.commit"
|
|
final: bool = False
|
|
|
|
|
|
# Server -> Client Events
|
|
class SessionUpdate(OpenAIBaseModel):
|
|
"""Configure session parameters"""
|
|
|
|
type: Literal["session.update"] = "session.update"
|
|
model: str | None = None
|
|
|
|
|
|
class SessionCreated(OpenAIBaseModel):
|
|
"""Connection established notification"""
|
|
|
|
type: Literal["session.created"] = "session.created"
|
|
id: str = Field(default_factory=lambda: f"sess-{random_uuid()}")
|
|
created: int = Field(default_factory=lambda: int(time.time()))
|
|
|
|
|
|
class TranscriptionDelta(OpenAIBaseModel):
|
|
"""Incremental transcription text"""
|
|
|
|
type: Literal["transcription.delta"] = "transcription.delta"
|
|
delta: str # Incremental text
|
|
|
|
|
|
class TranscriptionDone(OpenAIBaseModel):
|
|
"""Final transcription with usage stats"""
|
|
|
|
type: Literal["transcription.done"] = "transcription.done"
|
|
text: str # Complete transcription
|
|
usage: UsageInfo | None = None
|
|
|
|
|
|
class ErrorEvent(OpenAIBaseModel):
|
|
"""Error notification"""
|
|
|
|
type: Literal["error"] = "error"
|
|
error: str
|
|
code: str | None = None
|