pastilhas bd08f9a5fe no idle timeout on the sidecar's own server
this holds a connection open while whisper works, and nothing flows on it
meanwhile — exactly what an idle timeout kills. unset, Bun drops the
platform's connection at around 255s.

it was the last of three hops still doing it. the proxy's outbound fetch
and the platform's inbound timeout were both fixed earlier today and a
42-minute recording still died at 4m16s. whisperx went on and finished it;
the result was discarded.

with diarization on, align runs at roughly 1.5x the audio duration, so an
hour-long episode needs ninety minutes. no ceiling is both safe and high
enough, and 255 is Bun's maximum anyway — "raise it" was never available.
0 disables it.
2026-08-24 21:22:52 +00:00

Transcribe

Officer's speech-to-text, talking to a self-hosted whisper.cpp server.

Transcribe does not run Whisper and ships no model. You point it at a whisper.cpp /inference server you already run and it forwards to it, tuned for one person talking into a phone: detect the spoken language, then transcribe faithfully in it — never translated, never guessed at in English when the audio is not.

What you get

  • POST /api/transcribe/transcribe — send an audio file, get back its text and the language Whisper detected. Two-pass under the hood (detect, then transcribe in that language) so a low-confidence guess never quietly defaults to English.
  • A file-browser task. Right-click an .mp3, .wav or .m4a and transcribe it without a model turn — the task is a plain script that calls this plugin's own route and files the result next to the original.
  • A skill, so an agent asked to transcribe something knows the route, the shape, and what to say when nothing is configured, without being told.

What you need

A whisper.cpp server you already run, reachable from this machine, answering POST /inference — the same container the platform used to talk to directly. Nothing else. No system packages, no host binaries; the sidecar reaches it with fetch.

Setup

PUT /api/transcribe/config
{ "url": "http://192.168.1.50:64201" }

Validated against the server before it is stored — a wrong URL is a 400 with the reason, not a saved value that fails on the first real transcription.

What this plugin deliberately does not have

  • No dashboard route, no dock tile. There is nothing to look at — this is reached through the file browser's task menu and by an agent that has read the skill, not through a screen. Shipping no web/ is a supported shape, not an oversight.
  • No streaming. One file in, one answer back. If you want a live microphone, that is a different feature built on top of this one, not something this plugin does today.
  • No translation. It transcribes in whatever language was spoken. Whisper's own translate mode is English-only, so honouring "translate into <language>" for anything else would mean silently handing back a rough English rendering of, say, Portuguese audio — worse than refusing.
S
Description
Speech to text for Officer — audio files transcribed through a Whisper server
Readme
132 KiB
Languages
TypeScript 100%