# SPDX-License-Identifier: Apache-2.0 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project from dataclasses import dataclass from pathlib import Path from typing import Literal from urllib.parse import urljoin import numpy.typing as npt from vllm.utils.import_utils import PlaceholderModule from .base import VLLM_S3_BUCKET_URL, get_vllm_public_assets try: import librosa except ImportError: librosa = PlaceholderModule("librosa") # type: ignore[assignment] ASSET_DIR = "multimodal_asset" AudioAssetName = Literal["winning_call", "mary_had_lamb"] @dataclass(frozen=True) class AudioAsset: name: AudioAssetName @property def filename(self) -> str: return f"{self.name}.ogg" @property def audio_and_sample_rate(self) -> tuple[npt.NDArray, float]: audio_path = get_vllm_public_assets(filename=self.filename, s3_prefix=ASSET_DIR) return librosa.load(audio_path, sr=None) def get_local_path(self) -> Path: return get_vllm_public_assets(filename=self.filename, s3_prefix=ASSET_DIR) @property def url(self) -> str: return urljoin(VLLM_S3_BUCKET_URL, f"{ASSET_DIR}/{self.name}.ogg")