Downloads · 30 days
960
16% of all-time downloads
cstr/granite-speech-4.0-1b-GGUF
granite-speech-4.0-1b-GGUF is a automatic speech recognition model from cstr. Use it when you need speech turned into text. It is set up for ggml. The card lists the license as apache-2.0.
GGUF conversions of ibm-granite/granite-speech-4.0-1b, IBM's 1B-parameter speech-LLM (Conformer encoder + BLIP-2 Q-Former projector + Granite μP LLM head). Runs through CrispASR's --backend granite path with full feat…
Downloads · 30 days
960
16% of all-time downloads
All-time downloads
5.9K
Public
Repo size
27.9 GB
Likes
0
Public
Click a slice to open those files.
.gguf27.9 GB · 100%
From the Hugging Face model README
GGUF conversions of ibm-granite/granite-speech-4.0-1b, IBM's 1B-parameter speech-LLM (Conformer encoder + BLIP-2 Q-Former projector + Granite μP LLM head). Runs through CrispASR's --backend granite path with full feature support including the new prompt-based speech-translation path.
| File | Size | Quantization | Notes |
|---|---|---|---|
granite-speech-4.0-1b-f16.gguf | 5.58 GB | F16 | Reference precision |
granite-speech-4.0-1b-q8_0.gguf | 3.86 GB | Q8_0 | Effectively lossless |
granite-speech-4.0-1b-q5_0.gguf | 3.17 GB | Q5_0 | Slightly slower than Q4_K but a bit more accurate |
granite-speech-4.0-1b-q4_k.gguf | 2.94 GB | Q4_K | 1.9× compressed; smallest reasonable choice |
All four contain:
tokenizer.ggml.merges field — the previous granite GGUFs had only tokenizer.ggml.tokens. The C++ side could detokenize but couldn't tokenize arbitrary text, which blocked the prompt-based translate path. This re-conversion writes the merges table from merges.txt and unblocks --translate -tl <lang> end-to-end.If you have an older granite GGUF without the merges field, the C++ side still loads it for plain transcribe, but --translate is silently a no-op. Re-download these files to get translate.
# Build crispasr (one-time)
git clone https://github.com/CrispStrobe/CrispASR
cd CrispASR
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc) --target whisper-cli
# Auto-download the recommended quant on first use:
./build/bin/crispasr --backend granite -m auto -f my_audio.wav
# Or point at a local file:
./build/bin/crispasr --backend granite \
-m granite-speech-4.0-1b-q4_k.gguf \
-f my_audio.wav
# Speech translation to German via the runtime-tokenized prompt path:
./build/bin/crispasr --backend granite \
-m granite-speech-4.0-1b-q4_k.gguf \
-f my_audio.wav --translate -tl de
# → "und so meine amerikaner, fragen sie nicht, was ihr land für sie
# tun kann, fragen sie, was sie für ihr land tun können."
# Word-level timestamps via the canary CTC aligner second pass:
./build/bin/crispasr --backend granite \
-m granite-speech-4.0-1b-q4_k.gguf \
-f my_audio.wav -am canary-ctc-aligner-q5_0.gguf -osrt -ml 1
Pure C++ runtime: no Python, no PyTorch, no NeMo. The only build deps beyond C++17 + CMake are libcurl or wget for auto-download and (optionally) BLAS / OpenMP for the encoder hot-loop speedup.
Same as upstream Granite-Speech 4.0: English, French, German, Spanish, Portuguese, Japanese.
# 1. Download the base model from HF
hf download ibm-granite/granite-speech-4.0-1b --local-dir ./granite-speech-4.0-1b
# 2. Convert to F16 GGUF (the new converter writes both vocab and merges)
python models/convert-granite-speech-to-gguf.py \
--input ./granite-speech-4.0-1b \
--output granite-speech-4.0-1b-f16.gguf
# 3. Quantize
./build/bin/crispasr-quantize granite-speech-4.0-1b-f16.gguf granite-speech-4.0-1b-q8_0.gguf q8_0
./build/bin/crispasr-quantize granite-speech-4.0-1b-f16.gguf granite-speech-4.0-1b-q5_0.gguf q5_0
./build/bin/crispasr-quantize granite-speech-4.0-1b-f16.gguf granite-speech-4.0-1b-q4_k.gguf q4_k
Total: 940 tensors per file (encoder, projector, LLM, audio frontend, BPE tables).
All four quants tested on samples/jfk.wav under CrispASR's granite backend:
default transcribe (any quant):
"and so my fellow americans ask not what your country can do for you
ask what you can do for your country"
translate -> German (any quant):
"und so meine amerikaner, fragen sie nicht, was ihr land für sie
tun kann, fragen sie, was sie für ihr land tun können."
Note: Granite-Speech is a μP-scaled model — the C++ implementation respects the embedding multiplier, attention multiplier, residual multiplier, and logits scale from the upstream config. Bit-identity is preserved across quants on the default transcribe path within q4_k expected float drift.
Apache-2.0, same as upstream IBM Granite-Speech-4.0-1B.
@misc{granite-speech,
title = {Granite-Speech-4.0-1B},
author = {IBM Research},
year = {2026},
url = {https://huggingface.co/ibm-granite/granite-speech-4.0-1b}
}
apache-2.0. This repository redistributes under the same terms; it grants no rights the upstream licence does not.