Open Source
Explore the latest AI open-source projects from GitHub and HuggingFace.
Explore the latest AI open-source projects from GitHub and HuggingFace.
transcribe.cpp is a C/C++ speech-to-text inference library that runs 16 model families and more than 60 variants on the ggml runtime through GGUF weights. It was created in April 2026 by the team behind Handy, has accumulated roughly 1,620 stars and 62 forks in under four months, and is MIT-licensed. The project's premise is easy to state and hard to execute: whisper.cpp proved that one portable C++ engine could make a single ASR family run everywhere, and transcribe.cpp asks why that should stop at Whisper. ## One Engine, Sixteen Families The supported-model table is the part of the README worth reading twice. NVIDIA's Parakeet appears in ten variants spanning TDT, RNN-T, CTC, and TDT+CTC decoders from 110M to 1.1B parameters. Canary contributes four checkpoints including the 1B flash models, and Canary-Qwen adds a 2.5B FastConformer paired with Qwen3-1.7B as a speech-augmented language model. Whisper itself supplies twelve variants from tiny through large-v3-turbo with the English-only siblings. Beyond those sit GigaAM, Moonshine and its streaming counterpart, Qwen3-ASR at 0.6B and 1.7B, Cohere Transcribe, SenseVoice, FunASR Nano, two Nemotron streaming models, a multitalker Parakeet, Granite Speech 4 and 4.1, Voxtral in mini and 24B sizes plus a realtime variant, a gated medical-dictation model, MOSS Transcribe-Diarize, and Sortformer for streaming speaker diarization with no transcription at all. That range matters because ASR has fragmented badly. Each lab ships its own PyTorch inference stack — NeMo for NVIDIA, transformers for others, bespoke repos for the rest — and deploying two models from two labs has typically meant carrying two Python environments and two sets of CUDA assumptions. Collapsing them into one C API is a substantial consolidation. ## Correctness as a Stated Policy The more unusual commitment is verification. Every model published under the project's `handy-computer` Hugging Face organization is described as numerically validated and WER-tested against its reference implementation, with Modal providing GPU credits specifically so those long-running word-error-rate checks can run continuously. This is the failure mode that plagues reimplementation projects. Porting an ASR architecture to a new runtime is straightforward enough to produce output that looks plausible and is quietly worse than the original — a subtly wrong attention mask or a mismatched feature-extraction window costs a few points of WER without ever crashing. Publishing per-model validation as a release gate, and documenting the expected smoke-test, numerical-validation, and benchmark pattern for new ports in `docs/model-family-testing.md`, treats accuracy as a contract rather than an aspiration. ## Backends, Quantization, Bindings Build coverage follows the ggml pattern. Metal enables itself automatically on Apple Silicon; Vulkan and CUDA are opt-in CMake flags with a documented Windows build guide covering Vulkan SDK setup and a short-build-root fallback for deep checkouts. The CPU path uses Justine Tunney's tinyBLAS `llamafile_sgemm` kernels by default, and OpenBLAS is optional but recommended — the README claims it accelerates the host-side decoder roughly 10-15x, with automatic fallback to a scalar path when absent. Pre-built GGUFs cover every supported model, with Hugging Face donating the storage to host them. A `transcribe-quantize` tool produces F16, Q8_0, Q6_K, Q5_K_M, and Q4_K_M variants from reference GGUFs, and a converter script loads NeMo checkpoints directly through `ASRModel.from_pretrained` for anyone needing a dtype or checkpoint that is not pre-built. Output follows the llama.cpp `<slug>-<QUANT>.gguf` naming convention. Official bindings wrap the single-header C API for Python, TypeScript/JavaScript, Rust, and Swift/ObjC, generated and kept in sync with the header rather than hand-maintained. For a project this young, shipping four language bindings alongside the core is an unusual allocation of effort — and a reasonable one, since the value of a portable engine is mostly realized by the people who never touch C++. ## Pros and Cons The strengths are coverage, correctness, and portability. Sixteen families under one C API is materially broader than any comparable project. Per-model WER validation against reference implementations is a stronger quality claim than most inference ports make. Metal, Vulkan, CUDA, and an accelerated CPU path cover essentially the full desktop and mobile hardware matrix. MIT licensing on the engine imposes no downstream constraints. Streaming and batch modes are both supported, and Sortformer diarization plus the diarizing MOSS model mean speaker attribution is available without bolting on a second pipeline. Institutional backing from Mozilla AI's BiR program, Hugging Face, Modal, and Blacksmith gives the infrastructure more durability than a typical solo project. The limitations are real. Input must be 16 kHz mono WAV, so any real deployment needs an ffmpeg or sox transcode step in front — a deliberate scope decision, but a friction point the README pushes onto the user. The project is at v0.1.3 with roughly 27 commits in the last month and 36 open issues, which is healthy activity but early-stage API stability. GitHub reports a single contributor, and while sponsorship reduces the infrastructure bus factor it does not reduce the maintenance one. Model support is uneven in ways the table footnotes rather than hides: the multitalker Parakeet exposes only the single-speaker ASR path, Sortformer diarizes without transcribing, and MedASR is gated. Some real-model tests require downloading checkpoints and are off by default. And no aggregate WER or throughput comparison against reference stacks is published in the README itself, so the validation claim has to be taken on the per-model docs rather than read off a single table. ## Outlook The interesting detail is buried in the sponsorship section: the maintainer credits automated model porting using agentic programming tools as part of how the research direction was explored. Sixteen architecture ports in four months by one contributor is difficult to explain otherwise, and it suggests a template — a validated reference harness plus agent-assisted porting — that could apply to any fragmented model ecosystem. Whether the porting rate holds as architectures grow more heterogeneous, particularly with audio-LLMs like Voxtral and Granite Speech pulling ASR toward full multimodal decoding, is the open question. The ggml ecosystem has shown that a well-maintained portable engine tends to become the default deployment target regardless of what the original labs ship. ## Conclusion transcribe.cpp is worth evaluating for anyone deploying speech-to-text on-device or on mixed hardware, especially where several ASR models need to coexist behind one interface — call analytics, desktop dictation, media pipelines, or embedded transcription. The breadth of supported families and the explicit WER-validation policy are the reasons to pick it over a single-family port. Teams needing a stable API, arbitrary audio input formats, or a multi-maintainer support guarantee should track the project through a few more releases before committing production load to it.
ggml-org
Pure C/C++ port of OpenAI Whisper for edge deployment
CJ Pais
A free, open-source, cross-platform speech-to-text app that transcribes your voice entirely offline — press a shortcut, speak, and have the text pasted into any app.