IBM Granite Speech (mlx-audio, Apple Silicon)¶
Host-orchestrated Granite Speech via mlx-audio (≥ 0.5.9). Apache-2.0 weights. Not inside the analysis Docker image or the TranscriptX analysis venv.
Run in app: Transcribe Audio → provider Granite Speech (MLX) (
granite_mlx).Copy command: Transcribe Audio → Granite Speech mlx-audio (macOS host).
On Linux/CUDA, keep WhisperX Docker or Parakeet. Granite mlx-audio is macOS / Apple Silicon.
Checkpoints¶
Intent |
Hugging Face id |
Notes |
|---|---|---|
Accuracy, punctuation, keyword lists (up to 2,000) |
|
Default when Diarize is off. IBM recommends ~2 minute chunks; Run in app splits at 110s. |
Meetings / who said what |
|
Default when Diarize is on ( |
Segment times from this provider are chunk wall-clock (and character-split estimates for speaker turns). For WhisperX-grade words and speakers, keep WhisperX Docker.
Host install¶
Use a separate Python (not .venv / analysis):
python3 -m venv ~/venvs/mlx-audio
~/venvs/mlx-audio/bin/pip install -U mlx-audio jinja2
export MLX_AUDIO_PYTHON=~/venvs/mlx-audio/bin/python
First run downloads Hub weights. Optional: GRANITE_SPEECH_MODEL=ibm-granite/granite-speech-5.0-2b.
Keyword biasing (default off)¶
Settings → Keywords stores named lists. On Transcribe Audio, enable Keyword biasing and pick a list (plus optional extra terms). Granite receives them as hotwords / Keywords: in the prompt. Whisper providers ignore the lists in this version. Cap: 2000 terms.
Stub mode (dev/CI)¶
TRANSCRIPTX_GRANITE_STUB=1 writes placeholder WhisperX-shaped JSON — no Hub download.
Convert BYO mlx-audio JSON¶
python3 -m transcriptx.services.transcription.granite_json_to_whisperx \
--input /path/to/granite_raw.json \
--output /path/to/originals/meeting.json
Trust / licence¶
IBM Granite Speech checkpoints are Apache-2.0. User-triggered Hub download. See trust_privacy_model_governance_1_0.md and NOTICE.