PerryLink/dsh-talk
dsh-talk
Voice-first session loop for DeepSeek Harness: a composer microphone button with browser/local speech-to-text (Web Speech, FunASR, whisper.cpp), a speak tool for text-to-speech replies (browser, edge-tts, piper), event announcements with mute, and speak-to-interrupt.
Install
npx @deepseek-ai/dsh plugin --profile web add "github:PerryLink/dsh-talk#main"Restart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-talk)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from PerryLink/dsh-talk, cleaned of badges and images.
🎙️ dsh-talk
- 1024 store channel:
npm i -g dsh1024once, thendsh1024 plugin --profile web add dsh-talk(counts toward the deepseek1024.com install ranking).
Voice-first session loop for DeepSeek Harness: talk to it, hear it answer.
Press the mic, speak, and the reply is spoken back — with speak-to-interrupt.
English · 简体中文 · Español · Português · हिन्दी
⭐ 如果它帮到了你
这个插件是 DSH 插件家族的一员(40+ 个,全部 Apache-2.0)。如果你在用,给个 star —— 它不会解锁任何功能,但会让下一个人在搜索里更容易找到它。
English: part of a 40+ plugin family for DeepSeek Harness. If it is useful, a star helps the next person find it — nothing is gated behind it.
Compatibility
| Surface | Status |
|---|---|
| Harness | DeepSeek Harness dsh-v0.1.7-rc.2 (adapted 2026-09-24: third peer clause + engines.dsh + manifestVersion: 1, and the monthly Compat workflow anchored to that line); full gate chain green on 2026-09-24 (dual typecheck rulers, 86 tests, build, self-contained, artifacts, pack). npm dev/test line 0.1.7-rc.2, peers `>=0.1.2-rc.1 <0.2.0 |
| Node | ^22.19.0 || >=24.0.0 |
| Browser | Web Speech + MediaRecorder (Chrome/Edge best); host transcription/TTS engines for the rest |
What you get
dsh-talk closes the voice loop in both directions:
speaktool — the agent speaks its replies aloud. TTS engines: the browser voice,edge-tts(network neural voices), orpiper(local). Audio plays in the browser; on hosts that can carry it, the session log records the sanitized utterance (see Security boundaries).- Composer mic button — press it, speak, and the transcription lands in the input box (or submits directly). STT engines: the browser's Web Speech (interim results included), a FunASR HTTP server, or local
whisper.cpp. - Speak-to-interrupt — starting to talk stops whatever is playing (client → host over the
talkRemote namespace). - Event announcements — turn completion, pending approvals (waterfall-safe: never blocks the gate), and errors, with a mute switch and configurable phrases.
- Settings tab — engine/language selects and announcement switches, saved as append-only profile-patch operations with backups.
browser host
🎙 press ──▶ interrupt ─────────────────▶ talk/interrupt
record (MediaRecorder / Web Speech)
transcribe (browser) or talk/transcribe ─▶ FunASR / whisper.cpp
setDraft(text) or submit() ◀── talk:speech projection ── speak tool / announcements
▶ play audio (talk/audio or speechSynthesis)
Quick start
# 1. install the bundle into your profile
dsh plugin --profile web add "github:PerryLink/dsh-talk#main"
# or from npm (published releases)
dsh plugin --profile web add dsh-talk
# 2. restart and verify the row
dsh --profile web --dump-config | grep -A2 'id: talk'
Then press the microphone next to the composer and talk; ask the agent to speak its reply:
> Say "hello" with the speak tool.
Install & uninstall
…
