granite-speech-4.1-2b-plus
by ibm-granite
Speaker-attributed ASR: diarization, word timestamps, and keyword biasing in 2B
ibm-granite/granite-speech-4.1-2b-plusmixpeek://transcription@v1/ibm_granite_speech_41_2b_plus_v1Overview
Granite Speech 4.1 2B Plus extends the base Granite Speech model with speaker attribution, word-level timestamp alignment (38.8ms average accuracy), and keyword biasing -- all in a single 2B parameter model. Unlike pipeline approaches that chain separate ASR and diarization models, it produces speaker-labeled, timestamped transcripts in one forward pass.
With a Word Diarization Error Rate (WDER) of 0.9% on the FISHER dataset, it delivers production-grade speaker attribution. Keyword biasing lets you improve recognition of domain-specific terms (product names, technical jargon) without fine-tuning. On Mixpeek, it powers meeting transcription and call analytics pipelines where speaker identity and precise timing matter.
Architecture
Autoregressive encoder-decoder (2B parameters) with multi-task training heads for ASR, speaker attribution, and timestamp alignment. Supports keyword biasing via attention-based shallow fusion. Native vLLM serving support.
Mixpeek SDK Integration
// No extractor parameter takes a Hugging Face model id (checked against
// GET /v1/discovery/extractors, which returns 13), so granite-speech-4.1-2b-plus runs
// on your side and the output is upserted through POST
// /v1/namespaces/{namespace_id}/documents/upsert. On Enterprise the other
// path is to upload the weights instead: POST /v1/namespaces/{id}/models
// accepts the huggingface format and a custom plugin loads them.
const res = await fetch(
"https://api.mixpeek.com/v1/namespaces/ns_your_namespace/documents/upsert",
{
method: "POST",
headers: {
Authorization: "Bearer API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
collection_id: "col_your_collection",
documents: [
{
document_id: "asset-00412",
// The model produces text, so it lands in payload. Give the
// collection a text vector index and embed that text to make it
// searchable rather than only filterable.
payload: { extracted_text: modelOutput, source_key: "archive/2026/asset-00412" },
vectors: { "text-embedding": embeddingOfModelOutput },
},
],
}),
},
);
// Managed alternative, if this exact model is not the requirement:
// universal_extractor@v1 runs google/gemini-embedding-2
// (3072-d) over a bucket, with no inference of your own.Capabilities
- Joint ASR + speaker diarization in one pass
- Word-level timestamps (38.8ms average accuracy)
- Keyword biasing without fine-tuning
- WDER 0.9% on FISHER dataset
- Apache 2.0 license, vLLM-ready
Use Cases on Mixpeek
Benchmarks
| Dataset | Metric | Score | Source |
|---|---|---|---|
| FISHER (speaker diarization) | WDER | 0.9% | IBM, 2026: Model Card |
| Timestamp accuracy | Mean deviation | 38.8ms | IBM, 2026: Model Card |
Performance
Common Pipeline Companions
Explore on Mixpeek
Compare alternatives in this category
Hand-picked tools & platforms compared
Deep-dive technical guide
See how Mixpeek runs models as extractors
Store & search embeddings at scale
Usage-based pricing for pipelines
Compare models, APIs & infrastructure
Specification
Research Paper
Granite Speech 4.1: Speaker-Attributed ASR
arxiv.orgBuild a pipeline with granite-speech-4.1-2b-plus
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