Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Go device SDK: Whisper transcriber keeps buffering and transcribing audio appended after Stop()

Open Beginner friendly
#22,770 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@apoorvdarshan is already working on this.

Since Oct 20, 2026.

  • #22771 by @apoorvdarshan — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
84/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
go
Domain
backend

Research direction

Start with sdks/device/go/omidevice/stt/stt.go, especially the whisperBatch methods around Stop() and AppendPCM. Read how the final buffer is flushed and compare the stopped behavior described for the WebSocket engines. Done when appending after Stop() returns an error and does not buffer audio, run Whisper, or invoke onTranscript.

Written by the indexing model from the issue text.

Description

Bug Description

In the Go device SDK (sdks/device/go/omidevice/stt/stt.go), NewWhisper returns a whisperBatch that does not track whether Stop() has been called:

https://github.com/BasedHardware/omi/blob/31a07230bb2f7cdbb44bd03f952335f9692faf8d/sdks/device/go/omidevice/stt/stt.go#L271-L310

Stop() flushes any remaining buffered bytes and sets w.buf = nil, but leaves whisperBatch open to subsequent AppendPCM calls. If late audio frames (for example an in-flight BLE packet) arrive at AppendPCM after Stop() has returned:

  • AppendPCM buffers the audio into w.buf again.
  • Once w.buf reaches w.batch (160,000 bytes, 5 seconds of 16 kHz PCM16), AppendPCM invokes the Whisper runner and calls onTranscript for a session that has already been stopped.
  • A repeated Stop() flushes whatever new audio accumulated after the first Stop().

By contrast, the Go SDK's WebSocket engines (Deepgram, Parakeet) close the underlying socket in Stop() so subsequent AppendPCM calls fail with an error, and the Dart, TypeScript, and React Native SDKs' Whisper transcribers all guard their append paths once stopped.

Expected Behavior

Once whisperBatch.Stop() has been called, it should mark the transcriber as stopped before flushing the final buffer, and AppendPCM should refuse audio appended after Stop() with an error instead of buffering, running Whisper, or invoking onTranscript.

Dominant language
Python
Stars
13.8k
Forks
2.6k
Avg merge
5h 14m
Merged PRs (30d)
626

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from BasedHardware/omi

All issues in BasedHardware/omi

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.