dsh-voice-input-plugin
キュレーションリスト掲載メンテナンス: 活発zhangbo-cn/dsh-voice-input-plugin
Composer マイク:タップ監視/長押し音声、Edge TTS 返信読み上げ、エコー一時停止
$ dsh plugin add dsh-voice-input-plugin6
スター
1
フォーク
TypeScript
言語
MIT
ライセンス
2026-08-15
作成日
2026-08-25
最終プッシュ
README
dsh-client-ui-voice-input
Composer voice control for DeepSeek Harness: a minimal linear mic button in the composer tool row that turns your speech into text — with a tap-to-monitor mode (continuous, live 逐字 streaming, send-anytime) and a hold-to-talk voice-chat mode (release to send, reply read aloud). Zero API key: recognition runs in the browser via the Web Speech API; reply reading uses the host's Edge TTS (/api/tts) with a browser speechSynthesis fallback.
dsh-plugin · TypeScript · React
Features
- Tap to monitor: click the mic, speak — text streams into the draft live (逐字输入), the mic keeps listening even in silence, and you can send or keep adding speech anytime. Tap again to stop.
- Auto-send on silence (optional): with
autoSendOnSilenceMsconfigured, tap-to-monitor becomes hands-free — once you stop talking for the configured window, the message sends itself ("tap, speak, walk away"). Continued speech cancels the pending send. - Hold to talk: press-and-hold to record a voice-chat message, release to send it; the assistant's reply is read aloud — host Edge neural TTS (
/api/tts) first, browserspeechSynthesisas fallback. - Continuous across silences: each recognition segment auto-restarts so monitoring never drops.
- Respects the composer: speech appends to the draft (base preserved); a send clears the draft cleanly without re-filling old text; monitoring continues after a send on a fresh recognizer.
- DeepSeek-blue listening state: the icon pulses in DeepSeek brand blue while listening; borderless linear icon, no clutter.
- Configurable: recognition language (default
zh-CN) and interim results.
Install
The package is a dsh.bundle installable, published on npm as @zhangbo-cn/dsh-client-ui-voice-input. One command:
dsh plugin add @zhangbo-cn/dsh-client-ui-voice-input
0.1.1+ required.
0.1.0registered the browser bundle under the wrong ModuleLoader id (@deepseek-ai/...), so Harness failed withloaded without registering "@zhangbo-cn/dsh-client-ui-voice-input". Upgrade / reinstall, then hard-refresh the Web UI.
(It also installs from the GitHub repo via dsh plugin add github:Zhangbo-cn/dsh-voice-input-plugin.)
If you develop from a DeepSeek Harness checkout, you can mount it directly in the web-app browser roster (packages/bundle/web-app/cordis.patch.yml):
- id: ui-voice-input
name: '@zhangbo-cn/dsh-client-ui-voice-input'
For reliable reply reading, also mount the host Edge TTS capability (@deepseek-ai/dsh-tts-edge), which registers /api/tts:
- id: tts-edge
name: '@deepseek-ai/dsh-tts-edge'
Without it, reply reading still works but falls back to the browser's speechSynthesis (less natural, occasionally silent on Chrome after an idle gap).
Then build the client bundle with the repo's tsdown preset:
pnpm --filter @zhangbo-cn/dsh-client-ui-voice-input run bundle
Usage
After refreshing the Web UI, the composer tool row shows a linear mic button.
Voice input (tap)
- Click the mic → the icon turns DeepSeek blue and pulses (listening).
- Speak → text appears in the input box live, word by word.
- Send anytime with the composer's send button; keep talking to add more.
- Click the mic again to stop monitoring.
- With
autoSendOnSilenceMsset, stopping speech for that long auto-sends the message — the mic stops listening, so you don't need the extra tap.
Voice chat (hold)
- Press-and-hold the mic (longer than ~250 ms) and speak.
- Release → your message is sent.
- The assistant's reply is read aloud automatically.
Reply reading after any send
A send that follows mic use (within 5 minutes) — hold or tap-monitoring + the composer send button — arms reply reading for the next assistant reply. Typed sends without recent mic use do not trigger it.
Configuration
- id: ui-voice-input
name: '@zhangbo-cn/dsh-client-ui-voice-input'
config:
language: 'zh-CN' # Web Speech recognition language tag
interimResults: true # stream live interim transcript into the draft
autoSendOnSilenceMs: 0 # auto-submit after this many ms of silence following committed speech (0 = off)
How it works
MicButton (conversation.input.left)
├─ tap → beginMonitoring()
│ → SpeechRecognition (continuous:false, interimResults) // reliable results
│ → onresult → TranscriptAccumulator → inputActions.setDraft(base + transcript)
│ → onend (silence) → auto-restart (keep monitoring) // continuous
│ → onend + committed speech + autoSendOnSilenceMs>0 → silence window → auto-submit
│ → tap again → stop
└─ hold → submitChat()
→ on release: stop + inputActions.setDraft(text) + inputActions.submit()
→ reply streams → complete sentences read aloud WHILE the model
generates (sentence-chunked queue)
→ tail (last incomplete sentence) read on finalize
→ each segment → fetch /api/tts (host Edge neural MP3)
→ play via gesture-unlocked AudioContext (else <audio> element)
→ fallback: browser speechSynthesis
UI・体験 の他のプラグイン
dsh-tui
by ccch1mneyyy
Claude Code 風の全画面 TUI プラグイン。鯨トップバー、リアルタイム状態行、思考ストリーミング、Esc 二連打の巻き戻し、コンテキスト進捗バーと TPS メーター搭載。npm で一発インストール
baoyu-design
by jimliu
Claude Designをローカルで動かすAgent Skillです。claude.ai/designを使わず、UIモック、プロトタイプ、スライド、ワイヤーフレームを自己完結型HTMLとして生成します。
dsh-better-sidebar
by omdsh-dev
ファイル表示・編集、ターミナル、Git、サブエージェントのページを内蔵し、サードパーティによる新規サイドバーページの登録にも対応する拡張可能なサイドバー基盤
dsh-claude-style
by nwflower
DeepSeek HarnessのWeb GUIをClaude Code Desktop風に整えるテーマ。見慣れた配色とデスクトップ感のある操作環境を提供します。
