evals-scyllasband / Dockerfile
spybyscript's picture
Runtime at main 57271a0: release v4-20261106 (WebGPU and LiteRT bundles)
ec0b1b6 verified
Raw History Blame Contribute Delete
1.89 kB
# Open TTS Leaderboard stage-1 image for Scylla's Band (spybyscript/scyllasband).
# The eval scripts are injected at job time (open-tts-leaderboard/scyllasband/run_eval.py); this image only
# holds the runtime and the model. GPU: ONNX Runtime with CUDA on the WebGPU bundle. CPU: the LiteRT bundle.
FROM nvidia/cuda:12.9.0-runtime-ubuntu24.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 \
python3-pip \
git \
libsndfile1 \
&& rm -rf /var/lib/apt/lists/*
RUN ln -sf /usr/bin/python3 /usr/bin/python
ENV PIP_BREAK_SYSTEM_PACKAGES=1
WORKDIR /app
# The runtime at a pinned commit. The `cuda` extra is onnxruntime-gpu with its CUDA and cuDNN pip libraries;
# LiteRT (ai-edge-litert) comes with the package. `datasets<4.0` decodes the eval sets without torchcodec.
ARG SCYLLASBAND_COMMIT=57271a01f793ec0ed0baa1fd47eb2383518b9e79
RUN pip install --no-cache-dir \
"scyllasband[cuda] @ git+https://github.com/lowkeytea/scyllasband@${SCYLLASBAND_COMMIT}" \
soundfile "datasets<4.0" tqdm
# Both bundles of the runtime's pinned release, validated on download, baked in so jobs start without fetching.
RUN python -m scyllasband download --flavor webgpu --models-dir /app/models --yes \
&& python -m scyllasband download --flavor litert --models-dir /app/models --yes
# Build-time smoke test on the CPU (the build has no GPU): load the LiteRT bundle and speak one line.
RUN python -c "from scyllasband import ScyllasBandRuntime, SynthesisRequest; \
rt = ScyllasBandRuntime.from_bundle('/app/models/litert'); \
r = rt.synthesize(SynthesisRequest(text='Build check.', voice_id='tuesday', seed=1)); \
print('ok', r.audio.size / r.sample_rate, 's')"
ENTRYPOINT ["bash"]
# Keep-alive CMD so the Space runtime stays healthy; `docker run` overrides it.
EXPOSE 7860
CMD ["-c", "python3 -m http.server 7860"]