Skip to content

Add Groq cloud STT engine - #513

Open
johnalpha911 wants to merge 2 commits into
kercre123:mainfrom
johnalpha911:add-groq-stt
Open

johnalpha911 wants to merge 2 commits into
kercre123:mainfrom
johnalpha911:add-groq-stt

Conversation

@johnalpha911

Copy link
Copy Markdown

Adds a new speech-to-text engine, groq, that streams Vector's captured audio to Groq's OpenAI-compatible transcription API (running whisper-large-v3) instead of running a model locally.
This gives low-power hosts — a Raspberry Pi 3B+ in particular — accurate, open-vocabulary recognition that isn't achievable with a local model on 1 GB of ARM. The Pi only captures and forwards audio; Groq does the inference. It also handles accented English and non-English languages (e.g. Greek) far better than the small local VOSK model, and is fast enough that there's no perceptible delay on short commands.
What's included
chipper/pkg/wirepod/stt/groq/Groq.go — the engine. Implements the standard interface (Name, Init, STT). Drains the audio stream to end-of-speech, wraps the PCM as WAV, POSTs it, parses the response, lowercases it. Includes brief retries on transient errors and fail-fast on client errors like a bad key.
chipper/cmd/groq/main.go — entry point, matching the other engines.
chipper/start.sh — adds the groq branch to STT dispatch.
setup.sh — adds Groq Whisper as menu option 5, an API-key prompt, and the build step.
Configuration (env vars in source.sh)
GROQ_API_KEY (required)
GROQ_STT_MODEL (default whisper-large-v3; also whisper-large-v3-turbo)
GROQ_STT_LANGUAGE (default auto-detect; e.g. en, el)
GROQ_STT_PROMPT (optional biasing prompt)
GROQ_API_URL (override for OpenAI-compatible endpoints)
Notes
No new Go dependencies — reuses the audio libraries the existing Whisper module already pulls in.
The build is CGO but does not link any local STT library, so there's no libvosk/whisper.cpp runtime requirement.
Testing
Built and run on a Raspberry Pi 3B+ (Debian trixie, aarch64) against a live Vector. Confirmed correct transcription of short commands with no perceptible latency, custom intents matching as before, and clean startup/error logging

@Switch-modder

Switch-modder commented Jun 20, 2026 •

Copy link
Copy Markdown
Contributor

The point of wirepod is to run all the base Vector functions locally, no? Wouldn't this defeat the point of that because of it being a cloud STT?

@johnalpha911

Copy link
Copy Markdown
Author

The point of wirepod is to run all the base Vector functions locally, no? Wouldn't this defeat the point of that because of it being a cloud STT?

That's a fair point but this was mostly made to bridge the gap between accuracy and the need to have good hardware because as I mentioned with the cloud whisper you get free almost zero delay and very accurate transcription that's why I thought it would be a helpful addition

@geekli

geekli commented Sep 7, 2026

Copy link
Copy Markdown

Thanks for this PR — I've tested it on Escape Pod / Linux wire-pod and it works well in practice (Vector commands + custom intents).

What I like most is that this effectively decouples STT from wire-pod: chipper only needs an OpenAI-compatible POST /v1/audio/transcriptions endpoint. That makes it easy to plug in third-party / open-source ASR (Groq, OpenAI Whisper API, FunASR, self-hosted Whisper, etc.) without more wire-pod code changes — just point at the service (or a thin adapter if the model speaks another protocol).

Suggestion: make the env vars generic (not Groq-branded)
Something like STT_API_URL / STT_API_KEY / STT_MODEL / STT_LANGUAGE (instead of only GROQ_*) would better match how this is used: any OpenAI-compatible transcription service, not just Groq. Groq can remain a documented preset / default URL.

UI request
It would also be great if setup.html → STT Language could edit these STT settings in the web UI (API URL, key, model, language), similar to how Knowledge Graph Setup works today — so users don't have to hand-edit source.sh.

Thanks again for building and maintaining wire-pod — this STT path is a big unlock for Pi / Escape Pod hosts and for open-source ASR.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants