audio.py 1.04 KB
Newer Older
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
8
from urllib.parse import urljoin

9
import numpy.typing as npt
10

11
from vllm.multimodal.media.audio import load_audio
12
13
14

from .base import VLLM_S3_BUCKET_URL, get_vllm_public_assets

15
16
ASSET_DIR = "multimodal_asset"

17
18
AudioAssetName = Literal["winning_call", "mary_had_lamb"]

19
20
21

@dataclass(frozen=True)
class AudioAsset:
22
23
24
25
26
    name: AudioAssetName

    @property
    def filename(self) -> str:
        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
37
    @property
    def url(self) -> str:
38
        return urljoin(VLLM_S3_BUCKET_URL, f"{ASSET_DIR}/{self.name}.ogg")