File size: 1,153 Bytes
2ec1a9c
3671814
 
2ec1a9c
 
3671814
2ec1a9c
 
3671814
2ec1a9c
3671814
 
2ec1a9c
 
3671814
 
 
 
 
2ec1a9c
3671814
 
2ec1a9c
3671814
 
 
 
 
2ec1a9c
3671814
 
 
2ec1a9c
3671814
 
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
27
28
29
30
31
32
33
34
35
36
"""
Loads pre-computed narration embeddings and metadata from the Space repo.
No GPU, no video downloads needed at runtime.
"""
import json
import numpy as np
from pathlib import Path

_PRECOMPUTED = Path(__file__).parent / "precomputed"

_metadata: list | None = None
_embeddings: np.ndarray | None = None


def get_demo_assets() -> tuple[list, np.ndarray]:
    """Returns (narrations_metadata list, narration_embeddings ndarray [N, 256])."""
    global _metadata, _embeddings
    if _metadata is not None and _embeddings is not None:
        return _metadata, _embeddings

    emb_path  = _PRECOMPUTED / "narration_embeddings.npy"
    meta_path = _PRECOMPUTED / "narrations_metadata.json"

    if not emb_path.exists() or not meta_path.exists():
        raise FileNotFoundError(
            f"Pre-computed assets not found in {_PRECOMPUTED}. "
            "Make sure precomputed/ folder is included in the Space repo."
        )

    _embeddings = np.load(str(emb_path))
    with open(meta_path) as f:
        _metadata = json.load(f)

    print(f"Loaded {len(_metadata)} narrations, embeddings {_embeddings.shape}")
    return _metadata, _embeddings