Skip to page content
SAVRN
Search Plan a project

Open-weight model · Speech recognition

index-echo-2b-GGUF

by Cstr cstr/index-echo-2b-GGUF

index-echo-2b-GGUF is an open-weight model for speech recognition from Cstr, released under Apache License 2.0. Its published files total 7.8 GB.

Conversion of IndexTeam/Index-Echo-S2TT-2B for the index-echo backend in CrispASR. Weights have passed the independent CPU/CUDA checks below.

Parameters—
Context—
Weights7.8 GB
Licenseapache-2.0
AccessOpen weights
Monthly Downloads—

Model Card

By Cstr, published under apache-2.0, revision 66e1b6f1bc07.

Conversion of IndexTeam/Index-Echo-S2TT-2B for the index-echo backend in CrispASR. Weights have passed the independent CPU/CUDA checks below. The backend is available on CrispASR main, including C ABI loading, companion downloads and a pinned nightly regression. The released model transcribes Chinese and translates each subtitle into English, Japanese or Spanish. CrispASR preserves the three-line generation recipe and returns bilingual cues with timestamps and punctuation. English JFK transcription/English translation also matches the released Python model in the CPU fixtures; this is a port-parity result, not a language-wide accuracy claim. The 9B checkpoint is not included. Both files of…

Read Cstr's full model card

Index-Echo S2TT 2B — GGUF for CrispASR

Conversion of IndexTeam/Index-Echo-S2TT-2B for the index-echo backend in CrispASR. Weights have passed the independent CPU/CUDA checks below. The backend is available on CrispASR main, including C ABI loading, companion downloads and a pinned nightly regression.

The released model transcribes Chinese and translates each subtitle into English, Japanese or Spanish. CrispASR preserves the three-line generation recipe and returns bilingual cues with timestamps and punctuation. English JFK transcription/English translation also matches the released Python model in the CPU fixtures; this is a port-parity result, not a language-wide accuracy claim. The 9B checkpoint is not included.

Files and companions

Precision Tower + connector Qwen3.5 decoder Combined
F16 index-echo-2b-f16.gguf (1,313,848,896 bytes) index-echo-2b-decoder-f16.gguf (3,897,387,648 bytes) 4.853 GiB
Q8_0 index-echo-2b-q8_0.gguf (702,951,040 bytes) index-echo-2b-decoder-q8_0.gguf (2,076,674,688 bytes) 2.589 GiB

Both files of the chosen precision must be in the same directory. The tower's index_echo.decoder_file metadata names its decoder; point CrispASR at the tower, not the decoder. The decoder omits the absent MTP branch and contains exactly the 24 text blocks used by the released speech inference path. Vision weights are omitted.

For speech-boundary windows, also put ggml-silero-v6.2.0.bin from ggml-org/whisper-vad beside them, or pass --vad-model. Silero uses its separate MIT license. Without Silero, CrispASR uses bounded 60-second windows. The source recipe keeps context from up to five prior windows and resets history for each input file.

Use

Build CrispASR with the Index-Echo backend, then download a matching pair:

hf download cstr/index-echo-2b-GGUF \
  index-echo-2b-q8_0.gguf index-echo-2b-decoder-q8_0.gguf \
  --local-dir models/index-echo
hf download ggml-org/whisper-vad ggml-silero-v6.2.0.bin \
  --local-dir models/index-echo
./build/bin/crispasr --backend index-echo \
  -m models/index-echo/index-echo-2b-q8_0.gguf \
  -f audio.wav --target-lang en -osrt

--target-lang en|ja|es selects the translation. --prompt accepts glossary entries such as name:translation; --ask overrides the task instruction. Greedy decoding is the default. Positive temperature enables sampling; --seed and --max-new-tokens are forwarded. Custom instructions need the three-line timestamp/transcript/translation format for parsed bilingual cues; unformatted custom output is returned as a whole-window text segment. Word timestamps, beam search and live streaming are not exposed by this recipe.

Validation and quantization

CPU validation run 36905507951 passes F16 and Q8_0 against independent CPU captures (F32 tower/connector, BF16 decoder) from the released Python inference class: English JFK, Chinese and a partial-hop JFK clip. Checks cover mel/convolutions, all 32 audio blocks, the connector, prompt IDs, all 24 decoder blocks, logits and 16 cached teacher-forced steps. The actual Python Session/C ABI loads a filename without a backend hint and reproduces all decoded text and centisecond timestamps exactly.

Precision Worst stage-row cosine Largest stage relative L2
F16 0.998464 1.415%
Q8_0 0.995173 3.561%

A separately forced F32 decoder diagnostic now proves higher-precision math: run 36915483750 passes every F16 stage, magnitude, cache, direct-output and full-file gate, including English/Japanese/Spanish and two-window context. Minimum cosine is 0.999992; maximum stage relative L2 is 0.239%. Q8 passes stage/cache/direct checks against that reference too (0.997150 minimum, 3.094% maximum relative L2). The overall diagnostic run is red because Q8 has the documented full-file precision differences; this is not an all-cohort exact-parity claim.

Cosine alone is scale-blind, so magnitude is gated separately. F16 stages require cosine >= .999 (cached logits >= .998) and relative L2 <= 2%; quantized learned stages require cosine >= .99 and relative L2 <= 5%. Frontend stages retain strict gates. Prompt IDs, cached greedy IDs and full direct-window decoded cues are additional mandatory checks. Full-file quality acceptance separately requires the complete text of an independent source precision variant, with exact F16 timestamps and at most 20ms Q8 timestamp drift. No arbitrary text edits are accepted.

Plain Q4_K is rejected: worst cosine 0.781530, relative L2 up to 23.349%, and changed translations/punctuation. Selective Q4 is also rejected: it fails stage/output checks and saves only 2.8% versus Q8. Neither Q4 recipe is a recommended download.

Full-file checks exposed and fixed a Silero waveform-context discrepancy. With that fix, F16 full-file English/Japanese/Spanish and two-window outputs match the separate explicitly F32 decoder source run. The released BF16 decoder differs by 20ms on three Japanese boundaries and chooses a Spanish synonym (creamos versus F32/native F16 pensemos). Q8 also shifts one English boundary by 20ms. Exact mixed-precision parity is therefore claimed only for the three direct-window fixtures, not all full-file multilingual outputs.

A same-host four-core ARM Neoverse-N2 profile shows Q8 warm speedups of 1.33–1.46× over the actual F32/BF16 Python blueprint, with peak RSS 4.03 versus 7.95GiB. A two-Tesla-T4 CUDA run passes stage/cache checks for both cohorts; GPU SRTs match native CPU controls byte for byte. Q8 inference is 4.5–5.3× realtime on those three short clips, excluding load. See CrispASR PERFORMANCE.md and its JSON receipts for methodology and limitations.

Reproducibility and license

Source revision: 5d98a34d9685869b11e9c94d01dee22a8b8e53b5. The tower converter is models/convert-index-echo-to-gguf.py; the standard Qwen3.5 decoder converter is llama.cpp commit 42d958167a748f2c04b1f888e84e7a58f609ddcb, with --outtype f16 --no-mtp. Quantization uses crispasr-quantize; frontend constants and small affines retain floating-point precision. Stage fixtures are in cstr/crispasr-regression-fixtures at 374efe4d7f5c4ff5dce32deffb14e23865fa8493: released mixed-precision captures under index-echo-2b/, separately forced F32 decoder captures under index-echo-2b-f32/. The nightly uses the F32 fixture; the original golden is preserved. Both source full-pipeline captures and effective-dtype audit are included.

The model weights are Apache-2.0; the source license is included as LICENSE. CrispASR runtime code has its own repository license. This conversion is not an official IndexTeam release.

Identity and Version

Repository
cstr/index-echo-2b-GGUF
Publisher
Cstr
Task
Speech recognition
Modality
Audio
Library
ggml
Parameters
Not stated by the source
Languages
zh, en, ja, es
Revision
66e1b6f1bc0790bc5d6db1fd49b96c6693ac4778
First published
2026-10-01
Last updated
2026-10-02

Files and Weights

11 files, 7.8 GB in total. The weights are 4 files totalling 7.8 GB in gguf.

Weights4 files · 7.8 GB
Configuration4 files · 137.7 KB
Documentation2 files · 18.6 KB
Repository1 file · 2.7 KB
Every file
FileTypeSizeSHA-256
index-echo-2b-decoder-f16.ggufWeights3.8 GB 3f503cbd23ba
index-echo-2b-decoder-q8_0.ggufWeights2.0 GB 4c18f70d4026
index-echo-2b-f16.ggufWeights1.3 GB fcb3f431c589
index-echo-2b-q8_0.ggufWeights703.0 MB c1d0d9908620
conversion-receipt.jsonConfiguration5.6 KB —
cpu-profile.jsonConfiguration29.7 KB —
cuda-proof.jsonConfiguration96.4 KB —
validation-receipt.jsonConfiguration6.1 KB —
LICENSEDocumentation11.3 KB —
README.mdDocumentation7.3 KB —
.gitattributesRepository2.7 KB —

License and Download

License
apache-2.0
Access
Open weights, no gate
Download size
7.8 GB
Download from Cstr

Released by Cstr through its official repository on Hugging Face. Read the license.

Built From

  • Derived from IndexTeam/Index-Echo-S2TT-2B
  • Quantized from IndexTeam/Index-Echo-S2TT-2B

Memory Requirements

PrecisionWeights in memory
As published7.8 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About index-echo-2b-GGUF

Can I use index-echo-2b-GGUF commercially?

Yes. index-echo-2b-GGUF is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.

Similar Models

Model · Speech recognition

wav2vec2-large-xlsr-53-japanese

Jonatas Grosman

Fine-tuned facebook/wav2vec2-large-xlsr-53 on Japanese using the train and validation splits of Common Voice 6.1, CSS10 and JSUT. When using this model, make sure that your speech input is sampled at 16kHz. This model has been fine-tuned thanks to the GPU credits generously given by the OVHcloud:) The script used for training can be found here: https://github.com/jonatasgrosman/wav2vec2-sprint The model can be used directly (without a language model) as follows... Using the HuggingSound library: The model can be evaluated as follows on the Japanese test data of Common Voice. In the table below I report the Word Error Rate (WER) and the Character Error Rate (CER) of the model. I ran the…

Open weights apache-2.0 transformers

Model · Speech recognition

whisperkit-coreml

Argmax

WhisperKit is part of Argmax OSS, an On-device Speech AI SDK for Apple Silicon: https://github.com/argmaxinc/argmax-oss-swift Check out the WhisperKit paper and presentation from ICML 2025: https://icml.cc/virtual/2025/47854 For real-time transcription with speakers and custom vocabulary, check out Argmax Pro SDK: https://www.argmaxinc.com/blog/argmax-sdk-2

Open weights mit whisperkit

Model · Speech recognition

speaker-diarization-3.1

Pyannote

Using this open-source model in production? Consider switching to pyannoteAI for better and faster options. This pipeline is the same as pyannote/speaker-diarization-3.0 except it removes the problematic use of onnxruntime. Both speaker segmentation and embedding now run in pure PyTorch. This should ease deployment and possibly speed up inference. It requires pyannote.audio version 3.1 or higher. It ingests mono audio sampled at 16kHz and outputs speaker diarization as an Annotation instance: - stereo or multi-channel audio files are automatically downmixed to mono by averaging the channels. - audio files sampled at a different rate are resampled to 16kHz automatically upon loading. 1.…

Access requested at publisher mit pyannote-audio

Model · Speech recognition

speaker-diarization-community-1

Pyannote

This pipeline ingests mono audio sampled at 16kHz and outputs speaker diarization. - stereo or multi-channel audio files are automatically downmixed to mono by averaging the channels. - audio files sampled at a different rate are resampled to 16kHz automatically upon loading. The main improvements brought by Community-1 are: - improved speaker assignment and counting - simpler reconciliation with transcription timestamps with exclusive speaker diarization - easy offline use (i.e. without internet connection) - (optionally) hosted on pyannoteAI cloud 1. pip install pyannote.audio 3. Create access token at hf.co/settings/tokens. Out of the box, Community-1 is much better than…

Access requested at publisher cc-by-4.0 pyannote-audio

Model · Speech recognition

faster-whisper-small

Systran

This repository contains the conversion of openai/whisper-small to the CTranslate2 model format. This model can be used in CTranslate2 or projects based on CTranslate2 such as faster-whisper. The original model was converted with the following command: Note that the model weights are saved in FP16. This type can be changed when the model is loaded using the computetype option in CTranslate2. For more information about the original model, see its model card.

Open weights mit ctranslate2

Fine-tuned facebook/wav2vec2-large-xlsr-53 on Portuguese using the train and validation splits of Common Voice 6.1. When using this model, make sure that your speech input is sampled at 16kHz. This model has been fine-tuned thanks to the GPU credits generously given by the OVHcloud:) The script used for training can be found here: https://github.com/jonatasgrosman/wav2vec2-sprint The model can be used directly (without a language model) as follows... Using the HuggingSound library: 1. To evaluate on mozilla-foundation/commonvoice60 with split test 2. To evaluate on speech-recognition-community-v2/devdata If you want to cite this model you can use this

Open weights apache-2.0 transformers