PandaPolo/dsh-voice-call

accepted calls synthesize and play locally via CrispASR + Qwen3-TTS (9 speakers, 2 Chinese dialects), rejected calls return the decision to the agent.

dsh-voice-call gives a DeepSeek Harness agent a voice it owns. It is local-first and offline-capable: synthesis runs on a local CrispASR + Qwen3-TTS CustomVoice engine with nine baked speakers (two of them Chinese dialects), and audio is plain files under ~/.dsh/voice/. Nothing plays without consent -- the agent calls offer_call when it decides something is worth saying aloud, and the human answers by accepting, rejecting, or deferring on a dedicated call card. Three tools are exposed: offer_call (ring the human), speak (narrate one line on a background job with local playback), and transcribe (speech -> user message, deliverable to another session via dsh-crosstalk). A /voice command exposes status, the narration toggle, and speak <text>. The settings card provisions the engine and models in one click, with resumable segmented downloads, origin racing and a manual-drop escape hatch.

Notifications & Integrations ★ 3 updated 2026-08-17
View on GitHub ↗

Install

dsh plugin --profile web add dsh-voice-call

The README's current path is the DeepSeek Harness desktop app: open the Plugins page under Settings, install from the plugin market (search dsh-voice-call), then let it take effect on the same page -- there is no hot reload, so a plugin reload or an app restart may be needed; configure it on the plugin's own settings page on first use. The README states the old CLI flow (npm install -g @deepseek-ai/dsh, then dsh plugin --profile web add dsh-voice-call) is retired along with the global CLI. The npm package dsh-voice-call 0.3.9 exists (registry re-verified 2026-09-30; repository field back-links to github.com/PandaPolo/dsh-voice-call, MIT).

Compatibility

DeepSeek Harness 0.1.7-rc.2 / 0.2.0-rc.1 / 0.2.0-rc.2 (peerDependencies declares ^0.1.7-rc.2 || ^0.2.0-rc.1). The desktop app (@deepseek-ai/dsh-desktop, Electron 44) bundles 0.2.0-rc.2. Windows 10/11, macOS and Linux all run in CI (289 tests); recording is currently macOS-only. The local engine runs under danger-full-access, which the README flags as a trust boundary to assess. Keep durableEvents at false.

Details

Recent updates

The README documents one-click runtime provisioning, the dedicated call card, eleven locally-synthesized ringtones with auditioning, disk-usage cleanup scoped to files the plugin created, and the 0.3.7 off-by-default 'ring for the question you left' feature (patience 5 minutes by default). It also records that from dsh 0.2.0-rc.1 peerDependencies is a load-or-skip decision (test/harness-compat.test.ts runs the real manifest against the host's predicate) and that the desktop app's dsh-app://app request path was audited item by item.

FAQ

How do I install dsh-voice-call?
Per the README: install it from the plugin market in the DeepSeek Harness desktop app (Plugins page under Settings), then reload the plugin or restart the app since it has no hot reload; configure it on its own settings page. The old global-CLI install flow is retired.
Which harness versions are supported?
DSH 0.1.7-rc.2, 0.2.0-rc.1 and 0.2.0-rc.2 -- the peer range is ^0.1.7-rc.2 || ^0.2.0-rc.1, and 0.2.0-rc.2 is the runtime the desktop app ships with.
Does it ever speak without being asked?
No. The README states nothing is played without consent: the agent offers a call, the human accepts or rejects, and a rejected or deferred call returns the decision to the agent (which learns to write the words down instead).

Alternatives

Jesse-njx/dsh-voice · 3274375092/dsh-voice · stardustlc666/dsh-voice

More plugins in Notifications & Integrations

Browse more in Notifications & Integrations

Guides for Notifications & Integrations plugins