main
py 38 lines 1.04 KB
Raw
1 # SPDX-License-Identifier: Apache-2.0
2 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
4 from dataclasses import dataclass
5 from pathlib import Path
6 from typing import Literal
7 from urllib.parse import urljoin
8
9 import numpy.typing as npt
10
11 from vllm.multimodal.media.audio import load_audio
12
13 from .base import VLLM_S3_BUCKET_URL, get_vllm_public_assets
14
15 ASSET_DIR = "multimodal_asset"
16
17 AudioAssetName = Literal["winning_call", "mary_had_lamb"]
18
19
20 @dataclass(frozen=True)
21 class AudioAsset:
22 name: AudioAssetName
23
24 @property
25 def filename(self) -> str:
26 return f"{self.name}.ogg"
27
28 @property
29 def audio_and_sample_rate(self) -> tuple[npt.NDArray, float]:
30 audio_path = get_vllm_public_assets(filename=self.filename, s3_prefix=ASSET_DIR)
31 return load_audio(audio_path, sr=None)
32
33 def get_local_path(self) -> Path:
34 return get_vllm_public_assets(filename=self.filename, s3_prefix=ASSET_DIR)
35
36 @property
37 def url(self) -> str:
38 return urljoin(VLLM_S3_BUCKET_URL, f"{ASSET_DIR}/{self.name}.ogg")