chore: snapshot livekit-cameras after serial pin + speechbrain lengths fix
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
"""One-time download of the speechbrain enhancement model.
|
||||
|
||||
Each worker loads the model from the local cache, so run this once before
|
||||
starting all 20 workers:
|
||||
|
||||
.venv/bin/python prefetch_model.py
|
||||
"""
|
||||
|
||||
import logging
|
||||
import sys
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s")
|
||||
log = logging.getLogger("prefetch")
|
||||
|
||||
|
||||
def main() -> int:
|
||||
from config import load_config
|
||||
cfg = load_config()
|
||||
import torch
|
||||
from speechbrain.inference.enhancement import SpectralMaskEnhancement
|
||||
|
||||
log.info("loading %s (first run downloads weights) ...", cfg.enhance_model)
|
||||
model = SpectralMaskEnhancement.from_hparams(
|
||||
source=cfg.enhance_model,
|
||||
savedir="/root/.cache/speechbrain-enhancement",
|
||||
)
|
||||
model.mods.enhance_model.eval()
|
||||
|
||||
# quick self-test: 0.5 s of 16 kHz sine + noise
|
||||
import numpy as np
|
||||
n = int(cfg.audio_rate * 0.5)
|
||||
t = np.arange(n) / cfg.audio_rate
|
||||
x = (0.3 * np.sin(2 * np.pi * 440 * t) + 0.05 * np.random.randn(n))
|
||||
x = x / np.abs(x).max()
|
||||
with torch.no_grad():
|
||||
w = torch.from_numpy(x.astype(np.float32)).unsqueeze(0).to(model.device)
|
||||
# lengths are relative (1.0 = full sequence); older speechbrain
|
||||
# builds don't accept the kwarg at all -> TypeError fallback.
|
||||
try:
|
||||
out = model.enhance_batch(w, lengths=torch.tensor([1.0]))
|
||||
except TypeError:
|
||||
out = model.enhance_batch(w)
|
||||
log.info("self-test OK: in %d samples -> out %d samples",
|
||||
n, out.numel())
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user