dsh-voice
Voice for DeepSeek Harness — give text-only DeepSeek ears and a mouth: browser-native speech input (STT) + read-aloud (TTS), plus Whisper/TTS agent tools.
AI Analysis
核心用途是为 DSH 引入语音交互能力。适合需要语音输入或希望模型能“开口说话”的用户,使用麦克风需配置 Whisper 兼容端点。
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:zhuiyueya/dsh-voiceREADME
Read the full README ↗⚙️ Configuration
The 🎤 mic button needs voice.stt.apiBase (the browser records audio and sends it to the host's Whisper-compatible backend). The 🔊 read-aloud needs nothing (browser speechSynthesis). To customize read-aloud language/rate/pitch, edit the constants at the top of lib/client.js (TTS_LANG, TTS_RATE, TTS_PITCH).
settings.yaml:
voice:
stt: # mic button + voice_transcribe tool
enabled: true
apiBase: "" # REQUIRED for the mic. Examples:
# SiliconFlow: https://api.siliconflow.cn/v1
# local whisper.cpp: http://127.0.0.1:8080/v1
apiKeyEnv: VOICE_STT_API_KEY
model: whisper-1
language: "" # zh / en / ... ; empty = auto-detect
tts: # voice_speak tool
enabled: true
apiBase: "" # empty = https://api.openai.com/v1
apiKeyEnv: VOICE_TTS_API_KEY
model: tts-1
voice: alloy # alloy/echo/fable/onyx/nova/shimmer, or a local voice id
format: mp3
Why the mic needs a backend: Chrome's built-in
SpeechRecognitionuploads audio to Google, which is unreachable in some regions (you'd see识别出错:network). dsh-voice records withMediaRecorderand transcribes through your Whisper-compatible backend instead. Two free, keyless options:
- SiliconFlow (China-friendly, free tier) —
apiBase: https://api.siliconflow.cn/v1, modelFunAudioLLM/SenseVoiceSmallorwhisper-1.- Local whisper.cpp — fully offline,
apiBase: http://127.0.0.1:8080/v1(no key).