DSH Hub

PerryLink/dsh-talk

dsh-talk

UIWeb UI13 GitHub stars· updated 2026-09-25

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

dsh-talk DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-talk.svg)](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 dsh1024 once, then dsh1024 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

SurfaceStatus
HarnessDeepSeek 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
BrowserWeb Speech + MediaRecorder (Chrome/Edge best); host transcription/TTS engines for the rest

What you get

dsh-talk closes the voice loop in both directions:

  • speak tool — the agent speaks its replies aloud. TTS engines: the browser voice, edge-tts (network neural voices), or piper (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 talk Remote 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

…

Related plugins