feat(models): add IBM Granite Speech 5.0 470M TurboCTC ASR engine - #311
Conversation
|
@ampersandru Thanks for the PR! I just spoke with the model’s author on LinkedIn about integrating it into audio.cpp. Perfect timing! Could you move the model under the community_models/ directory? Models under models/ go through more extensive testing, including Vulkan and Metal runtime validation. I’d like to make this model available early. |
Done! I've moved the Granite 5.0 ASR model implementation under community_models/ ( |
|
@ampersandru Thanks for the update! Could you remove the That change is not required for the model integration and should be handled in a follow-up PR. It also invokes the external ffmpeg command from the server path, which may not be portable across environments and would require CI changes if we want this feature to actually work. |
|
one bug I cant seem to fix, I tried adding this as a STT in Open WebUI and it errors out: Works in Home Assistant after linking it to wyoming_openai docker |
Let’s keep it separate from this PR. I’ve already completed end-to-end inference testing, so the model port can be merged safely once the runtime.cpp changes are removed. |
a3850d3 to
d5b120b
Compare
d5b120b to
f0a43d2
Compare
I've removed the I will test another ASR model in openwebui, this might just be a specific issue related to OWU |
Looks like a similar issue as #312. |
might be a bit different, I posted the request/bug: #313 |
|
@ampersandru PR merged! Thanks! |
ASR Benchmark: NVIDIA Parakeet-TDT 0.6B v3 vs IBM Granite Speech 5.0 470M (audio.cpp)Hardware: NVIDIA GeForce RTX 5060 Ti (CUDA Backend) 1. Benchmark & Performance Summary
2. Side-by-Side Transcription OutputsTest 1 (10.09s Audio)
Test 2 (19.49s Audio)
Test 4 (11.77s Audio)
3. Architectural Differences & Why Granite Lacks Punctuation
4. Recommended Use Cases
|
Summary
Adds support for IBM Granite Speech 5.0 470M TurboCTC, an ultra-fast, compact 470M parameter English Automatic Speech Recognition (ASR) model based on a Conformer CTC architecture.
This integration includes:
Q8_0) and float (F16/F32) packaging with embedded tokenizer JSON and model specs.server.jsonfor OpenAI-compatible/v1/audio/transcriptionsand/v1/audio/transcriptions/liveendpoints.Technical Details
Frontend:
Conformer Encoder:
ggml_view_3dwith batched matrix multiplications forTokenizer & CTC Decoding:
HuggingFaceTokenizerJson.<|blank|>, ID 0) collapse.Performance & Verification
Tested on LibriSpeech
librispeech_test_clean_6930-75918-0000.wav(3.0s audio clip):Golden Parity Test Output
Raw transcript: concord returned to its place amidst the tents Normalized actual: concord returned to its place amidst the tents Normalized expected: concord returned to its place amidst the tents PASS: Granite 5 ASR golden transcription verified successfully.
server.json
CLI & Server Usage
CLI
AI Disclaimer: Yes, I used AI to help me integrate Granite into audio.cpp. Tested and verified to work