granite-speech-5.0-2b
by ibm-granite
IBM's 2B Apache 2.0 speech model for transcription and translation in six languages, with keyword biasing up to 2,000 terms.
ibm-granite/granite-speech-5.0-2bDeploy granite-speech-5.0-2b
Single-tenantMixpeek has no managed extractor for this model. On a single-tenant deployment you upload the weights and a custom plugin serves them next to the rest of your pipeline.
Overview
Granite Speech 5.0 2B is a compact speech-language model from IBM, released on October 20, 2026. It transcribes English, French, German, Spanish, Portuguese and Japanese, and translates speech to and from English for those languages, plus English to Italian and Mandarin. IBM trained it on 390,000 hours of public audio corpora, and the Apache 2.0 license allows commercial use.
Architecture
An intermediate checkpoint of the granite-4.0-1b-base language model, modality-aligned to speech and trained on audio inputs and text targets. It takes a chat-style prompt with an <|audio|> token and 16 kHz mono audio, and runs natively in Transformers 4.52.1 or later and in vLLM.
Mixpeek SDK Integration
# Adapted from the Granite Speech 5.0 2B model card. Audio must be 16 kHz mono.
# Split recordings longer than about 2 minutes, for example with VAD, before decoding.
import torch, torchaudio
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
model_name = "ibm-granite/granite-speech-5.0-2b"
device = "cuda" if torch.cuda.is_available() else "cpu"
processor = AutoProcessor.from_pretrained(model_name)
tokenizer = processor.tokenizer
model = AutoModelForSpeechSeq2Seq.from_pretrained(
model_name, device_map=device, torch_dtype=torch.bfloat16
)
wav, sr = torchaudio.load("segment.wav", normalize=True)
chat = [{"role": "user", "content": "<|audio|>transcribe the speech with proper punctuation and capitalization."}]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
inputs = processor(prompt, wav, device=device, return_tensors="pt").to(device)
outputs = model.generate(**inputs, max_new_tokens=200, do_sample=False, num_beams=1)
new_tokens = outputs[0, inputs["input_ids"].shape[-1]:].unsqueeze(0)
print(tokenizer.batch_decode(new_tokens, add_special_tokens=False, skip_special_tokens=True)[0])Capabilities
- Speech-to-text in English, French, German, Spanish, Portuguese and Japanese
- Speech translation to and from English for those languages, plus English to Italian and Mandarin
- Keyword biasing with a list of up to 2,000 terms, for names and jargon
- Input language prompting for multilingual transcription
- Punctuation and capitalization in the transcript
Use Cases on Mixpeek
Benchmarks
| Dataset | Metric | Score | Source |
|---|---|---|---|
| VoxPopuli | Punctuation error rate | 23.70 | https://huggingface.co/ibm-granite/granite-speech-5.0-2b |
| Earnings-22 | Punctuation error rate | 21.64 | https://huggingface.co/ibm-granite/granite-speech-5.0-2b |
| CommonVoice English | Capitalization F1 | 96.96 | https://huggingface.co/ibm-granite/granite-speech-5.0-2b |
Performance
We have not measured it. Scores are IBM's own, from its model card.
Common Pipeline Companions
Frequently Asked Questions
What is Granite Speech 5.0 2B?
A 2B speech-language model from IBM for transcribing and translating speech. It handles English, French, German, Spanish, Portuguese and Japanese, and is released under Apache 2.0.
How long can the audio be?
IBM recommends segments of up to about 2 minutes, so split longer recordings first, for example with voice activity detection. Input is 16 kHz mono.
Can it get product names and jargon right?
It accepts a keyword list of up to 2,000 terms to bias transcription and translation toward them. IBM reports keyword F1 scores on its model card; we have not measured them ourselves.
Specification
Build a pipeline with granite-speech-5.0-2b
Add this model to a processing pipeline alongside other extractors. Combine with retrieval stages for end-to-end search.
Run it on your own data, free