--- license: apache-2.0 language: - en - fr - de - es - pt - ja base_model: - ibm-granite/granite-4.0-1b-speech pipeline_tag: automatic-speech-recognition tags: - loom - automatic-speech-recognition library_name: loom-py-rt --- # Granite-4.0-1b-speech IBM's Granite 4.0 1B speech-language model (ASR + AST), exported for loom.cpp. This is a [loom.cpp](https://github.com/loom-ai-org/loom.cpp) export: a single self-describing GGUF that carries its own graph topologies, tokenizer (if any) and driver script, produced by [loom-exporter](https://github.com/loom-ai-org/loom-exporter). ## Original model Exported from [`ibm-granite/granite-4.0-1b-speech`](https://huggingface.co/ibm-granite/granite-4.0-1b-speech). Weights are unmodified; this repo packages the same parameters into loom.cpp's GGUF format. ## License `apache-2.0`, inherited from the base model above. ## Language(s) `en`, `fr`, `de`, `es`, `pt`, `ja` upstream also tags the model "multilingual" ## Usage Run it with [loom-py](https://github.com/loom-ai-org/loom-py) -- `loom-py-rt` on PyPI: ```sh pip install -U "loom-py-rt[hub]" ``` ```python import loom model = loom.Model.from_pretrained("loom-ai-org/granite-speech-4.0-1b-loom") # Audio is a mono float list at 16 kHz. This model decodes in the one language it was trained for and # takes no `language=` argument -- passing one warns and is ignored, because nothing in its decode # could act on it. result = model.speech2text.infer(audio, timestamps=True) print(result.text) # It emits no timestamp tokens, so `segments` is one span covering the whole clip and # `result.timestamped` is False. Check that before treating a start/end as a boundary the model chose. for segment in result.segments: print(segment.start, segment.end, segment.text) ``` ### The layer underneath The call above is the high-level door: one per task, named for the modality pair it maps between, with the windowing, sampling and assembly this model needs already applied. Under it, `model.infer(...)` passes your arguments straight to the driver this GGUF embeds -- which is where you go for a knob the door does not name. `model.driver_source` prints that driver, including a header comment documenting every argument it accepts for this model, and is the authority on it. See [loom-py](https://github.com/loom-ai-org/loom-py) for the API and [loom.cpp](https://github.com/loom-ai-org/loom.cpp) for what the engine does between the two. ## Files - `granite-speech-4.0-1b.gguf` -- the model, exported with loom-exporter.