AI SeedbankHelp preserve open and free AI for humanity's future

← All models

ibm-granite_granite-speech-3.3-2b

ibm-granite · View on Hugging Face ↗

Get this model

Download TorrentMagnet Link

Seeders: · Leechers:

Model card

The complete upstream card, rendered from this payload's README.md — the same hash-verified bytes the torrent distributes. Images and off-site links are removed; the original card on Hugging Face carries them.


license: apache-2.0 language:

  • multilingual
  • en
  • fr
  • de
  • es
  • pt base_model:
  • ibm-granite/granite-3.3-2b-instruct library_name: transformers

Granite-speech-3.3-2b (revision 3.3.2)

Model Summary: Granite-speech-3.3-2b is a compact and efficient speech-language model, specifically designed for automatic speech recognition (ASR) and automatic speech translation (AST). Granite-speech-3.3-2b uses a two-pass design, unlike integrated models that combine speech and language into a single pass. Initial calls to granite-speech-3.3-2b will transcribe audio files into text. To process the transcribed text using the underlying Granite language model, users must make a second call as each step must be explicitly initiated.

The model was trained on a collection of public corpora comprising diverse datasets for ASR and AST as well as synthetic datasets tailored to support the speech translation task. Granite-speech-3.3-2b was trained by modality aligning granite-3.3-2b-instruct (https://huggingface.co/ibm-granite/granite-3.3-2b-instruct) to speech on publicly available open source corpora containing audio inputs and text targets. Compared to the initial release, revision 3.3.2

  • supports multilingual speech inputs in English, French, German, Spanish and Portuguese,
  • provides transcription accuracy improvements for English ASR by using a deeper acoustic encoder and additional training data.

Evaluations:

We evaluated granite-speech-3.3-2b revision 3.3.2 alongside granite-speech-3.3-8b (https://huggingface.co/ibm-granite/granite-speech-3.3-8b) and other speech-language models in the less than 8b parameter range as well as dedicated ASR and AST systems on standard benchmarks. The evaluation spanned multiple public benchmarks, with particular emphasis on English ASR tasks while also including multilingual ASR and AST for X-En and En-X translations.





Release Date: June 19, 2025

License: Apache 2.0

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

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 and Portuguese speech-to-text and speech translations to and from English for the same languages plus English-to-Japanese and English-to-Mandarin. The model can also be used for tasks that involve text-only input since it calls the underlying granite-3.3-2b-instruct when the user specifies a prompt that does not contain audio.

Generation:

Granite Speech model is supported natively in transformers from the main branch. Below is a simple example of how to use the granite-speech-3.3-2b revision 3.3.2 model.

Usage with transformers

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

pip install transformers>=4.52.4 torchaudio peft soundfile

Then run the code:

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

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

model_name = "ibm-granite/granite-speech-3.3-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="10226_10111_000000.wav")
wav, sr = torchaudio.load(audio_path, normalize=True)
assert wav.shape[0] == 1 and sr == 16000  # mono, 16khz

# create text prompt
system_prompt = "Knowledge Cutoff Date: April 2024.\nToday's Date: April 9, 2025.\nYou are Granite, developed by IBM. You are a helpful AI assistant"
user_prompt = "<|audio|>can you transcribe the speech into a written format?"
chat = [
    dict(role="system", content=system_prompt),
    dict(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 = torch.unsqueeze(model_outputs[0, num_input_tokens:], dim=0)
output_text = tokenizer.batch_decode(
    new_tokens, add_special_tokens=False, skip_special_tokens=True
)
print(f"STT output = {output_text[0].upper()}")

Usage with vLLM

First, make sure to install the latest version of vLLM:

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

model_id = "ibm-granite/granite-speech-3.3-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)

# NOTE - you may see warnings about multimodal lora layers being ignored;
# this is okay as the lora in this model is only applied to the LLM.
model = LLM(
    model=model_id,
    enable_lora=True,
    max_lora_rank=64,
    max_model_len=2048, # This may be needed for lower resource devices.
    limit_mm_per_prompt={"audio": 1},
)

### 1. Example with Audio [make sure to use the lora]
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.2,
        max_tokens=64,
    ),
    lora_request=[LoRARequest("speech", 1, model_id)]
)
print(f"Audio Example - Question: {question}")
print(f"Generated text: {outputs[0].outputs[0].text}")


### 2. Example without Audio [do NOT use the lora]
question = "What is the capital of Brazil?"
prompt = get_prompt(
    question=question,
    has_audio=False,
)

outputs = model.generate(
    {"prompt": prompt},
    sampling_params=SamplingParams(
        temperature=0.2,
        max_tokens=12,
    ),
)
print(f"Text Only 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-3.3-2b \
    --api-key token-abc123 \
    --max-model-len 2048 \
    --enable-lora  \
    --lora-modules speech=ibm-granite/granite-speech-3.3-2b \
    --max-lora-rank 64
"""

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,
)

base_model_name = "ibm-granite/granite-speech-3.3-2b"
lora_model_name = "speech"
# 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)

### 1. Example with Audio
# NOTE: we pass the name of the lora model (`speech`) here because we have audio.
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.2,
    max_tokens=64,
    model=lora_model_name,
)


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


### 2. Example without Audio
# NOTE: we pass the name of the base model here because we do not have audio.
question = "What is the capital of Brazil?"
chat_completion_with_audio = client.chat.completions.create(
    messages=[{
        "role": "user",
        "content": [
            {
                "type": "text",
                "text": question
            },
        ],
    }],
    temperature=0.2,
    max_tokens=12,
    model=base_model_name,
)

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

Model Architecture:

The architecture of granite-speech-3.3-2b revision 3.3.2 consists of the following components:

(1) Speech encoder: 16 conformer blocks trained with Connectionist Temporal Classification (CTC) on character-level targets on the subset containing only ASR corpora (see configuration below). In addition, our CTC encoder uses block-attention with 4-seconds audio blocks and self-conditioned CTC from the middle layer.

Configuration parameter Value
Input dimension 160 (80 logmels x 2)
Nb. of layers 16
Hidden dimension 1024
Nb. of attention heads 8
Attention head size 128
Convolution kernel size 15
Output dimension 256

(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 encoder, projector and LoRA adapters were fine-tuned/trained jointly on all the corpora mentioned under Training Data.

(3) Large language model: granite-3.3-2b-instruct with 128k context length (https://huggingface.co/ibm-granite/granite-3.3-2b-instruct).

(4) LoRA adapters: rank=64 applied to the query, value projection matrices

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 the speech translation task. A detailed description of the training datasets can be found in the table below:

Name Task Nb. hours Source
CommonVoice-17 En,De,Es,Fr,Pt ASR 5600 https://huggingface.co/datasets/mozilla-foundation/common_voice_17_0
MLS En,De,Es,Fr,Pt ASR 48000 https://huggingface.co/datasets/facebook/multilingual_librispeech
Librispeech English ASR 1000 https://huggingface.co/datasets/openslr/librispeech_asr
VoxPopuli En,De,Fr,Es ASR 1100 https://huggingface.co/datasets/facebook/voxpopuli
AMI English ASR 100 https://huggingface.co/datasets/edinburghcstr/ami
YODAS English ASR 10000 https://huggingface.co/datasets/espnet/yodas
Earnings-22 English ASR 105 https://huggingface.co/datasets/esb/datasets
Switchboard English ASR 260 https://catalog.ldc.upenn.edu/LDC97S62
CallHome English ASR 18 https://catalog.ldc.upenn.edu/LDC97T14
Fisher English ASR 2000 https://catalog.ldc.upenn.edu/LDC2004S13
Voicemail part I English ASR 40 https://catalog.ldc.upenn.edu/LDC98S77
Voicemail part II English ASR 40 https://catalog.ldc.upenn.edu/LDC2002S35
CommonVoice-17 De,Es,Fr,Pt->En AST 3000 Translations with Granite-3 and Phi-4
CommonVoice-17 En->De,Es,Fr,It,Ja,Pt,Zh AST 18000 Translations with Phi-4 and MADLAD

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 13 days on 32 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 modular design improves safety by limiting how audio inputs can influence the system. If an unfamiliar or malformed prompt is received, the model simply echoes it with its transcription. 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-3.3-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

  • 📄 Read the full technical report: https://arxiv.org/abs/2505.08699 (covers initial release only)
  • 🔧 Notebooks: Finetune on custom data, two-pass spoken question answering
  • ⭐️ Learn about the latest updates with Granite: https://www.ibm.com/granite
  • 🚀 Get started with tutorials, best practices, and prompt engineering advice: https://www.ibm.com/granite/docs/
  • 💡 Learn about the latest Granite learning resources: https://ibm.biz/granite-learning-resources

Magnet link

Opens the swarm directly in your torrent client — no file download needed. Copy-paste works too:

magnet:?xt=urn:btih:b76409294e61ccdd724dac8be9faf8e593a65d1e&dn=ibm-granite_granite-speech-3.3-2b

Open magnet in torrent client · infohash b76409294e61ccdd724dac8be9faf8e593a65d1e

Files & hashes

PathSizesha1sha256
10226_10111_000000.wav527.2 KB (539,884 B)8a1f6251cb2bf2e0d0d7bdeb704b86ea96793e856ee3e432f4ce88415747f0549628bfef0df742365813d38b18bf28067a40cd51
README.md15.7 KB (16,084 B)04e23624459f81629c7c5e5f9461b133d85b52767083dff11fa7f78fc396af3db44274badb32acf618de869eb70b471dcc1423e2
adapter_config.json717 B (717 B)961e0b347860d36c0967fa42983ed7e033d4a25beac02e40a235d1f67af5b3579ff76ae77ec26229390dfca5a599973f8ad9f72c
adapter_model.safetensors65.0 MB (68,178,600 B)e490a79aa5f8fb8462045ece9e72e11e640ed30730de576bc1338e63d49d9bd74930aaeb0695745efe5cfd09bc62c8416c2db567
added_tokens.json229 B (229 B)56202dbcdc838601a5c31deb1076c7b1c6bfd6a71539d9fee5f730b004cf2d5172d603f7a16d18d6b9f4f844da5c0e5588d7d65f
chat_template.jinja4.5 KB (4,566 B)19a91fc82aafa90959f6e2be2061cd0148fff4470bea7711316005a1c37c9941a7ee2a26311d223c979abee416aab0a402fc5b56
config.json2.4 KB (2,413 B)b32f0baffc069011ce0de76d4fb2db9374034abb3153bb499e57b9ebaba10dd87da29b6f64c4e4f381e59cf88b6b774916e6af3a
generation_config.json183 B (183 B)c9c2a711ad5db4f5516609be5ad6aa46ed602dc37da0809bf7a8c3a0cf23c8b14ba71e391e23bfae6b503627d9d276a342be57cf
merges.txt431.5 KB (441,810 B)f8479fb696fe07332c55300a6accf8cc191acc6a303127a244b0078878156c17229f36d11b7a3a3f8e47b7cfdbb304ff46be5030
model-00001-of-00003.safetensors1.86 GB (1,992,459,128 B)46d5bc528bc8a6de5825bb3b9c765c9a4a07b1dcbd355249426713a1628972b46d82d4cc1e5efc5af62b77884410d4d2b42004c7
model-00001-of-00004.safetensors1.86 GB (1,992,459,128 B)46d5bc528bc8a6de5825bb3b9c765c9a4a07b1dcbd355249426713a1628972b46d82d4cc1e5efc5af62b77884410d4d2b42004c7
model-00002-of-00003.safetensors1.86 GB (1,992,453,224 B)b46dc61f5e98d8a3395759e871b31d824db48f41a6fb9326afc6776e711662437ae38957b898b38716772ad24f6ef0a3c3e06694
model-00002-of-00004.safetensors1.86 GB (1,992,453,224 B)b46dc61f5e98d8a3395759e871b31d824db48f41a6fb9326afc6776e711662437ae38957b898b38716772ad24f6ef0a3c3e06694
model-00003-of-00003.safetensors1.59 GB (1,703,356,524 B)70b15b403f61a7763a7d6b9bd93fab143f4774612eaba70566e777f00625eac8762390fcaa5b786d8113e6e4c9d723609b5a0bb2
model-00003-of-00004.safetensors1.86 GB (1,998,075,896 B)e78fd45cbc35fa3f8b38253d3bc537fd6082c0849aa9c5af42824c1b0b928b98b5526fd745448a2e57a31d261753a7770b489143
model-00004-of-00004.safetensors34.0 MB (35,696,040 B)b2b1c1546bd4d7eac6338dae95de9828b8bf8a76102d069fe3ff523609ca1e535fb494e0987e69f571438ab3c67e3dcd8f3cecb0
model.safetensors.index.json82.3 KB (84,324 B)91da94c2053de4262e236c7f202811efb548a69587c03619799b13cdf9831be8a8d5734a1475a19fe81a89944fdab35382a0e8d6
preprocessor_config.json2 B (2 B)9e26dfeeb6e641a33dae4961196235bdb965b21b44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
special_tokens_map.json801 B (801 B)4ccaca4ecb4010d47211e47ab421192ad7923c3021ce694081bb9ae1bd4bc64549e72e0799ebb74705e6b650e3585d85b71ebdc1
tokenizer.json3.3 MB (3,476,763 B)f5a5bbd18db3ea4ec9a69fb4e1851370ddd3440385731be449eb448aa5a383895a6a884659553ce79d4c478b6a661c566859b40f
tokenizer_config.json5.3 KB (5,438 B)f9b50c370df5e7488ba10dff0773837acebd55f9e5c80e617e26c2e2407cabf3485768a0cf98e4be2dbf2c731b44cc0e5aa2945b
vocab.json758.8 KB (776,995 B)0a11f2016e660fd490f7bf168e6d1f9c86a8f74480ab859339a2525fdfbda14bc39df02dffb824aefdaf86426217bbb146d17e01

Cite this release

Canonical URL
https://aiseedbank.org/models/ibm-granite_granite-speech-3.3-2b/
Slug
ibm-granite_granite-speech-3.3-2b
Infohash
b76409294e61ccdd724dac8be9faf8e593a65d1e
License
apache-2.0
Signing key fingerprint
85a3b32c3712427b

Every file carries a locally computed sha256 — verify a download against the signed sums: ibm-granite_granite-speech-3.3-2b.SHA256SUMS (+ minisign signature).

Provenance

Upstream repositoryibm-granite/granite-speech-3.3-2b
Revision (pinned)4ac2f02f413c6169ae8c0ccc217115a366e552d7
Fetched at2026-09-04T00:46:03Z
License at fetchapache-2.0
Snapshot toolhuggingface · seedbank 0.1.0

Trackers

✓ verified · rehash-vs-hf-metadata at 2026-09-04T00:49:01Z

apache-2.010.97 GB (11,780,481,973 bytes)transformerssafetensorsgranite_speechautomatic-speech-recognitionmultilingualeval-resultsendpoints_compatible5 languages (en, fr, de …)paper: 2505.08699