High-performance Whisper.cpp speech-to-text nodes for Nodetool. This package wraps the community pywhispercpp bindings so you can run low-latency transcription workflows entirely on the CPU with streaming support.
- Local-first ASR – keep conversations on-device by decoding audio without cloud services
- Streaming-friendly – ingest real-time audio chunks and emit incremental transcript updates for responsive UIs
- Whisper.cpp ecosystem – reuse ggml checkpoints from
ggerganov/whisper.cpp
via the Hugging Face cache manager built into Nodetool
All nodes live under src/nodetool/nodes/whispercpp
:
whispercpp.WhisperCpp
– configurable Whisper.cpp transcription with streaming text (chunk
) and final transcript (text
) outputs
Typed DSL wrappers are available under src/nodetool/dsl/whispercpp
for use in generated workflows.
- Python 3.11
- CPU with AVX instructions (recommended for Whisper.cpp performance)
- nodetool-core v0.6.0+
- ggml Whisper model files cached locally from ggerganov/whisper.cpp
- Open Nodetool → Tools ▸ Packages
- Install the
nodetool-whispercpp
pack from the package registry - Nodetool will handle dependencies and expose the Whisper nodes in the graph editor once installed
git clone https://github.com/nodetool-ai/nodetool-whispercpp.git
cd nodetool-whispercpp
uv pip install -e .
uv pip install -r requirements-dev.txt
If you prefer Poetry or pip, install the project the same way—just ensure dependencies are resolved against Python 3.11.
The Whisper.cpp node expects ggml model files (e.g., ggml-base.en.bin
) in the local Hugging Face cache. Download and manage them from the Models Manager in Nodetool:
- Open Nodetool → Menu ▸ Models
- Select the
whispercpp
tab to view recommended checkpoints for each model size - Click Download for the models you plan to use; Nodetool stores them in the Hugging Face cache automatically
- The UI tracks model availability and prompts you when updates are available
Advanced users can pre-populate the cache manually by running huggingface-cli download ggerganov/whisper.cpp ggml-<model>.bin
, but using the UI integration keeps paths consistent and avoids missing-model errors at runtime.
- Install
nodetool-core
and this package in the same environment - Run
nodetool package scan
to generate metadata and DSL bindings - (Optional)
nodetool codegen
to refresh typed DSL wrappers - Build workflows in the Nodetool UI or through Python DSL scripts using the
whispercpp
namespace
Example (Python DSL):
from nodetool.dsl.whispercpp import WhisperCpp
node = WhisperCpp(model="base.en", n_threads=8)
Connect an audio source (file, microphone stream, or AudioRef
) to the node. The node emits incremental transcript chunks on chunk
and the final transcript on text
, plus timing and probability metadata for downstream nodes.
Run tests and lint checks before submitting PRs:
pytest -q
ruff check .
black --check .
Please open issues or pull requests for bug fixes, additional Whisper.cpp capabilities, or performance improvements. Contributions are welcome!