๐Ÿ“ฆ @goodandready/dsh-voice

August 31, 2026 ยท View on GitHub

Zero-Latency Streaming Dictation & Multi-Provider Voice Input for DeepSeek Harness

npm version license DSH Plugin Node version

All Author Projects

๐Ÿ‡ฌ๐Ÿ‡ง English โ€ข ๐Ÿ‡ท๐Ÿ‡บ ะ ัƒััะบะธะน โ€ข ๐Ÿ‡จ๐Ÿ‡ณ ไธญๆ–‡่ฏดๆ˜Ž


โšก Overview

dsh-voice brings voice superpowers to the DeepSeek Harness Web UI. Whether you need hands-free real-time streaming dictation segmented on natural breath pauses or crisp voice notes with keyboard/mouse Push-to-Talk gestures, dsh-voice ensures your audio is never lost thanks to automatic multi-provider fallback chains.

graph LR
    subgraph Client [Browser Web UI]
        Mic[๐ŸŽ™๏ธ Dictation Mic] -->|VAD Cut on Pause| Stream[Audio Chunks]
        Wave[๐ŸŒŠ Voice Message] -->|Hold / Release| PTT[Push-to-Talk]
    end

    subgraph Host [DSH Host Backend]
        Stream --> FFMPEG[ffmpeg 16kHz Transcoder]
        PTT --> FFMPEG
        FFMPEG --> Chain{Fallback Chain}
        
        Chain -->|1st Priority| P1[Deepgram / Nova-2]
        Chain -.->|On Rate Limit / 429| P2[Groq / Whisper Turbo]
        Chain -.->|On Failure| P3[Local whisper.cpp / Offline]
    end

    subgraph Output [Target]
        P1 --> Composer[๐Ÿ’ฌ Web Composer / Chat]
        P2 --> Composer
        P3 --> Composer
    end

    style Client fill:#1e1e2e,stroke:#89b4fa,stroke-width:2px,color:#cdd6f4
    style Host fill:#181825,stroke:#cba6f7,stroke-width:2px,color:#cdd6f4
    style Output fill:#11111b,stroke:#a6e3a1,stroke-width:2px,color:#cdd6f4

โœจ Key Features

  • ๐ŸŽ™๏ธ Streaming Dictation with VAD: Speech is automatically sliced at natural pauses (vadSilenceMs, default 700ms) and typed into the composer in real time.
  • ๐ŸŒŠ Voice Notes with Cancel Window: Record your thought and have it automatically dispatched to the agent after a safety countdown (autoSendMs, default 4000ms).
  • ๐ŸŽฎ Tactile Push-to-Talk:
    • Mouse: Hold the wave button โ€” releasing sends the message; dragging pointer away discards.
    • Keyboard: Hold Ctrl (or custom hotkey) for hands-free speaking; press Esc to cancel.
  • โšก Zero-Latency In-Browser Captions (browser): Chrome Web Speech API recognition runs 100% locally with live floating captions as you speak.
  • ๐Ÿ›ก๏ธ Ironclad Multi-Provider Fallbacks: If your primary cloud provider runs out of credits or hits a 429 rate limit, requests seamlessly fail over down the chain.
  • ๐Ÿ”’ Zero API Key Leakage: Keys are resolved on the host via ctx.credentials (credentialRef) and never transmitted to browser clients.
  • ๐Ÿ–ฅ๏ธ Offline Local Whisper Server: Automatically boots and manages whisper.cpp (whisper-server) with on-the-fly ffmpeg transcode.

๐ŸŽฎ Four Ways to Speak

ModeGesture / TriggerBehavior
DictationClick ๐ŸŽ™๏ธ MicSpeech is sliced on pauses (vadSilenceMs) and typed live into composer
Voice MessageClick ๐ŸŒŠ WaveRecords until stopped, then sends after cancel window (autoSendMs)
Mouse PTTHold ๐ŸŒŠ WaveRecords while held; release sends message, drag off button to discard
Keyboard PTTHold CtrlHands-free recording; release sends message, press Esc to discard

Tip

You can customize the keyboard modifier in settings (hotkey: Control, Alt, Shift, or any KeyboardEvent.code).


๐Ÿ› ๏ธ Supported Providers Matrix

Provider KeyService BackendDefault ModelCredential RefFeatures & Notes
browserWeb Speech APINative BrowserNoneZero latency, floating live captions in Chrome
deepgramDeepgram APInova-2DEEPGRAM_API_KEYUltra-fast cloud transcription
groqGroq Whisperwhisper-large-v3-turboGROQ_API_KEYNear-instant inference speed
hfHuggingFace Inferenceopenai/whisper-large-v3HF_TOKENHigh-accuracy open Whisper
local-whisperLocal whisper.cppServer definedNone100% private, offline, no internet needed

๐Ÿš€ Ready-Made Presets (Plug & Play)

Just specify the name in your fallback chain and add the corresponding API key:

  • openai (whisper-1) โ†’ OPENAI_API_KEY
  • siliconflow (SenseVoiceSmall) โ†’ SILICONFLOW_API_KEY
  • mistral (voxtral-mini-latest) โ†’ MISTRAL_API_KEY
  • openrouter (google/gemini-2.5-flash) โ†’ OPENROUTER_API_KEY
  • deepinfra (whisper-large-v3-turbo) โ†’ DEEPINFRA_API_KEY
  • fireworks (whisper-v3-turbo) โ†’ FIREWORKS_API_KEY

๐Ÿ“ฆ Quick Installation

dsh plugin --profile web add @goodandready/dsh-voice

Important

Restart DSH Web UI after installation (systemctl --user restart dsh-web) and refresh your browser tab.


โš™๏ธ Configuration

Open Settings โ†’ Plugins โ†’ Plugin settings โ†’ Voice in the Web UI:

- id: dsh-voice
  config:
    dictation:
      language: ru
      vadSilenceMs: 700
      chain:
        - provider: deepgram
        - provider: groq
        - provider: local-whisper
    message:
      language: ru
      autoSendMs: 4000
      chain:
        - provider: openai
        - provider: local-whisper
    hotkey: Control
    autoStart: true
    whisperModel: /models/ggml-medium-q8_0.bin

๐Ÿค– Agent Tool & HTTP API

Agent Tool (transcribe_audio)

Registers transcribe_audio(file_path, language?) in ctx.tools, allowing agents to analyze audio files, interview recordings, and voice notes directly from disk.

Internal HTTP Endpoints

  • POST /dsh-voice/transcribe โ€” { dataBase64, mimeType, mode } โ†’ { ok, text, provider, tookMs }
  • GET /dsh-voice/status โ€” Returns whisper daemon status and active fallback chains.

๐Ÿ“„ License

MIT ยฉ GooDAnDReaDY