Skip to content

Push-to-talk voice input with streaming Whisper STT #7

Open

Description

@dakl

Enable speech-to-text with local Whisper model and push-to-talk hotkey. Text should stream into the input box in real-time (NOT appear as a blob after recording stops). Use whisper-node (already in deps). Process audio in chunks for streaming effect, show interim results. Visual indicator when recording (pulsing mic, red border). Allow model selection in settings (tiny/base/small/medium). Consider VAD to trim silence.

Activity

  1. m13v commented on Apr 5, 2026

    @m13v

    streaming transcription with local Whisper is the right approach but the chunked processing has a tricky tradeoff. shorter chunks (1-2 seconds) give faster visual feedback but Whisper's accuracy drops significantly on very short audio segments, you get partial words and misrecognitions. we settled on 3 second chunks with 0.5 seconds of overlap between chunks to avoid cutting words at boundaries. the overlap causes some duplicate text at chunk boundaries that you need to deduplicate. for the visual indicator, the pulsing mic is good but also show the interim text updating in real-time, even if it is not final. it gives users confidence that the system is working. VAD for silence trimming is worth it, Silero VAD is lightweight and accurate.

  2. m13v commented on Apr 5, 2026

    @m13v

    our on-device Whisper integration with the chunked processing, overlap deduplication, and VAD configuration: https://github.com/m13v/fazm/blob/main/Desktop/Sources/TranscriptionService.swift

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions