alt.freeweights.granite / granite-speech-4.1-2b-nar
From: ibm-granite <huggingface.co/ibm-granite>Newsgroups: alt.freeweights.graniteSubject:

granite-speech-4.1-2b-nar

Date: 2026-11-14Commit: a1e3416Signed: 2DC28CC7B26A283B ✓

Feature extraction model with 2.3B parameters. Safetensors weights, 4.52 GB in all. Published by ibm-granite under Apache-2.0.

2.3B params4.52GBgranite-speech-4.1-2b-narsafetensorspermissive
FactsParams2.3BSize4.52 GBFormatssafetensorsTaskfeature extractionLicenseApache-2.0From sourcepermissive
$ fw get ibm-granite/granite-speech-4.1-2b-nar
# manifest sha256 f7637914506b… · 4.52 GB · 21 files
$ fw verify ./granite-speech-4.1-2b-nar ibm-granite/granite-speech-4.1-2b-nar
From sourceHosted (signed)ibm-granite/granite-speech-4.1-2b-narLast check: 2026-11-14 21:16 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Fine-tune of granite-4.0-1b-base.

Works with

Evaluate with

Overview

Size
4.52 GB
Weights
4.51 GB (safetensors)
Parameters
2.3B
Formats
safetensors
Task
feature extraction
License
Apache-2.0 (permissive)
Files
21, each with a sha256
Publisher
ibm-granite
Added
2026-11-14
Section
alt.freeweights.granite
Lineage

Original release from the publisher.

Base model: ibm-granite/granite-4.0-1b-base

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-14 21:16 UTCpassed

Model card

From the publisher at commit a1e3416. Shown as plain text with links; images open at the publisher.

Granite-Speech-4.1-2B-NAR#

Model Summary: Granite-Speech-4.1-2B-NAR is a non-autoregressive (NAR) speech recognition model that formulates ASR as conditional transcript editing. Instead of decoding tokens one at a time, it edits a CTC hypothesis in a single forward pass using a bidirectional LLM, achieving competitive accuracy with faster inference than autoregressive alternatives. The model is based on the NLE (Non-autoregressive LLM-based Editing) architecture described in this paper.

For applications where accuracy is the primary concern, consider granite-speech-4.1-2b, an autoregressive model from the Granite Speech 4.1 family which achieves higher transcription accuracy at the cost of increased inference latency. Granite-speech-4.1-2b produces punctuated and capitalized transcripts, supports AST and keyword-biased recognition, and includes Japanese.

When speaker or word-timing information is needed, consider using granite-speech-4.1-2b-plus, which extends the above model with speaker-attributed ASR (speaker labels + word transcripts) and word-level timing information.

Release Date: April 2026

License: Apache 2.0

Supported Languages: English, French, German, Spanish, Portuguese

Intended Use: The model is intended for automatic speech recognition tasks, particularly in latency-sensitive applications where fast inference is critical.

Evaluation Results#

Open ASR leaderboard results#

RTFx-WER results on the Open ASR leaderboard (as of Apr 2026).

Image: RTFx vs WER

Additional results#

Greedy decoding with bfloat16 inference. WER computed with jiwer after whisper_normalizer EnglishTextNormalizer normalization. Open ASR Leaderboard results may differ slightly due to normalization and scoring pipeline differences. Measured RTFx of ~1820 on a single H100 GPU (batched inference, batch size 128).

DatasetWERDatasetWER
LibriSpeech clean1.29MLS EN4.77
LibriSpeech other2.75MLS DE4.75
CommonVoice 15 EN6.50MLS ES3.31
CommonVoice 15 DE4.73MLS FR4.52
CommonVoice 15 ES4.02MLS PT11.86
CommonVoice 15 FR7.17AMI IHM7.91
CommonVoice 15 PT2.57AMI SDM19.59
Earnings-228.48GigaSpeech10.12
SPGISpeech3.04TED-LIUM3.67
VoxPopuli5.83

Usage#

Installation#

We require flash_attention_2 for inference, since this backend supports sequence packing and respects the is_causal=False flag. Requires transformers>=5.5.3 and torch>=2.9.1.

# Fresh install (CUDA 12.8, Python 3.10+)
pip install torch==2.9.1 torchaudio==2.9.1 --index-url https://download.pytorch.org/whl/cu128
pip install transformers>=5.5.3 accelerate safetensors huggingface-hub tokenizers
pip install soundfile
pip install flash-attn==2.8.3 --no-build-isolation
Inference with transformers#
import torch
import torchaudio
from huggingface_hub import hf_hub_download
from transformers import AutoModel, AutoProcessor

device = "cuda" if torch.cuda.is_available() else "cpu"

model_name = "ibm-granite/granite-speech-4.1-2b-nar"
model = AutoModel.from_pretrained(model_name, trust_remote_code=True,
                                  attn_implementation="flash_attention_2", device_map=device,
                                  dtype=torch.bfloat16).eval()
processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True)

# Load sample audio from the repo
audio_path = hf_hub_download(repo_id=model_name, filename="10226_10111_000000.wav")
waveform, sr = torchaudio.load(audio_path)
if sr != 16000:
    waveform = torchaudio.functional.resample(waveform, sr, 16000)
if waveform.shape[0] > 1:
    waveform = waveform.mean(dim=0, keepdim=True)
waveform = waveform.squeeze(0)

# Extract features, run transcription, decode
inputs = processor([waveform], device=device)
output = model.transcribe(**inputs)
transcriptions = processor.batch_decode(output.preds)

print(f"Prediction: {transcriptions[0]}")

Model Architecture#

The architecture consists of three components:

(1) CTC Speech Encoder (440M params)

A 16-layer Conformer encoder trained with CTC on character-level targets. It processes 16kHz audio with stacked log-mel features (80 mel bins, 2-frame stacking) and uses block attention with 4-second audio blocks and self-conditioning at layer 8. The encoder has a dual CTC head: alongside the character-level output, a secondary BPE head produces CTC logits over the LLM's 100K token vocabulary. The BPE head uses posterior-weighted pooling (window size 4) with importance weights derived from mid-layer blank probabilities (1 - blank_prob).

(2) Q-Former Projector (160M params)

A 2-layer window Q-Former that downsamples the concatenated hidden representations from 4 encoder layers (layers 4, 8, 12, 16) by 5x. Each 15-frame window is reduced to 3 queries via cross-attention, resulting in a 10Hz acoustic embedding rate for the LLM (2x from encoder + 5x from projector).

(3) Bidirectional LLM Editor (1B params, LoRA-adapted)

granite-4.0-1b-base with its causal attention mask removed, enabling bidirectional context. Adapted with LoRA (rank 128) applied to both attention and MLP layers. The LLM receives concatenated audio embeddings and an interleaved CTC hypothesis with insertion slots, then predicts the edited transcript in a single parallel forward pass using a CTC objective.

How Granite-speech NAR Works#

Image: Architecture

  1. The frozen CTC encoder produces acoustic embeddings and an initial hypothesis.
  2. The hypothesis is interleaved with insertion slots (blank tokens between each token)
  3. The projected audio embeddings are concatenated with the interleaved hypothesis embeddings
  4. The bidirectional LLM predicts edits (copy, insert, delete, replace) at all positions simultaneously
  5. CTC greedy decoding (argmax + collapse) produces the final transcript

This design exploits the identity mapping bias of Transformers: residual connections and tied embeddings make the model naturally inclined to copy input tokens, so it focuses learning capacity on corrections rather than full reconstruction.

Training Data#

The model was trained on approximately 130K hours of speech across five languages (English, Spanish, French, German, Portuguese), using publicly available datasets including CommonVoice 15, MLS, LibriSpeech, Libriheavy long, AMI, Granary VoxPopuli, Granary YODAS, Earnings-22, Fisher, CallHome, and SwitchBoard. For additional training details, see the paper.

Infrastructure#

Training was completed on IBM's Blue Vela cluster using 16 H100 GPUs (2 nodes) for 5 epochs (3 days).

Ethical Considerations and Limitations#

The model is designed specifically for automatic speech recognition and does not generate free-form text, which limits the risk of hallucination compared to general-purpose speech-language models. However, transcription accuracy varies across languages and acoustic conditions. Performance may be weaker on languages with less training data (e.g., Portuguese) or in challenging acoustic environments (e.g., far-field, overlapping speech).

The model's editing approach is conservative by design — it prefers deletions over insertions, which reduces hallucination risk but may occasionally drop words in noisy conditions.

To enhance safety, we recommend using granite-speech-4.1-2b-nar alongside Granite Guardian. Granite Guardian is a fine-tuned instruct model designed to detect and flag risks in prompts and responses across key dimensions outlined in the IBM AI Risk Atlas.

Resources#

Files

21 files · 4.52 GBWeights 4.51 GB (safetensors). Sizes and sha256 from the signed manifest.
Show all 21 files with their sha256
FileSizesha256
.gitattributes1.74 KBb3b6936fd2a7031fe89badb44a0ad115b565f305aebc3af01b3446ec69ef4eea
10226_10111_000000.wav540 KB6ee3e432f4ce88415747f0549628bfef0df742365813d38b18bf28067a40cd51
README.md9.29 KBe4b15fab1cd6619ad0d5fab77fa4f129d0f50fa090c329b05622343e62704541
__init__.py1.64 KBbb0b146ef994d40b86ea97790d4ddf2cf00e05f3205c2c93d8e810f2923ace04
chat_template.jinja6.42 KB9524df67b77a7b25a2dfee898f75b316a157eb9d855b51e32aeac79d7c8a83ce
config.json2.55 KBd6c760e672df122eedd873adb77a318b785221b06f9fbe9db08c51a1f8302936
configuration_granite_speech_nar.py8.72 KBbfeeef9fe0ebae2133fc96b04a2fe5e60b8dd2cc82d834dcda71272cb84a4d55
diagram.png159 KB29c2c37ab0352a291638a2ddb194b09d1255695b286acbc70c138b45e03c4445
feature_extraction_granite_speech_nar.py4.41 KB627b0cf465ffcaf7d4042fd9287dfa0914c68dd170e46d28b90240592b14e761
generation_config.json38 Baf7cd9bbb214dea4f6a37756c2c133d002f6325ed4f497efc991f02b4d486dad
model.safetensors4.51 GBa187681b05e9598028b6177bba4588a27a76b97ab6840870877d69e1770a5094
model.sig12.8 KB01882269d47334e6ce207f0b2f922a1cefaf9980be699eb3442bfd16343c9df5
modeling_granite_speech_nar.py50.7 KBdd8cfd71523acf5a4220dd35566d56c60e29771fd1c4d30291f72edbb2e47171
preprocessor_config.json289 Be12be1e9d4ec5c459741328f28d9d8c00c3c688e8fe4230a6ec28df5470db8b3
processing_granite_speech_nar.py1.88 KB47280a8d34eff709b98c6baa016873cb5a84ff1ec08d853a7de082e489e7c408
processor_config.json153 B74d21364b507dcbe465420152d48edd9276f94a84d22a78d0da371e716a79374
rtf_wer.png152 KBb82815f3bb2d0096278af69462261bc07e369ea27118ce103d12863d932432fa
special_tokens_map.json579 Bc08676c49fd7969a3130f72be6d4bf34da66aa484a6e21dffe359893a1bd5f2e
tokenizer.json7.15 MB64c10a88b2495872bd7da5a885861a1757d9c23590c40fd378546ae176d280f6
tokenizer_config.json392 Bc7e48adce9bdf6cfe3524759067b5dfa2428de9ccba2fd257502bf0246161c2f
vocab.json1.61 MB8af71076de8b0b626eed0f4c984faf0a7c062479164b2a31308a948524d4f69c
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
a1e3416e25 pinned now manifest updated, same commit2026-11-14 21:16 UTC21 files · 4.52 GB
a1e3416e252026-11-14 21:16 UTC21 files · 4.52 GB

Use it

$ fw get ibm-granite/granite-speech-4.1-2b-nar
# manifest sha256 f7637914506b… · 4.52 GB · 21 files
$ fw verify ./granite-speech-4.1-2b-nar ibm-granite/granite-speech-4.1-2b-nar
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/ibm-granite/granite-speech-4.1-2b-nar.json --dir ./granite-speech-4.1-2b-nar $ python3 fw.py verify ./granite-speech-4.1-2b-nar ./ibm-granite__granite-speech-4.1-2b-nar.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download ibm-granite/granite-speech-4.1-2b-nar --revision a1e3416e25ce29ab3852778e54fa8b3bd59c4bf2 --local-dir ./granite-speech-4.1-2b-nar
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModel, AutoTokenizer tok = AutoTokenizer.from_pretrained("ibm-granite/granite-speech-4.1-2b-nar", revision="a1e3416e25ce29ab3852778e54fa8b3bd59c4bf2") model = AutoModel.from_pretrained("ibm-granite/granite-speech-4.1-2b-nar", revision="a1e3416e25ce29ab3852778e54fa8b3bd59c4bf2", device_map="auto")

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-14
Text in
README.md
Text sha256
e4b15fab1cd6619ad0d5fab77fa4f129d0f50fa090c329b05622343e62704541
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: ibm-granite <huggingface.co/ibm-granite>Newsgroups: alt.freeweights.graniteSubject: granite-speech-4.1-2b-narDate: 2026-11-14Commit: a1e3416Signed: 2DC28CC7B26A283B ✓
Upstream
ibm-granite/granite-speech-4.1-2b-nar
Pinned commit
a1e3416e25ce29ab3852778e54fa8b3bd59c4bf2
Manifest
granite-speech-4.1-2b-nar.json · .minisig
Manifest sha256
f7637914506ba9dff117e23454b35dcf7ec399c0b81b852b8bbd648dc8f445bc
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-14 21:16 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/ibm-granite/granite-speech-4.1-2b-nar.json $ curl -O https://freeweights.allternit.com/manifests/ibm-granite/granite-speech-4.1-2b-nar.json.minisig $ minisign -Vm granite-speech-4.1-2b-nar.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

ibm-granite/granite-4.0-1b-base · this model is a finetune of it

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download ibm-granite/granite-speech-4.1-2b-nar
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. granite-speech-4.1-2b-nar.json. Provenance. Takedown history: none.
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.Edu.seed1
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.Edu.seed2
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.Edu.seed3
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.seed1
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.seed2
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.seed3