Nightly Build / build (push) Successful in 7m1s
The generic per-user #plugins page is gone: a plugin with per-user settings hosts them in its own web_pages() sidebar page instead (Telegram's pairing page is new; Honcho's opt-in page already existed). The admin catalog moves from #plugin-catalog to #plugins (old hash redirected), and user_config_schema is removed from the Plugin trait, the API DTOs and both plugins — the my-config endpoint, the plugin_user_configs store and the update_user_config hook stay, now driven by each plugin's own page fragment.
2.1 KiB
2.1 KiB
Whisper Local
- Plugin id:
whisper_local - Category: Speech-to-text, local
- Runs: on this machine, in-process (via
whisper.cpp, Metal-accelerated on Apple Silicon) — no cloud, no API key
What it does
Transcribes voice messages entirely on-device using whisper.cpp. Nothing leaves the machine — the right choice when privacy matters more than raw speed, or when there's no budget for a cloud transcription API.
The model (roughly 1–3 GB depending on size) is loaded into memory only when first needed ("lazy" loading) and unloaded again after a configurable idle period to free RAM — unless eager loading is turned on.
Requirements
- A GGML
.binWhisper model file, downloaded manually onto the host filesystem — this plugin does not fetch it automatically. Example:Smaller/faster models (e.g.curl -L -o models/ggml-large-v3.bin \ https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v3.binggml-medium.bin,ggml-small.bin) trade accuracy for speed and size — point at any of them. ffmpeginstalled on the host (used to convert incoming audio to the 16 kHz mono format Whisper needs).
Enabling & configuring (admin)
- Download a model file first (see above) and note its path.
- Plugins page → Whisper Local → enable, then Configure.
- Fields:
model(required) — path to the.binfile, e.g.models/ggml-large-v3.bin.language— a BCP-47 code (it,en, …) orautofor automatic detection (defaultauto).load_at_startup— load the model into memory as soon as the plugin starts, instead of on first use (default off).idle_timeout_secs— unload the model from memory after this many seconds of inactivity,0= never unload (default1200, 20 minutes).
Notes
- The model occupies roughly 1–3 GB of RAM while loaded.
- The very first transcription after an idle unload is slower, since the model has to reload.
- No external service and no per-use cost — the trade-off is local CPU/GPU time and disk space for the model file.