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

granite-speech-5.0-2b

Date: 2026-11-15Commit: ec49ca6Signed: 2DC28CC7B26A283B ✓

Automatic speech recognition model with 2.3B parameters. Safetensors weights, 5.05 GB in all. Published by ibm-granite under Apache-2.0.

2.3B params5.05GBgranite-speech-5.0-2bsafetensorspermissive
FactsParams2.3BSize5.05 GBFormatssafetensorsTaskautomatic speech recognitionLicenseApache-2.0From sourcepermissive
$ fw get ibm-granite/granite-speech-5.0-2b
# manifest sha256 ba7102a53be4… · 5.05 GB · 23 files
$ fw verify ./granite-speech-5.0-2b ibm-granite/granite-speech-5.0-2b
From sourceHosted (signed)ibm-granite/granite-speech-5.0-2bLast check: 2026-11-15 02:43 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

Overview

Size
5.05 GB
Weights
5.04 GB (safetensors)
Parameters
2.3B
Formats
safetensors
Task
automatic speech recognition
License
Apache-2.0 (permissive)
Files
23, each with a sha256
Publisher
ibm-granite
Added
2026-11-15
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-15 02:43 UTCpassed

Model card

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

Granite-Speech-5.0-2B#

Model Summary: Granite Speech 5.0 2B is a compact and efficient speech-language model, specifically designed for multilingual automatic speech recognition (ASR) and bidirectional automatic speech translation (AST) for English, French, German, Spanish, Portuguese and Japanese.

The model was trained on 390,000 hours of audio from public corpora for ASR and AST as well as synthetic datasets tailored to support Japanese ASR, keyword-biased ASR and speech translation. Granite Speech 5.0 2B was trained by modality aligning an intermediate checkpoint of granite-4.0-1b-base to speech on publicly available open source corpora containing audio inputs and text targets. Compared to its predecessor granite-speech-4.1-2b, this model has the same parameter count and provides additional capabilities and improvements:

  • Higher transcription accuracy for English short-form ASR and increased robustness to noise, reverberation and distant microphone speech
  • Supports input language id prompting for multilingual ASR
  • Improved long-form and conversational speech translation
  • Increased keyword list size (up to 2000) for multilingual keyword-biased ASR and AST

Evaluations:

We evaluated granite-speech-5.0-2b on standard English ASR benchmarks from the Open ASR leaderboard (official results as of October 21, 2026): Image: granite-5.0-2b-vs-open-english

Performance on noisy and reverberant speech from the FFASR leaderboard (official results as of October 18, 2026):

Image: granite-speech-5.0-2b-ffasr-wer

We also evaluated multilingual ASR on CommonVoice, as well as X->En (CoVoST) and En->X (FLEURS) automatic speech translation, against other speech-language models and dedicated ASR and AST systems: Image: granite-speech-5.0-2b-wer-cv Image: granite-speech-5.0-2b-bleu-x-en Image: granite-speech-5.0-2b-bleu-en-x

We evaluated the model’s keyword list biasing (KWB) capability by comparing performance with and without KWB applied at inference time. We report the F1 scores of transcribed keywords during ASR tasks, excluding common words from the evaluation. Image: granite-speech-5.0-2b-kwb-f1

We also evaluated our model on a variety of corpora to assess its punctuation and capitalization capabilities. We report the metrics as defined in LibriSpeech-PC. PER (punctuation error rate) measures errors in the insertion, deletion, or substitution of punctuation marks (periods, commas, and question marks). Cap-F1 (capitalization F1) measures how accurately the model capitalizes relevant words in the output. Note that our Cap-F1 is computed on Levenshtein-aligned matching word pairs rather than fully matching sentences, allowing evaluation even in the presence of ASR errors.

Test SetPER 4.1-2b (&darr;)PER 5.0-2b (&darr;)Cap-F1 4.1-2b (&uarr;)Cap-F1 5.0-2b (&uarr;)
LScln25.7023.2089.7190.16
LSoth22.2721.2291.2691.65
VoxPopuli24.8623.7095.3595.07
Earnings-2222.8721.6495.1994.98
CV-EN9.139.1896.7596.96
CV-DE&dagger;3.663.6599.5099.51
CV-ES11.6111.4695.6895.62
CV-FR11.0011.4397.2597.20
CV-PT7.867.5398.5198.48

&dagger; We report a Cap-F1 of 99.51 on German, where noun capitalization is required.

Release Date: October 20, 2026

License: Apache 2.0

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

Intended Use: The model is intended to be used in enterprise applications that involve processing of speech inputs. In particular, the model is well-suited for English, French, German, Spanish, Portuguese and Japanese speech-to-text and speech translations to and from English for the same languages, plus English-to-Italian and English-to-Mandarin.

Usage:#

Granite Speech model is supported natively in transformers>=4.52.1. For best results, transcribe audio in segments of up to ~2 minutes; split longer recordings (e.g. with VAD) before decoding.

Usage with transformers

First, make sure to install a recent version of transformers:

pip install transformers torchaudio soundfile

Then run the code:

import torch
import torchaudio
from huggingface_hub import hf_hub_download
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor

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

model_name = "ibm-granite/granite-speech-5.0-2b"
processor = AutoProcessor.from_pretrained(model_name)
tokenizer = processor.tokenizer
model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_name, device_map=device, torch_dtype=torch.bfloat16
)

# Load audio
audio_path = hf_hub_download(repo_id=model_name, filename="multilingual_sample.wav")
wav, sr = torchaudio.load(audio_path, normalize=True)
assert wav.shape[0] == 1 and sr == 16000  # mono, 16kHz

# Create text prompt
user_prompt = "<|audio|>transcribe the speech with proper punctuation and capitalization."
chat = [
    {"role": "user", "content": user_prompt},
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)

# Run the processor + model
model_inputs = processor(prompt, wav, device=device, return_tensors="pt").to(device)
model_outputs = model.generate(
    **model_inputs, max_new_tokens=200, do_sample=False, num_beams=1
)

# Transformers includes the input IDs in the response
num_input_tokens = model_inputs["input_ids"].shape[-1]
new_tokens = model_outputs[0, num_input_tokens:].unsqueeze(0)
output_text = tokenizer.batch_decode(
    new_tokens, add_special_tokens=False, skip_special_tokens=True
)
print(f"STT output = {output_text[0]}")

Usage with vLLM

First, make sure to install vLLM:

pip install vllm
  • Code for offline mode:
from transformers import AutoTokenizer
from vllm import LLM, SamplingParams
from vllm.assets.audio import AudioAsset

model_id = "ibm-granite/granite-speech-5.0-2b"
tokenizer = AutoTokenizer.from_pretrained(model_id)

def get_prompt(question: str, has_audio: bool):
    """Build the input prompt to send to vLLM."""
    if has_audio:
        question = f"<|audio|>{question}"
    chat = [
        {
            "role": "user",
            "content": question
        }
    ]
    return tokenizer.apply_chat_template(chat, tokenize=False)

model = LLM(
    model=model_id,
    max_model_len=2048, # This may be needed for lower resource devices.
    limit_mm_per_prompt={"audio": 1},
)

question = "can you transcribe the speech into a written format?"
prompt_with_audio = get_prompt(
    question=question,
    has_audio=True,
)
audio = AudioAsset("mary_had_lamb").audio_and_sample_rate

inputs = {
    "prompt": prompt_with_audio,
    "multi_modal_data": {
        "audio": audio,
    }
}

outputs = model.generate(
    inputs,
    sampling_params=SamplingParams(
        temperature=0.0,
        max_tokens=64,
    ),
)
print(f"Audio Example - Question: {question}")
print(f"Generated text: {outputs[0].outputs[0].text}")
  • Code for online mode:
"""
Launch the vLLM server with the following command:

vllm serve ibm-granite/granite-speech-5.0-2b \
    --api-key token-abc123 \
    --max-model-len 2048
"""

import base64

import requests
from openai import OpenAI

from vllm.assets.audio import AudioAsset

# Modify OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "token-abc123"
openai_api_base = "http://localhost:8000/v1"

client = OpenAI(
    # defaults to os.environ.get("OPENAI_API_KEY")
    api_key=openai_api_key,
    base_url=openai_api_base,
)

model_name = "ibm-granite/granite-speech-5.0-2b"
# Any format supported by librosa is supported
audio_url = AudioAsset("mary_had_lamb").url

# Use base64 encoded audio in the payload
def encode_audio_base64_from_url(audio_url: str) -> str:
    """Encode an audio retrieved from a remote url to base64 format."""
    with requests.get(audio_url) as response:
        response.raise_for_status()
        result = base64.b64encode(response.content).decode("utf-8")
    return result

audio_base64 = encode_audio_base64_from_url(audio_url=audio_url)

question = "can you transcribe the speech into a written format?"
chat_completion_with_audio = client.chat.completions.create(
    messages=[{
        "role": "user",
        "content": [
            {
                "type": "text",
                "text": question
            },
            {
                "type": "audio_url",
                "audio_url": {
                    # Any format supported by librosa is supported
                    "url": f"data:audio/ogg;base64,{audio_base64}"
                },
            },
        ],
    }],
    temperature=0.0,
    max_tokens=64,
    model=model_name,
)


print(f"Audio Example - Question: {question}")
print(f"Generated text: {chat_completion_with_audio.choices[0].message.content}")

Usage with the hosted Inference Endpoint

A Hugging Face Inference Endpoint serving this model with vLLM is available, so you can try it without any local setup. It exposes the OpenAI-compatible API, so the same request format as the vLLM online mode above applies. The endpoint scales to zero when idle, so the first request may take a few minutes while it starts up.

import os
import base64

import requests
from openai import OpenAI

hf_token = os.environ["HF_TOKEN"]

client = OpenAI(
    base_url="https://6ada5c5e69a00298cd4768e9.endpoints.huggingface.cloud/v1",
    api_key=hf_token,
)

# 16 kHz mono audio, up to ~2 minutes
audio_url = "https://huggingface.co/ibm-granite/granite-speech-5.0-2b/resolve/main/multilingual_sample.wav"
audio_base64 = base64.b64encode(requests.get(audio_url).content).decode("utf-8")

question = "transcribe the speech with proper punctuation and capitalization."
chat_completion = client.chat.completions.create(
    model="ibm-granite/granite-speech-5.0-2b",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": question},
            {"type": "audio_url", "audio_url": {"url": f"data:audio/wav;base64,{audio_base64}"}},
        ],
    }],
    temperature=0.0,
    max_tokens=512,
)
print(chat_completion.choices[0].message.content)

Usage with llama.cpp

Installation instructions for macOS using homebrew:

brew install llama.cpp
  • Offline mode:
llama-cli -st -hf ibm-granite/granite-speech-5.0-2b-GGUF:Q8_0 --audio "audio.wav" -p "transcribe the speech with proper punctuation and capitalization."
  • Online mode:
llama-server -hf ibm-granite/granite-speech-5.0-2b-GGUF:Q8_0 --port 9797

Then launch a request with:

curl http://localhost:9797/v1/audio/transcriptions -F "model=ibm-granite/granite-speech-5.0-2b-GGUF:Q8_0" -F "file=@audio.wav" -F "prompt=transcribe the speech with proper punctuation and capitalization." | jq -r .text

We recommend Q8_0, which matches the unquantized model in our tests; lower-bit quantizations lose accuracy on audio longer than about a minute.

Usage with Ollama

The model is available in the Ollama library as ibm/granite5-speech (Q8_0, 3.2 GB). Install Ollama (tested with v0.40.15), then pass a 16 kHz mono WAV file followed by the prompt:

ollama run ibm/granite5-speech:2b audio.wav "transcribe the speech with proper punctuation and capitalization."
  • Online mode: the Ollama server (ollama serve, port 11434 by default) accepts audio as base64 in the images field of a chat message:
import base64
import requests

with open("audio.wav", "rb") as f:
    audio_base64 = base64.b64encode(f.read()).decode("utf-8")

response = requests.post("http://localhost:11434/api/chat", json={
    "model": "ibm/granite5-speech:2b",
    "stream": False,
    "messages": [{
        "role": "user",
        "content": "translate the speech to English.",
        "images": [audio_base64],
    }],
})
print(response.json()["message"]["content"])

Usage with mlx-audio for Apple Silicon M series chips

Install a recent version of mlx-audio (0.5.9 or later) together with jinja2, which mlx-audio needs for the chat template but does not install itself:

pip install -U mlx-audio jinja2

Sample use:

python -m mlx_audio.stt.generate --model ibm-granite/granite-speech-5.0-2b --verbose --audio "audio.wav" --output-path "transcript"

Usage with LiteRT-LM for on-device inference

A LiteRT-LM conversion for on-device use (tested on Android and macOS) is available at litert-community/granite-speech-5.0-2b: a single 2.8 GB .litertlm file with an int8 language model and a float16 audio encoder. It requires LiteRT-LM 0.19.1:

pip install litert-lm==0.19.1 huggingface_hub
hf download litert-community/granite-speech-5.0-2b granite-speech-5.0-2b.litertlm --local-dir .
  • Command line:
litert-lm run granite-speech-5.0-2b.litertlm --backend cpu --audio-backend cpu --attachment audio.wav --prompt "transcribe the speech with proper punctuation and capitalization." < /dev/null
  • Python:
import litert_lm
from litert_lm import Content, Contents, interfaces

engine = litert_lm.Engine(
    "granite-speech-5.0-2b.litertlm",
    backend=interfaces.Backend.CPU(),
    audio_backend=interfaces.Backend.CPU(),
)
conversation = engine.create_conversation(sampler_config=interfaces.SamplerConfig(top_k=1))
message = Contents.of(
    Content.AudioFile("audio.wav"),
    Content.Text("transcribe the speech with proper punctuation and capitalization."),
)
reply = conversation.send_message(message)
print("".join(part["text"] for part in reply["content"] if part["type"] == "text"))

The audio encoder must run on the CPU (--audio-backend cpu); the language model can run on the CPU or the GPU (--backend gpu). Put the audio before the text in each message, and use a new conversation for each clip. The context holds 4,096 tokens, prompt and reply together (2 minutes of audio is about 1,200 tokens).

Preferred prompt by task:

TaskPromptNotes
ASR (raw transcripts)can you transcribe the speech into a written format?Multilingual prompts supported e.g. Pouvez‑vous reconnaître le contenu de la parole ?
ASR (with punctuation)transcribe the speech with proper punctuation and capitalization.Multilingual prompts supported e.g. Transcrivez la parole avec une ponctuation et des majuscules appropriées.
ASR (with keyword biasing)transcribe the speech to text. Keywords: <kw1>, <kw2>, ...Multilingual prompts supported e.g. ¿Puedes transcribir el habla en formato escrito? Palabras clave: <kw1>, <kw2>, ...
ASR (with language ID)The speech is in <language>. Transcribe it exactly; do not translate. can you transcribe the speech into a written format?<language>= English, French, German, Spanish, Portuguese, Japanese. Also supported with the prompt in other languages, naming the language in that language, e.g. El audio esta en alemán. Transcribe exactamente; no traduzcas. ¿Puedes transcribir el habla en formato escrito? or ドイツ語の音声です。翻訳せず、聞こえた通りに文字に起こしてください。音声を文字に起こしてください。
AST (raw transcripts)translate the speech to <language>.<language>= English, French, German, Spanish, Japanese, Italian, Mandarin. Multilingual prompts supported e.g. Écoutez la parole et traduisez-la en anglais.
AST (with punctuation)translate the speech to <language> with proper punctuation and capitalization.Only English prompt supported
AST (with keyword biasing)translate the speech to <language>. Keywords: <kw1>, <kw2>, ...Multilingual prompts supported e.g. Escucha el habla y tradúcela a inglés. Palabras clave: <kw1>, <kw2>, ...

Model Architecture:

The architecture of granite-speech-5.0-2b consists of the following components:

(1) Speech encoder: 16 conformer blocks trained with Connectionist Temporal Classification (CTC) with two classification heads (characters and BPE units) on the subset containing only ASR corpora with unpunctuated transcripts (see configuration below). The character vocabulary consists of the first 256 ASCII entries for the European languages plus a 92 phonetic Katakana character set for Japanese whereas the BPE units come from the granite 4.0 tokenizer. In addition, our CTC encoder uses block-attention with 4-seconds audio blocks and self-conditioned CTC from the middle layer. The middle layer also provides non-blank probabilities that are used for frame-level posterior-weighted pooling with a window size of 4 for BPE classification.

Configuration parameterValue
Input dimension160 (80 logmels x 2)
Nb. of layers16
Hidden dimension1024
Nb. of attention heads8
Attention head size128
Convolution kernel size15
Output dimension (characters)348
Output dimension (BPE)100353

(2) Speech projector and temporal downsampler (speech-text modality adapter): we use a 2-layer window query transformer (q-former) operating on blocks of 15 1024-dimensional acoustic embeddings coming out of the last conformer block of the speech encoder that get downsampled by a factor of 5 using 3 trainable queries per block and per layer. The total temporal downsampling factor is 10 (2x from the encoder and 5x from the projector) resulting in a 10Hz acoustic embeddings rate for the LLM. The projector and LLM LoRA adapters were trained jointly on all the corpora mentioned under Training Data.

(3) Large language model: intermediate checkpoint of granite-4.0-1b-base with YaRN extension to 16k positions (https://huggingface.co/ibm-granite/granite-4.0-1b-base) finetuned on all the corpora mentioned under Training Data.

Training Data:#

Overall, our training data is largely comprised of two key sources: (1) publicly available datasets (2) Synthetic data created from publicly available datasets specifically targeting Japanese ASR, punctuated and written-form ASR, multi-speaker and contextual ASR, keyword list-prompted ASR and AST, and the speech translation task. A detailed description of the training datasets can be found in the table below:

NameTaskNb. hoursSource
CommonVoice-17 En,De,Es,Fr,Pt,JaASR5500https://huggingface.co/datasets/mozilla-foundation/common_voice_17_0
MLS En,De,Es,Fr,PtASR48400https://huggingface.co/datasets/facebook/multilingual_librispeech
Librispeech EnglishASR1000https://huggingface.co/datasets/openslr/librispeech_asr
LibriHeavy Large EnglishASR45600https://huggingface.co/datasets/anyspeech/libri-heavy
VoxPopuli En,De,Fr,EsASR1100https://huggingface.co/datasets/facebook/voxpopuli
VoxPopuli Granary EnglishASR24000https://huggingface.co/datasets/nvidia/Granary
AMI EnglishASR150https://huggingface.co/datasets/edinburghcstr/ami
YODAS EnglishASR9100https://huggingface.co/datasets/espnet/yodas
YODAS JapaneseASR1400https://huggingface.co/datasets/espnet/yodas
YODAS Granary En,De,Es,Fr,It,Pt (long-form, up to 120 s)ASR4900https://huggingface.co/datasets/nvidia/Granary
Earnings-22 EnglishASR105https://huggingface.co/datasets/esb/datasets
Switchboard EnglishASR260https://catalog.ldc.upenn.edu/LDC97S62
CallHome EnglishASR18https://catalog.ldc.upenn.edu/LDC97T14
Fisher EnglishASR2000https://catalog.ldc.upenn.edu/LDC2004S13
Voicemail part I EnglishASR15https://catalog.ldc.upenn.edu/LDC98S77
Voicemail part II EnglishASR15https://catalog.ldc.upenn.edu/LDC2002S35
ReazonSpeechASR3300https://huggingface.co/datasets/reazon-research/reazonspeech
Fineweb-2 TTS JapaneseASR9600https://huggingface.co/datasets/HuggingFaceFW/fineweb-2 and Kokoro-82M TTS
CommonVoice-17 Japanese paraphrase TTSASR250Paraphrases of CommonVoice-17 Japanese and TTS
Synthetic multi-speaker EnglishASR2000Multi-speaker mixtures of English ASR data
Synthetic written-form EnglishASR450TTS of written-form text (numbers, abbreviations, punctuation)
Librispeech-PC EnglishASR (punctuated)820https://huggingface.co/datasets/yoom618/librispeech_pc
LibriHeavy Large EnglishASR (punctuated)45800https://huggingface.co/datasets/anyspeech/libri-heavy
CommonVoice-17 En,De,Es,Fr,Pt,JaASR (punctuated)4600https://huggingface.co/datasets/mozilla-foundation/common_voice_17_0
MLS EnglishASR (punctuated)4100https://huggingface.co/datasets/facebook/multilingual_librispeech
VoxPopuli En,De,Fr,EsASR (punctuated)1100https://huggingface.co/datasets/facebook/voxpopuli
VoxPopuli Granary EnglishASR (punctuated)23900https://huggingface.co/datasets/nvidia/Granary
Earnings-22 EnglishASR (punctuated)100https://huggingface.co/datasets/esb/datasets
LibriHeavy, AMI, Switchboard, Fisher, CallHome EnglishContextual ASR59900Noisy previous-segment context added to the prompt
CommonVoice-17, MLS, YODAS En,De,Es,Fr,PtKeyword-biased ASR7100Keyword lists derived from the transcripts
CommonVoice-17, YODAS, ReazonSpeech JapaneseKeyword-biased ASR16500Keyword lists derived from the transcripts
CommonVoice-17 De,Es,Fr,Pt,Ja->EnAST1200Translations with Granite-3 and Phi-4
CommonVoice-17 En->De,Es,Fr,It,Ja,Pt,ZhAST6100Translations with Phi-4 and MADLAD
CommonVoice-17 De,Es,Fr,Pt,Ja->En and En->De,Es,Fr,It,Ja,Pt,ZhAST (punctuated)7300Translations with Phi-4 and MADLAD
English and multilingual ASR corporaAST43400Pseudo-labeled translations of ASR transcripts
YODAS Granary De,Es,Fr,It,Pt->En and En->De,Es,Fr,It,Ja,Pt (long-form, up to 120 s)AST9000https://huggingface.co/datasets/nvidia/Granary
CommonVoice-17Keyword-biased AST400https://huggingface.co/datasets/mozilla-foundation/common_voice_17_0

Infrastructure: We train Granite Speech using IBM's super computing cluster, Blue Vela, which is outfitted with NVIDIA H100 GPUs. This cluster provides a scalable and efficient infrastructure for training our models over thousands of GPUs. The training of this particular model was completed in 40 days (26 encoder + 14 projector) on 8 H100 GPUs.

Ethical Considerations and Limitations:

The use of Large Speech and Language Models can trigger certain risks and ethical considerations. Although our alignment processes include safety considerations, the model may in some cases produce inaccurate, biased, offensive or unwanted responses to user prompts. Additionally, whether smaller models may exhibit increased susceptibility to hallucination in generation scenarios due to their reduced sizes, which could limit their ability to generate coherent and contextually accurate responses, remains uncertain. This aspect is currently an active area of research, and we anticipate more rigorous exploration, comprehension, and mitigations in this domain.

IBM recommends using this model for automatic speech recognition and translation tasks. The model's design improves safety by limiting how audio inputs can influence the system. If an unfamiliar or malformed prompt is received, the model simply ignores it and performs transcription which is the default fallback mode. This minimizes the risk of adversarial inputs, unlike integrated models that directly interpret audio and may be more exposed to such attacks. Note that more general speech tasks may pose higher inherent risks of triggering unwanted outputs.

To enhance safety, we recommend using granite-speech-5.0-2b 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

Citation

@misc{granite-speech-5.0-2b,
  title={Granite 5.0 Speech},
  author={IBM Granite Speech Team},
  year={2026},
  url={https://huggingface.co/ibm-granite/granite-speech-5.0-2b}
}

Files

23 files · 5.05 GBWeights 5.04 GB (safetensors). Sizes and sha256 from the signed manifest.
Show all 23 files with their sha256
FileSizesha256
.gitattributes2.05 KBb819d3aeb5c03742789081978180f2cf5092324416a8880abfeaf097641c190e
README.md27.6 KBbb523b9bf96f87adceae66d75d7a77052e151604425c1de31d016b960b303c13
added_tokens.json26 Bb4956ad3505e979f2f25cc2e2be2163d8e23730f854b6c5a14ed106f3dd90549
assets/granite-5.0-2b-vs-open-english.png289 KB7d90f7f57a4dce1a12ad88abb003d25ee145cbf3a7bc2de9a3b6105ac1968a89
assets/granite-speech-5.0-2b-bleu-en-x.png145 KB6457dd120f1b20faa9a29377ca9c1c80b837e7186a7d03b453055db75d81bc3a
assets/granite-speech-5.0-2b-bleu-x-en.png134 KBec80a8565500554c8c1203f12723b27c55be107b0a552a2e7c72f278391bd079
assets/granite-speech-5.0-2b-ffasr-wer.png302 KB44116a8de1c809c0f5f7e9a47e3a8e5c601e0af8025119f1b8853e0beabf81dc
assets/granite-speech-5.0-2b-kwb-f1.png241 KB757ed050cb5e58f5953bbb93050ec80bfc93b02c3dc6a2bd0751fabc1062b113
assets/granite-speech-5.0-2b-wer-cv.png148 KBa103bd94fc2a32214bb28ba0f1ca4802a1a8bd49fab14df69c9ee2c5afa15af3
chat_template.jinja193 Be3219da52634178f68696475ea4518ade9d1b5c9a71b825f28312b73afc432c0
config.json2.28 KB14e35a6daa1b4bdd38b3fc0b62eaf519e8993a2fbbbc2b527432c684376d62a3
generation_config.json147 B4a5e80bbcf4116a96b385e0af3ff94b03a7393d424a1201cb1f974e9ffc2e1da
merges.txt917 KBb6fe424e334903f7fb84d3a106d9730455f4744b9fe3c21ee136d97a00e72502
model.safetensors4.63 GB4151269881d2dd825d45ca75d6552b2a20e6e39d0934ed84c4db826af8bf6d88
model.sig10.4 KBd9ace3605a4eb23235d5e2594007198a510b4c4df7dbd25b4483722aa950229e
multilingual_sample.wav1.60 MB91d243650809c1274141ec20ff23045315eaf27567694002ea3ef390048b7058
out_llm.safetensors411 MBa6b638a913b2dcf835dfbc621d9780d2557ac635a5c4718d1ffe64d39beb8ada
preprocessor_config.json336 B382a6f26300937721969b01909c96c2e519620b6781f7b45cb8b2e348a932d87
processor_config.json80 B13edc723022827cc3620ba2e2b4bcf52287b365d77e60a31227f0a4b7dea5f9c
special_tokens_map.json579 Bc08676c49fd7969a3130f72be6d4bf34da66aa484a6e21dffe359893a1bd5f2e
tokenizer.json7.15 MB43ca88fd0519c64ef93fa0a90cbc4e560fe485b5ba60348a86bc3c624f37918e
tokenizer_config.json17.9 KBd73f1764da53505c5f9ef0faad27a48f05957e95c98456cdbb12e9b758c4e3c4
vocab.json1.61 MB8af71076de8b0b626eed0f4c984faf0a7c062479164b2a31308a948524d4f69c
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
ec49ca6b1a pinned now2026-11-15 02:43 UTC23 files · 5.05 GB

Use it

$ fw get ibm-granite/granite-speech-5.0-2b
# manifest sha256 ba7102a53be4… · 5.05 GB · 23 files
$ fw verify ./granite-speech-5.0-2b ibm-granite/granite-speech-5.0-2b
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-5.0-2b.json --dir ./granite-speech-5.0-2b $ python3 fw.py verify ./granite-speech-5.0-2b ./ibm-granite__granite-speech-5.0-2b.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download ibm-granite/granite-speech-5.0-2b --revision ec49ca6b1a5e7e9176127e09cb303ab78cbacdf7 --local-dir ./granite-speech-5.0-2b
transformersSpeech recognition with the transformers pipeline.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import pipeline asr = pipeline("automatic-speech-recognition", model="ibm-granite/granite-speech-5.0-2b", revision="ec49ca6b1a5e7e9176127e09cb303ab78cbacdf7") print(asr("audio.wav")["text"])

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-15
Text in
README.md
Text sha256
bb523b9bf96f87adceae66d75d7a77052e151604425c1de31d016b960b303c13
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-5.0-2bDate: 2026-11-15Commit: ec49ca6Signed: 2DC28CC7B26A283B ✓
Upstream
ibm-granite/granite-speech-5.0-2b
Pinned commit
ec49ca6b1a5e7e9176127e09cb303ab78cbacdf7
Manifest
granite-speech-5.0-2b.json · .minisig
Manifest sha256
ba7102a53be49b581c3a5795367fc93d6ae2d03d4c503d04dceab7baebe2fbcd
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 02:43 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/ibm-granite/granite-speech-5.0-2b.json $ curl -O https://freeweights.allternit.com/manifests/ibm-granite/granite-speech-5.0-2b.json.minisig $ minisign -Vm granite-speech-5.0-2b.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

2 models in the catalog name this one as their parent.

Quantizations
2
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download ibm-granite/granite-speech-5.0-2b
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-5.0-2b.json. Provenance. Takedown history: none.

Variants

2 quantized or adapter builds of granite-speech-5.0-2b. Each has its own license check and page.

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