audio.py 718 Bytes
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from dataclasses import dataclass
from typing import Literal, Tuple
from urllib.parse import urljoin

import librosa
import numpy as np

from vllm.assets.base import get_vllm_public_assets, vLLM_S3_BUCKET_URL

ASSET_DIR = "multimodal_asset"


@dataclass(frozen=True)
class AudioAsset:
    name: Literal["winning_call", "mary_had_lamb"]

    @property
    def audio_and_sample_rate(self) -> Tuple[np.ndarray, int]:

        audio_path = get_vllm_public_assets(filename=f"{self.name}.ogg",
                                            s3_prefix=ASSET_DIR)
        return librosa.load(audio_path, sr=None)

    @property
    def url(self) -> str:
        return urljoin(vLLM_S3_BUCKET_URL, f"{ASSET_DIR}/{self.name}.ogg")