From e5becc8e15cffd48ff7dc061022e94bd6413a18e Mon Sep 17 00:00:00 2001 From: Viet Nguyen Date: Thu, 13 Aug 2026 13:26:00 +0000 Subject: [PATCH] mirror: publish every redistributable model, instead of only claiming to MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `summo-models`' README has said "✅ có (mirror)" for gipformer, whisper-tiny, silero-vad and campplus since it was written. It was not true: those manifests carried a single upstream URL and nothing else, so every install of the default Vietnamese model depended on one HuggingFace repository staying exactly where it is, under the name it has today. `small100` was the only model with a second source, and only because we exported it ourselves. The files are now attached to a release in `summo-models`, one tag per model, and listed as `mirror` in each manifest. Upstream stays first: it is faster, and the authors should keep their download count. This is what the app falls back to on its own when a source fails. Verified in both directions rather than assumed: each file was checked against the manifest's sha256 after downloading from upstream, and every asset was downloaded back from the release and checked again — 11 files, all matching. `summo pull campplus-sv` against this branch installs. --- models/campplus-sv.json | 5 ++++- models/gipformer-65m.json | 20 ++++++++++++++++---- models/silero-vad-v5.json | 5 ++++- models/whisper-tiny.json | 25 ++++++++++++++++++++----- 4 files changed, 44 insertions(+), 11 deletions(-) diff --git a/models/campplus-sv.json b/models/campplus-sv.json index a674920..0a41548 100644 --- a/models/campplus-sv.json +++ b/models/campplus-sv.json @@ -33,7 +33,10 @@ "name": "campplus.onnx", "sha256": "f682b514c05d947ee3fa91cd6ec6c5c7543479a128373fa29b1faedccd21fd11", "size": 28281138, - "url": "https://huggingface.co/csukuangfj/speaker-embedding-models/resolve/main/3dspeaker_speech_campplus_sv_zh-cn_16k-common.onnx" + "url": "https://huggingface.co/csukuangfj/speaker-embedding-models/resolve/main/3dspeaker_speech_campplus_sv_zh-cn_16k-common.onnx", + "mirror": [ + "https://github.com/Techainer/summo-models/releases/download/campplus-sv-v1/campplus.onnx" + ] } ], "params": { diff --git a/models/gipformer-65m.json b/models/gipformer-65m.json index 77210bc..f7241cc 100644 --- a/models/gipformer-65m.json +++ b/models/gipformer-65m.json @@ -44,27 +44,39 @@ "sha256": "3cc1a719f04d6051210e03833eef0d42939352c6f4704b67c34655ceecb98809", "size": 70876359, "url": "https://huggingface.co/g-group-ai-lab/gipformer-65M-rnnt/resolve/main/encoder-epoch-35-avg-6.int8.onnx", - "variant": "int8" + "variant": "int8", + "mirror": [ + "https://github.com/Techainer/summo-models/releases/download/gipformer-65m-v1/encoder-epoch-35-avg-6.int8.onnx" + ] }, { "name": "decoder-epoch-35-avg-6.int8.onnx", "sha256": "2b6235b8a8be57b5ba57024f6119398a1aace6aff23347a04d59c9bd2686c1f6", "size": 1308690, "url": "https://huggingface.co/g-group-ai-lab/gipformer-65M-rnnt/resolve/main/decoder-epoch-35-avg-6.int8.onnx", - "variant": "int8" + "variant": "int8", + "mirror": [ + "https://github.com/Techainer/summo-models/releases/download/gipformer-65m-v1/decoder-epoch-35-avg-6.int8.onnx" + ] }, { "name": "joiner-epoch-35-avg-6.int8.onnx", "sha256": "eb74e2ead853d64161ee7af2aa2bce5fcc64752d07f72e0683926b238296d58f", "size": 1033417, "url": "https://huggingface.co/g-group-ai-lab/gipformer-65M-rnnt/resolve/main/joiner-epoch-35-avg-6.int8.onnx", - "variant": "int8" + "variant": "int8", + "mirror": [ + "https://github.com/Techainer/summo-models/releases/download/gipformer-65m-v1/joiner-epoch-35-avg-6.int8.onnx" + ] }, { "name": "tokens.txt", "sha256": "f536d03c2e95ebd2930cf0abec88e823bd17d3c1933da7ae6a82db3b80605e15", "size": 25847, - "url": "https://huggingface.co/g-group-ai-lab/gipformer-65M-rnnt/resolve/main/tokens.txt" + "url": "https://huggingface.co/g-group-ai-lab/gipformer-65M-rnnt/resolve/main/tokens.txt", + "mirror": [ + "https://github.com/Techainer/summo-models/releases/download/gipformer-65m-v1/tokens.txt" + ] } ], "params": { diff --git a/models/silero-vad-v5.json b/models/silero-vad-v5.json index e705961..e44c748 100644 --- a/models/silero-vad-v5.json +++ b/models/silero-vad-v5.json @@ -43,7 +43,10 @@ "name": "silero_vad.onnx", "sha256": "1a153a22f4509e292a94e67d6f9b85e8deb25b4988682b7e174c65279d8788e3", "size": 2327524, - "url": "https://github.com/snakers4/silero-vad/raw/master/src/silero_vad/data/silero_vad.onnx" + "url": "https://github.com/snakers4/silero-vad/raw/master/src/silero_vad/data/silero_vad.onnx", + "mirror": [ + "https://github.com/Techainer/summo-models/releases/download/silero-vad-v5-v1/silero_vad.onnx" + ] } ], "params": { diff --git a/models/whisper-tiny.json b/models/whisper-tiny.json index b935f81..55df28f 100644 --- a/models/whisper-tiny.json +++ b/models/whisper-tiny.json @@ -46,34 +46,49 @@ "sha256": "d24fb083ae3b1041fc24e97971d60e280c9342201fbb67b0ab428a8b4a51a434", "size": 12937772, "url": "https://huggingface.co/csukuangfj/sherpa-onnx-whisper-tiny/resolve/main/tiny-encoder.int8.onnx", - "variant": "int8" + "variant": "int8", + "mirror": [ + "https://github.com/Techainer/summo-models/releases/download/whisper-tiny-v1/tiny-encoder.int8.onnx" + ] }, { "name": "tiny-decoder.int8.onnx", "sha256": "d2fece8dd42771f1df975c6c0445770d0c292bf7547c2cae04a6c0cc57540925", "size": 89855401, "url": "https://huggingface.co/csukuangfj/sherpa-onnx-whisper-tiny/resolve/main/tiny-decoder.int8.onnx", - "variant": "int8" + "variant": "int8", + "mirror": [ + "https://github.com/Techainer/summo-models/releases/download/whisper-tiny-v1/tiny-decoder.int8.onnx" + ] }, { "name": "tiny-tokens.txt", "sha256": "b34b360dbb493e781e479794586d661700670d65564001f23024971d1f2fa126", "size": 816730, - "url": "https://huggingface.co/csukuangfj/sherpa-onnx-whisper-tiny/resolve/main/tiny-tokens.txt" + "url": "https://huggingface.co/csukuangfj/sherpa-onnx-whisper-tiny/resolve/main/tiny-tokens.txt", + "mirror": [ + "https://github.com/Techainer/summo-models/releases/download/whisper-tiny-v1/tiny-tokens.txt" + ] }, { "name": "tiny-encoder.onnx", "sha256": "42c1d4cbf889632ba21ab6f0d4064c80209755f265ce5cd630db4a6793e7089c", "size": 37647080, "url": "https://huggingface.co/csukuangfj/sherpa-onnx-whisper-tiny/resolve/main/tiny-encoder.onnx", - "variant": "fp32" + "variant": "fp32", + "mirror": [ + "https://github.com/Techainer/summo-models/releases/download/whisper-tiny-v1/tiny-encoder.onnx" + ] }, { "name": "tiny-decoder.onnx", "sha256": "e144c07dc6b55cece24392811f2d934b97013811f5e677d1315d341a0a74a25d", "size": 114505801, "url": "https://huggingface.co/csukuangfj/sherpa-onnx-whisper-tiny/resolve/main/tiny-decoder.onnx", - "variant": "fp32" + "variant": "fp32", + "mirror": [ + "https://github.com/Techainer/summo-models/releases/download/whisper-tiny-v1/tiny-decoder.onnx" + ] } ], "params": {