deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:TalkingRainTuT/dsh-VoiceChat
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
A realtime voice chat plugin that makes DeepSeek Harness agents speak out loud (dynamic Cordis plugin).
Every assistant message automatically: translate on demand → synthesize with the selected TTS → auto-play, with a 🔊/⏸/▶ button (play / pause / resume / replay) at the end of the message.
voiceLanguage ≠ aiLanguage; otherwise the original text is synthesized directlybaseUrl / model / apiKey (DeepSeek by default; switch to OpenAI by changing baseUrl/model)maxChunk and stitches the audio together# from a local checkout
dsh plugin --profile web add "file:/path/to/dsh-VoiceChat"
# or, once published to npm
dsh plugin --profile web add dsh-VoiceChat
dsh-VoiceChat/
├── speak.mjs # executor: translate + pluggable TTS + chunk/stitch
├── config.json # configuration
├── config.example.json # configuration example
├── package.json # dependencies (edge-tts needs ws / https-proxy-agent)
├── LICENSE # MIT
├── played.json # already-auto-played list (runtime artifact)
├── wav/ # generated audio (runtime artifact)
├── lib/
│ ├── host.mjs # plugin Host half source
│ ├── client.mjs # plugin Client half source
│ └── edge-tts.mjs # edge-tts protocol implementation (from dsh-voice, MIT)
└── .gitignore
~/.dsh) as the .dsh-VoiceChat folder
(the Host locates it via the workspace-relative path .dsh-VoiceChat, portable across machines)npm install (or create a node_modules junction if deps already exist locally)config.example.json → config.json, fill in keys and provider{
"translator": { // OpenAI-compatible translation API
"apiKey": "sk-...", // DeepSeek or OpenAI key
"baseUrl": "https://api.deepseek.com", // or https://api.openai.com/v1
"model": "deepseek-chat", // or gpt-4o-mini
"targetLanguage": "ja"
},
"aiLanguage": "zh", // language the AI replies in
"voiceLanguage": "ja", // voice target language (configurable; skips translation when equal to aiLanguage)
"ttsProvider": "opentts", // voice generation model
"nodePath": "", // node executable (auto-resolved when empty)
"autoStart": { "enabled": true, "servers": [ { "name": "...", "command": "...", "args": [...], "cwd": "...", "healthUrl": "..." } ] }
}
| provider | type | description | required config |
|---|---|---|---|
style-bert-vits2 |
local | server_fastapi /voice (default) |
url, modelId, speakerId |
gpt-sovits |
local | POST /tts (api_v2) |
url, refAudioPath |
edge-tts |
cloud free | Microsoft Edge TTS | voice (e.g. ja-JP-NanamiNeural) |
openai |
cloud/local | /audio/speech, OpenAI-protocol compatible local servers |
apiKey, voice |
dashscope |
cloud (Aliyun) | Tongyi sambert text2audio | apiKey, voice |
qwen-tts |
cloud (Aliyun) | Tongyi qwen-tts | apiKey, voice |
elevenlabs |
cloud | ElevenLabs | apiKey, voiceId |
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。