Saltar al contenido
ModelPublicadoExterno
Descargar

Gravel Ctc 440m

A 440M CTC English ASR model: the conformer speech encoder of ibm-granite/granite-speech-4.1-2b-nar, extracted, LoRA-finetuned with a BPE-256 CTC head, and merged into a standalone greedy-CTC recognizer.

TipoOtherModelo baseibm-granite/granite-speech-4.1-2b-narVersiónRevision 7e152a2Bcalidad

Fuente del modelo

Tipo
Other
Tamaño del archivo
1,65 GB
Modelo base
ibm-granite/granite-speech-4.1-2b-nar
Versión
vRevision 7e152a2
Actualizado
31 oct 2026
Descargas
10
Fuente
Hugging Face

Descripción de la fuente

gravel-ctc-440m

A 440M CTC English ASR model: the conformer speech encoder of ibm-granite/granite-speech-4.1-2b-nar, extracted, LoRA-finetuned with a BPE-256 CTC head, and merged into a standalone greedy-CTC recognizer.

[!NOTE] Gravel is granite broken into smaller pieces. This model is the 440M encoder chipped out of IBM's 2B+ ibm-granite/granite-speech-4.1-2b-nar plus a small CTC head. It is not an IBM release, it is a derivative of the granite model.

What it is

  • Encoder: the granite_speech conformer encoder from ibm-granite/granite-speech-4.1-2b-nar instantiated from transformers.models.granite_speech classes, weights extracted, then LoRA-adapted (r=16 on attention + macaron-FFN linears) and merged.
  • Head: a new BPE-256 head (257 with blank) behind a 50→25 Hz average-pool-initialized depthwise downsample.
  • Frontend: log-mel (n_fft 512, win 400, hop 160, 80 mels) → Whisper-style per-utterance norm → 2-frame stack (160-dim @ 50 Hz), computed inside the model — feed raw 16 kHz PCM.

How it was made

  1. Extract the encoder weights + config from ibm-granite/granite-speech-4.1-2b-nar.
  2. Attach the 50→25 Hz downsample + new BPE-256 CTC head (the vocab is a 256-piece BPE)
  3. Train with CTC + an emission penalty (a from-scratch BPE-256 head blank-collapses without it) on a large English mix, backbone frozen, {LoRA, downsample, head} trainable.
  4. Merge LoRA → this standalone checkpoint.

It is used as the knowledge-distillation teacher for FUTO's streaming ASR models.

Usage

import torch, torchaudio
from transformers import AutoModel

model = AutoModel.from_pretrained("futo-org/gravel-ctc-440m", trust_remote_code=True).eval()

wav, sr = torchaudio.load("speech.wav")           # any mono/stereo file
wav = torchaudio.functional.resample(wav.mean(0), sr, 16000)
print(model.transcribe(wav))                       # greedy CTC text

Or via pipeline:

from transformers import pipeline
asr = pipeline("automatic-speech-recognition", model="futo-org/gravel-ctc-440m",
               trust_remote_code=True)
print(asr("speech.wav")["text"])

Lineage & license

Derived from ibm-granite/granite-speech-4.1-2b-nar (Apache-2.0, IBM).

Modifications: encoder extraction, 50→25 Hz downsample, BPE-256 CTC head, LoRA finetune (merged).

Fuentes

1 fuente
Hugging FacePrincipalVersión 7e152a2ea84b9a5f07e5cfedbcb64f362c43e2d9
huggingface.co/futo-org/gravel-ctc-440m/tree/7e152a2ea84b9a5f07e5cfedbcb64f362c43e2d9

Verificado 31 oct

Download files

Repository files

File inventory only; completeness is unverified.

Artefactos del modelo

1 artefacto

model.safetensors

safetensors · 1,65 GB · SHA-256 3644dc5f5fc9…8a33 · Hugging Face

Download file

Extractos de fuentes

3 extractos

--- license: apache-2.0 language: [en] pipeline_tag: automatic-speech-recognition tags: [asr, ctc, granite, conformer, english] base_model: ibm-granite/granite-speech-4.1-2b-nar --- # gravel-ctc-440m A 440M **CTC English ASR model**: the conformer speech encoder of [`ibm-granite/granite-speech-4.1-2b-nar`](https://huggingface.co/ibm-granite/granite-speech-4.1-2b-nar), extracted, LoRA-finetuned with a BPE-256 CTC head, and merged into a standalone greedy-CTC recognizer. > [!NOTE] > Gravel is granite broken into smaller pieces. > This model is the 440M encoder chipped out of IBM's 2B+ > [`ibm-granite/granite-speech-4.1-2b-nar`](https://huggingface.co/ibm-granite/granite-speech-4.1-2b-nar) > plus a small CTC head. It is **not** an IBM release, > it is a derivative of the granite model. ## What it is - **Encoder**: the `granite_speech` conformer encoder from `ibm-granite/granite-speech-4.1-2b-nar` instantiated from `transformers.models.granite_speech` classes, weights extracted, then LoRA-adapted (r=16 on attention + macaron-FFN linears) and merged. - **Head**: a new **BPE-256** head (257 with blank) behind a 50→25 Hz average-pool-initialized depthwise downsample. - **Frontend**: log-mel (n_fft 512, win 400, hop 160, 80 mels) → Whisper-style per-utterance norm → 2-frame stack (160-dim @ 50 Hz), computed inside the model — feed raw 16 kHz PCM. ## How it was made 1. Extract the encoder weights + config from `ibm-granite/granite-speech-4.1-2b-nar`. 2. Attach the 50→25 Hz downsample + new BPE-256 CTC head (the vocab is a 256-piece BPE) 3. Train with CTC + an emission penalty (a from-scratch BPE-256 head blank-collapses without it) on a large English mix, backbone frozen, {LoRA, downsample, head} trainable. 4. Merge LoRA → this standalone checkpoint. It is used as the **knowledge-distillation teacher** for FUTO's streaming ASR models. ## Usage ```python import torch, torchaudio from transformers import AutoModel model = AutoModel.from_pretrained("futo-org/gravel-ctc-440m", trust_remote_code=True).eval() wav, sr = torchaudio.load("speech.wav") # any mono/stereo file wav = torchaudio.functional.resample(wav.mean(0), sr, 16000) print(model.transcribe(wav)) # greedy CTC text ``` Or via pipeline: ```python from transformers import pipeline asr = pipeline("automatic-speech-recognition", model="futo-org/gravel-ctc-440m", trust_remote_code=True) print(...

Source context: 10 downloads · 0 likes · Pipeline automatic-speech-recognition · Repo futo-org/gravel-ctc-440m

Source context: 57 downloads · 0 likes · Pipeline automatic-speech-recognition · Repo futo-org/gravel-ctc-440m