Skip to content

vllm_omni.metrics.definitions

Single source of truth for vLLM-Omni Prometheus + bench CLI metric naming.

Consumed by: - vllm_omni.metrics.prometheus (server-side /metrics pipeline families) - vllm_omni.metrics.modality (audio families) - vllm_omni.metrics.transfer (cross-stage transfer families) - vllm_omni.benchmarks.metrics.metrics (bench CLI MultiModalsBenchmarkMetrics)

Naming conventions for the vllm_omni:* families exposed here: time-bearing metrics use the _s suffix (values in seconds), counters use _total (auto-suffixed by the prometheus client), sizes use _bytes.

AUDIO_CHANNELS_ENV module-attribute

AUDIO_CHANNELS_ENV = 'VLLM_OMNI_BENCH_AUDIO_CHANNELS'

AUDIO_CONTINUITY_DEFAULT_THRESHOLD_S module-attribute

AUDIO_CONTINUITY_DEFAULT_THRESHOLD_S = 0.1

AUDIO_CONTINUITY_LABELS module-attribute

AUDIO_CONTINUITY_LABELS = (
    "model_name",
    "stage",
    "replica",
    "threshold_ms",
)

AUDIO_CONTINUITY_OK module-attribute

AUDIO_CONTINUITY_OK = 'audio_continuity_ok'

AUDIO_CONTINUITY_OK_METRIC module-attribute

AUDIO_CONTINUITY_OK_METRIC = (
    METRIC_PREFIX + AUDIO_CONTINUITY_OK
)

AUDIO_CONTINUITY_OK_RATE module-attribute

AUDIO_CONTINUITY_OK_RATE = f'{AUDIO_CONTINUITY_OK}_rate'

AUDIO_DURATION module-attribute

AUDIO_DURATION = 'audio_duration'

AUDIO_DURATIONS module-attribute

AUDIO_DURATIONS = 'audio_durations'

AUDIO_DURATION_S module-attribute

AUDIO_DURATION_S = METRIC_PREFIX + AUDIO_DURATION + '_s'

AUDIO_FRAMES module-attribute

AUDIO_FRAMES = 'audio_frames'

AUDIO_FRAMES_METRIC module-attribute

AUDIO_FRAMES_METRIC = METRIC_PREFIX + AUDIO_FRAMES

AUDIO_RTF module-attribute

AUDIO_RTF = 'audio_rtf'

AUDIO_RTF_METRIC module-attribute

AUDIO_RTF_METRIC = METRIC_PREFIX + AUDIO_RTF

AUDIO_SAMPLE_RATE module-attribute

AUDIO_SAMPLE_RATE = 'audio_sample_rate'

AUDIO_SAMPLE_RATE_ENV module-attribute

AUDIO_SAMPLE_RATE_ENV = 'VLLM_OMNI_BENCH_AUDIO_SAMPLE_RATE'

AUDIO_SKIPPED_LABELS module-attribute

AUDIO_SKIPPED_LABELS = (
    "model_name",
    "stage",
    "replica",
    "reason",
)

AUDIO_SKIPPED_REQUESTS module-attribute

AUDIO_SKIPPED_REQUESTS = 'audio_skipped_requests'

AUDIO_SKIPPED_REQUESTS_METRIC module-attribute

AUDIO_SKIPPED_REQUESTS_METRIC = (
    METRIC_PREFIX + AUDIO_SKIPPED_REQUESTS
)

AUDIO_THROUGHPUT module-attribute

AUDIO_THROUGHPUT = 'audio_throughput'

AUDIO_TTFP module-attribute

AUDIO_TTFP = 'audio_ttfp'

AUDIO_TTFPS module-attribute

AUDIO_TTFPS = 'audio_ttfps'

AUDIO_TTFP_S module-attribute

AUDIO_TTFP_S = METRIC_PREFIX + AUDIO_TTFP + '_s'

AUDIO_UNDERRUN module-attribute

AUDIO_UNDERRUN = 'audio_underrun'

AUDIO_UNDERRUN_S module-attribute

AUDIO_UNDERRUN_S = METRIC_PREFIX + AUDIO_UNDERRUN + '_s'

AVERAGE_PIXELS_PER_IMAGE module-attribute

AVERAGE_PIXELS_PER_IMAGE = 'average_pixels_per_image'

BYTES_BUCKETS module-attribute

BYTES_BUCKETS = (
    1024,
    4096,
    16384,
    65536,
    262144,
    1048576,
    4194304,
    16777216,
    67108864,
    268435456,
)

DEFAULT_AUDIO_CHANNELS module-attribute

DEFAULT_AUDIO_CHANNELS = 1

DEFAULT_AUDIO_SAMPLE_RATE module-attribute

DEFAULT_AUDIO_SAMPLE_RATE = 24000

DEFAULT_AUDIO_SAMPLE_WIDTH module-attribute

DEFAULT_AUDIO_SAMPLE_WIDTH = 2

DENOISE_STEP_LATENCY module-attribute

DENOISE_STEP_LATENCY = 'denoise_step_latency'

DENOISE_STEP_LATENCY_MS module-attribute

DENOISE_STEP_LATENCY_MS = f'{DENOISE_STEP_LATENCY}_ms'

DENOISE_STEP_LATENCY_S module-attribute

DENOISE_STEP_LATENCY_S = (
    METRIC_PREFIX + DENOISE_STEP_LATENCY + "_s"
)

DIFFUSION_EXEC_PER_STEP_S module-attribute

DIFFUSION_EXEC_PER_STEP_S = (
    METRIC_PREFIX + "diffusion_exec_per_step_s"
)

DIFFUSION_EXEC_S module-attribute

DIFFUSION_EXEC_S = METRIC_PREFIX + 'diffusion_exec_s'

DIFFUSION_FORWARD_S module-attribute

DIFFUSION_FORWARD_S = METRIC_PREFIX + 'diffusion_forward_s'

DIFFUSION_KV_LOAD_S module-attribute

DIFFUSION_KV_LOAD_S = METRIC_PREFIX + 'diffusion_kv_load_s'

DIFFUSION_LABELS module-attribute

DIFFUSION_LABELS = ('model_name', 'stage')

DIFFUSION_POSTPROCESS_S module-attribute

DIFFUSION_POSTPROCESS_S = (
    METRIC_PREFIX + "diffusion_postprocess_s"
)

DIFFUSION_PREPROCESS_S module-attribute

DIFFUSION_PREPROCESS_S = (
    METRIC_PREFIX + "diffusion_preprocess_s"
)

DIFFUSION_SCHEDULER_WAITING_KEY module-attribute

DIFFUSION_SCHEDULER_WAITING_KEY = (
    "scheduler_num_waiting_reqs"
)

E2E_REQUEST_LATENCY_S module-attribute

E2E_REQUEST_LATENCY_S = (
    METRIC_PREFIX + "e2e_request_latency_s"
)

FAILED_LABELS module-attribute

FAILED_LABELS = ('model_name', 'reason')

GENERATION_TOKENS module-attribute

GENERATION_TOKENS = METRIC_PREFIX + 'generation_tokens'

IMAGE_COUNT module-attribute

IMAGE_COUNT = 'image_count'

IMAGE_COUNT_METRIC module-attribute

IMAGE_COUNT_METRIC = METRIC_PREFIX + IMAGE_COUNT

IMAGE_GENERATION module-attribute

IMAGE_GENERATION = 'image_generation'

IMAGE_GENERATION_TIME_MS module-attribute

IMAGE_GENERATION_TIME_MS = f'{IMAGE_GENERATION}_time_ms'

IMAGE_PIXELS module-attribute

IMAGE_PIXELS = 'image_pixels'

IMAGE_PIXELS_METRIC module-attribute

IMAGE_PIXELS_METRIC = METRIC_PREFIX + IMAGE_PIXELS

IMAGE_THROUGHPUT module-attribute

IMAGE_THROUGHPUT = 'image_throughput'

IMAGE_TIME_TO_FIRST_OUTPUT_MS module-attribute

IMAGE_TIME_TO_FIRST_OUTPUT_MS = (
    "image_time_to_first_output_ms"
)

IMAGE_TTFP_S module-attribute

IMAGE_TTFP_S = METRIC_PREFIX + 'image_ttfp_s'

INTER_OUTPUT_LATENCIES_MS module-attribute

INTER_OUTPUT_LATENCIES_MS = 'inter_output_latencies_ms'

INTER_OUTPUT_LATENCY_MS module-attribute

INTER_OUTPUT_LATENCY_MS = 'inter_output_latency_ms'

ITLS module-attribute

ITLS = 'itls'

KV_WAIT_LABELS module-attribute

KV_WAIT_LABELS = ('model_name', 'connector_type')

KV_WAIT_S module-attribute

KV_WAIT_S = METRIC_PREFIX + 'kv_wait_s'

MEAN_AUDIO_DURATION_S module-attribute

MEAN_AUDIO_DURATION_S = f'mean_{AUDIO_DURATION}_s'

MEAN_AUDIO_RTF module-attribute

MEAN_AUDIO_RTF = f'mean_{AUDIO_RTF}'

MEAN_AUDIO_TTFP_MS module-attribute

MEAN_AUDIO_TTFP_MS = f'mean_{AUDIO_TTFP}_ms'

MEAN_AUDIO_UNDERRUN_S module-attribute

MEAN_AUDIO_UNDERRUN_S = f'mean_{AUDIO_UNDERRUN}_s'

MEAN_DENOISE_STEP_LATENCY_MS module-attribute

MEAN_DENOISE_STEP_LATENCY_MS = (
    f"mean_{DENOISE_STEP_LATENCY}_ms"
)

MEAN_IMAGE_GENERATION_MS module-attribute

MEAN_IMAGE_GENERATION_MS = f'mean_{IMAGE_GENERATION}_ms'

MEAN_PEAK_MEMORY_MB module-attribute

MEAN_PEAK_MEMORY_MB = f'mean_{PEAK_MEMORY_MB}'

MEAN_VIDEO_GENERATION_MS module-attribute

MEAN_VIDEO_GENERATION_MS = f'mean_{VIDEO_GENERATION}_ms'

MEAN_VIDEO_RTF module-attribute

MEAN_VIDEO_RTF = f'mean_{VIDEO_RTF}'

MEDIAN_AUDIO_DURATION_S module-attribute

MEDIAN_AUDIO_DURATION_S = f'median_{AUDIO_DURATION}_s'

MEDIAN_AUDIO_RTF module-attribute

MEDIAN_AUDIO_RTF = f'median_{AUDIO_RTF}'

MEDIAN_AUDIO_TTFP_MS module-attribute

MEDIAN_AUDIO_TTFP_MS = f'median_{AUDIO_TTFP}_ms'

MEDIAN_AUDIO_UNDERRUN_S module-attribute

MEDIAN_AUDIO_UNDERRUN_S = f'median_{AUDIO_UNDERRUN}_s'

MEDIAN_IMAGE_GENERATION_MS module-attribute

MEDIAN_IMAGE_GENERATION_MS = f"median_{IMAGE_GENERATION}_ms"

MEDIAN_PEAK_MEMORY_MB module-attribute

MEDIAN_PEAK_MEMORY_MB = f'median_{PEAK_MEMORY_MB}'

MEDIAN_VIDEO_GENERATION_MS module-attribute

MEDIAN_VIDEO_GENERATION_MS = f"median_{VIDEO_GENERATION}_ms"

MEDIAN_VIDEO_RTF module-attribute

MEDIAN_VIDEO_RTF = f'median_{VIDEO_RTF}'

METRIC_PREFIX module-attribute

METRIC_PREFIX = 'vllm_omni:'

MISSING_AUDIO_DURATION_COUNT module-attribute

MISSING_AUDIO_DURATION_COUNT = (
    "missing_audio_duration_count"
)

NUM_INFERENCE_STEPS module-attribute

NUM_INFERENCE_STEPS = METRIC_PREFIX + 'num_inference_steps'

NUM_REQUESTS_RUNNING module-attribute

NUM_REQUESTS_RUNNING = (
    METRIC_PREFIX + "num_requests_running"
)

NUM_REQUESTS_WAITING module-attribute

NUM_REQUESTS_WAITING = (
    METRIC_PREFIX + "num_requests_waiting"
)

NUM_TOKENS_IN module-attribute

NUM_TOKENS_IN = 'num_tokens_in'

NUM_TOKENS_OUT module-attribute

NUM_TOKENS_OUT = 'num_tokens_out'

OUTPUT_UNIT_COUNT module-attribute

OUTPUT_UNIT_COUNT = 'output_unit_count'

PEAK_MEMORY_MB module-attribute

PEAK_MEMORY_MB = 'peak_memory_mb'

PEAK_MEMORY_MB_METRIC module-attribute

PEAK_MEMORY_MB_METRIC = METRIC_PREFIX + 'peak_memory_mb'

PERCENTILES_AUDIO_DURATION_S module-attribute

PERCENTILES_AUDIO_DURATION_S = (
    f"percentiles_{AUDIO_DURATION}_s"
)

PERCENTILES_AUDIO_RTF module-attribute

PERCENTILES_AUDIO_RTF = f'percentiles_{AUDIO_RTF}'

PERCENTILES_AUDIO_TTFP_MS module-attribute

PERCENTILES_AUDIO_TTFP_MS = f'percentiles_{AUDIO_TTFP}_ms'

PERCENTILES_AUDIO_UNDERRUN_S module-attribute

PERCENTILES_AUDIO_UNDERRUN_S = (
    f"percentiles_{AUDIO_UNDERRUN}_s"
)

PERCENTILES_IMAGE_GENERATION_MS module-attribute

PERCENTILES_IMAGE_GENERATION_MS = (
    f"percentiles_{IMAGE_GENERATION}_ms"
)

PERCENTILES_PEAK_MEMORY_MB module-attribute

PERCENTILES_PEAK_MEMORY_MB = f"percentiles_{PEAK_MEMORY_MB}"

PERCENTILES_VIDEO_GENERATION_MS module-attribute

PERCENTILES_VIDEO_GENERATION_MS = (
    f"percentiles_{VIDEO_GENERATION}_ms"
)

PERCENTILES_VIDEO_RTF module-attribute

PERCENTILES_VIDEO_RTF = f'percentiles_{VIDEO_RTF}'

PIPELINE_LABELS module-attribute

PIPELINE_LABELS = ('model_name',)

POSTPROCESS_TIME module-attribute

POSTPROCESS_TIME = 'postprocess_time'

POSTPROCESS_TIMES_MS module-attribute

POSTPROCESS_TIMES_MS = f'{POSTPROCESS_TIME}s_ms'

POSTPROCESS_TIME_MS module-attribute

POSTPROCESS_TIME_MS = f'{POSTPROCESS_TIME}_ms'

PROMPT_TOKENS module-attribute

PROMPT_TOKENS = METRIC_PREFIX + 'prompt_tokens'

REALTIME_VAD_ACTIVE_SESSIONS module-attribute

REALTIME_VAD_ACTIVE_SESSIONS = (
    METRIC_PREFIX + "realtime_vad_active_sessions"
)

REALTIME_VAD_ENDPOINT_DELAY_S module-attribute

REALTIME_VAD_ENDPOINT_DELAY_S = (
    METRIC_PREFIX + "realtime_vad_endpoint_delay_s"
)

REALTIME_VAD_ERRORS module-attribute

REALTIME_VAD_ERRORS = METRIC_PREFIX + 'realtime_vad_errors'

REALTIME_VAD_INFERENCE_LATENCY_S module-attribute

REALTIME_VAD_INFERENCE_LATENCY_S = (
    METRIC_PREFIX + "realtime_vad_inference_latency_s"
)

REQUESTS_FAILED module-attribute

REQUESTS_FAILED = METRIC_PREFIX + 'requests_failed'

REQUESTS_SUCCESS module-attribute

REQUESTS_SUCCESS = METRIC_PREFIX + 'requests_success'

REQUEST_QUEUE_WAIT_S module-attribute

REQUEST_QUEUE_WAIT_S = (
    METRIC_PREFIX + "request_queue_wait_s"
)

RTF_BUCKETS module-attribute

RTF_BUCKETS = (
    0.1,
    0.25,
    0.5,
    0.75,
    0.9,
    1.0,
    1.25,
    1.5,
    2.0,
    5.0,
    10.0,
)

SECONDS_BUCKETS module-attribute

SECONDS_BUCKETS = (
    0.05,
    0.1,
    0.25,
    0.5,
    1.0,
    2.0,
    5.0,
    10.0,
    20.0,
    30.0,
    60.0,
    120.0,
    300.0,
)

SECONDS_FAST_BUCKETS module-attribute

SECONDS_FAST_BUCKETS = (
    0.001,
    0.005,
    0.01,
    0.025,
    0.05,
    0.1,
    0.25,
    0.5,
    1.0,
    2.5,
    5.0,
    10.0,
    60.0,
)

SERVING_TIME_TO_FIRST_OUTPUTS_MS module-attribute

SERVING_TIME_TO_FIRST_OUTPUTS_MS = (
    "serving_time_to_first_outputs_ms"
)

SERVING_TIME_TO_FIRST_OUTPUT_MS module-attribute

SERVING_TIME_TO_FIRST_OUTPUT_MS = (
    "serving_time_to_first_output_ms"
)

SPEECH_STREAM_ABORTED_METRIC module-attribute

SPEECH_STREAM_ABORTED_METRIC = (
    METRIC_PREFIX + "speech_stream_aborted"
)

SPEECH_STREAM_COMPLETED_METRIC module-attribute

SPEECH_STREAM_COMPLETED_METRIC = (
    METRIC_PREFIX + "speech_stream_completed"
)

STAGE_DURATIONS_MEAN module-attribute

STAGE_DURATIONS_MEAN = 'stage_durations_mean'

STAGE_DURATIONS_P50 module-attribute

STAGE_DURATIONS_P50 = 'stage_durations_p50'

STAGE_DURATIONS_P99 module-attribute

STAGE_DURATIONS_P99 = 'stage_durations_p99'

STAGE_GEN_TIME module-attribute

STAGE_GEN_TIME = 'stage_gen_time'

STAGE_GEN_TIMES_MS module-attribute

STAGE_GEN_TIMES_MS = f'{STAGE_GEN_TIME}s_ms'

STAGE_GEN_TIME_LABELS module-attribute

STAGE_GEN_TIME_LABELS = (
    "model_name",
    "stage",
    "stage_type",
)

STAGE_GEN_TIME_MS module-attribute

STAGE_GEN_TIME_MS = f'{STAGE_GEN_TIME}_ms'

STAGE_GEN_TIME_S module-attribute

STAGE_GEN_TIME_S = METRIC_PREFIX + 'stage_gen_time_s'

STAGE_IN_QUEUE_S module-attribute

STAGE_IN_QUEUE_S = METRIC_PREFIX + 'stage_in_queue_s'

STAGE_LABELS module-attribute

STAGE_LABELS = ('model_name', 'stage', 'replica')

STAGE_WAITING_REQUESTS module-attribute

STAGE_WAITING_REQUESTS = (
    METRIC_PREFIX + "stage_waiting_requests"
)

STD_AUDIO_DURATION_S module-attribute

STD_AUDIO_DURATION_S = f'std_{AUDIO_DURATION}_s'

STD_AUDIO_RTF module-attribute

STD_AUDIO_RTF = f'std_{AUDIO_RTF}'

STD_AUDIO_TTFP_MS module-attribute

STD_AUDIO_TTFP_MS = f'std_{AUDIO_TTFP}_ms'

STD_AUDIO_UNDERRUN_S module-attribute

STD_AUDIO_UNDERRUN_S = f'std_{AUDIO_UNDERRUN}_s'

STD_IMAGE_GENERATION_MS module-attribute

STD_IMAGE_GENERATION_MS = f'std_{IMAGE_GENERATION}_ms'

STD_PEAK_MEMORY_MB module-attribute

STD_PEAK_MEMORY_MB = f'std_{PEAK_MEMORY_MB}'

STD_VIDEO_GENERATION_MS module-attribute

STD_VIDEO_GENERATION_MS = f'std_{VIDEO_GENERATION}_ms'

STD_VIDEO_RTF module-attribute

STD_VIDEO_RTF = f'std_{VIDEO_RTF}'

STREAMING_OUTPUT_UNIT_TYPES module-attribute

STREAMING_OUTPUT_UNIT_TYPES = frozenset(
    {"text", "stream", "audio"}
)

SUCCESS_LABELS module-attribute

SUCCESS_LABELS = ('model_name', 'finished_reason')

TIME_PER_OUTPUT_UNITS_MS module-attribute

TIME_PER_OUTPUT_UNITS_MS = 'time_per_output_units_ms'

TIME_PER_OUTPUT_UNIT_MS module-attribute

TIME_PER_OUTPUT_UNIT_MS = 'time_per_output_unit_ms'

TOTAL_AUDIO_DURATION_S module-attribute

TOTAL_AUDIO_DURATION_S = f'total_{AUDIO_DURATION}_s'

TOTAL_AUDIO_FRAMES module-attribute

TOTAL_AUDIO_FRAMES = f'total_{AUDIO_FRAMES}'

TOTAL_IMAGES module-attribute

TOTAL_IMAGES = 'total_images'

TOTAL_OUTPUT module-attribute

TOTAL_OUTPUT = 'total_output'

TOTAL_VIDEO_DURATION_S module-attribute

TOTAL_VIDEO_DURATION_S = f'total_{VIDEO_DURATION}_s'

TOTAL_VIDEO_FRAMES module-attribute

TOTAL_VIDEO_FRAMES = f'total_{VIDEO_FRAMES}'

TPOTS module-attribute

TPOTS = 'tpots'

TRANSFER_IN_FLIGHT_S module-attribute

TRANSFER_IN_FLIGHT_S = (
    METRIC_PREFIX + "transfer_in_flight_s"
)

TRANSFER_LABELS module-attribute

TRANSFER_LABELS = (
    "model_name",
    "from_stage",
    "from_replica",
    "to_stage",
    "to_replica",
)

TRANSFER_RX_S module-attribute

TRANSFER_RX_S = METRIC_PREFIX + 'transfer_rx_s'

TRANSFER_SIZE_BYTES module-attribute

TRANSFER_SIZE_BYTES = METRIC_PREFIX + 'transfer_size_bytes'

TRANSFER_TX_S module-attribute

TRANSFER_TX_S = METRIC_PREFIX + 'transfer_tx_s'

TTFTS module-attribute

TTFTS = 'ttfts'

VAE_DECODE_S module-attribute

VAE_DECODE_S = METRIC_PREFIX + 'vae_decode_s'

VIDEO_DURATION module-attribute

VIDEO_DURATION = 'video_duration'

VIDEO_FRAMES module-attribute

VIDEO_FRAMES = 'video_frames'

VIDEO_GENERATION module-attribute

VIDEO_GENERATION = 'video_generation'

VIDEO_GENERATION_TIME_MS module-attribute

VIDEO_GENERATION_TIME_MS = f'{VIDEO_GENERATION}_time_ms'

VIDEO_RTF module-attribute

VIDEO_RTF = 'video_rtf'

VIDEO_THROUGHPUT module-attribute

VIDEO_THROUGHPUT = 'video_throughput'

VLLM_ITLS module-attribute

VLLM_ITLS = 'vllm_itls'

VLLM_ITLS_MS module-attribute

VLLM_ITLS_MS = 'vllm_itls_ms'

VLLM_ITL_MS module-attribute

VLLM_ITL_MS = 'vllm_itl_ms'

VLLM_TPOTS module-attribute

VLLM_TPOTS = 'vllm_tpots'

VLLM_TPOT_MS module-attribute

VLLM_TPOT_MS = 'vllm_tpot_ms'

VLLM_TTFTS module-attribute

VLLM_TTFTS = 'vllm_ttfts'

VLLM_TTFT_MS module-attribute

VLLM_TTFT_MS = 'vllm_ttft_ms'

logger module-attribute

logger = logging.getLogger(__name__)

StageModalityFlags

Bases: NamedTuple

How --print-stage classifies one engine stage.

is_audio_stage instance-attribute

is_audio_stage: bool

is_image_stage instance-attribute

is_image_stage: bool

is_internal_stream_stage instance-attribute

is_internal_stream_stage: bool

is_text_stage instance-attribute

is_text_stage: bool

is_video_stage instance-attribute

is_video_stage: bool

compute_audio_frames

compute_audio_frames(
    pcm_nbytes: int,
    *,
    sample_width: int = DEFAULT_AUDIO_SAMPLE_WIDTH,
    channels: int = DEFAULT_AUDIO_CHANNELS,
) -> int

Convert a PCM byte length to sample/frame count.

pcm_nbytes is the raw byte size of interleaved PCM (e.g. total_pcm_bytes or len(wav_pcm_buffer)). Defaults match the streamed s16le mono contract (DEFAULT_AUDIO_SAMPLE_WIDTH, DEFAULT_AUDIO_CHANNELS); WAV callers should pass header values.

Returns 0 when the byte count or frame width (sample_width * channels) is non-positive.

compute_audio_rtf

compute_audio_rtf(
    audio_generation_latency_s: float,
    audio_duration_s: float,
) -> float

RTF = audio_generation_latency / audio_content_duration.

SLO red line < 1 — must generate faster than content plays back to stream. Returns 0.0 when audio_duration_s is non-positive (caller decides whether to observe; we don't want to divide by zero or emit negative samples).

resolve_audio_sample_rate

resolve_audio_sample_rate(
    source: Sequence[Mapping[str, object] | object | None]
    | Mapping[str, object]
    | object
    | None,
    default: int = DEFAULT_AUDIO_SAMPLE_RATE,
) -> int

Extract audio sample rate from a dict, config object, or list thereof.

Delegates to :func:resolve_audio_sample_rate_or_none (same key chain and coerce rules). Returns default (DEFAULT_AUDIO_SAMPLE_RATE unless overridden) when no usable positive rate is present.

Used so /metrics audio_duration_s = audio_frames / sample_rate stays consistent with rates surfaced on multimodal outputs and stage configs.

resolve_audio_sample_rate_or_none

resolve_audio_sample_rate_or_none(
    source: Sequence[Mapping[str, object] | object | None]
    | Mapping[str, object]
    | object
    | None,
) -> int | None

Extract an explicitly configured audio sample rate, or None when absent.

source may be:

  • a Mapping (e.g. multimodal_output / config dict)
  • an object exposing the same fields as attributes
  • a Sequence of the above (str / bytes excluded); the first positive rate found across items wins

stage_modality_flags

stage_modality_flags(
    final_output_type: object, output_unit_type: object
) -> StageModalityFlags

Classify a stage from wire final_output_type / output_unit_type.

stream_pcm_format_from_env

stream_pcm_format_from_env(
    *,
    default_sample_rate: int = DEFAULT_AUDIO_SAMPLE_RATE,
    default_channels: int = DEFAULT_AUDIO_CHANNELS,
) -> tuple[int, int]

Return the sample rate and channel count for streamed raw PCM.