@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")