ppy-web/dsh-plugin-xiaomi-mimo-tts
ppy-web/dsh-plugin-xiaomi-mimo-tts为 DSH 提供小米 MiMo、豆包和浏览器本地语音朗读,支持自动播报、自定义音色与可选 UI 音效。
在 DeepSeek Harness 网页 UI 中朗读智能体回复,采用服务商回退链(OpenAI、ElevenLabs、Google、Azure、Groq、Deepgram、OpenRouter、Edge、Piper、eSpeak),某个服务商失败或被限流时自动切换到下一个,而不是直接静音。
Multi-Provider Text-to-Speech Voice Synthesis with Local Neural Engines, Real-time Streaming, IT Dictionary & Messenger Integration for DeepSeek Harness
🇬🇧 English • 🇷🇺 Русский • 🇨🇳 中文说明
⭐ If you like this plugin, please star it on GitHub — it shows me that the plugin is useful to you and motivates me to keep developing it. 🐛 If you find a bug or would like to request a feature, open a GitHub issue in any language — I will review your proposal and implement useful suggestions in a future plugin version.
`dsh-tts` provides robust, lifelike spoken voice synthesis for assistant replies in the DeepSeek Harness Web UI. When Speak agent replies is enabled, each finished assistant turn or real-time streaming chunk is synthesized on the host and streamed directly to the browser.
API keys never reach client browsers: synthesis is executed entirely on the host backend across independent multi-provider fallback chains, including local system engines (Edge TTS, Piper, eSpeak). Kokoro-82M and F5-TTS weights can be downloaded for future runtime support, but neural inference is not bundled in this package — those providers fail honestly and the chain continues.
graph LR
subgraph Input [Assistant Message]
Reply[💬 Agent Reply Text] --> Scrub[Smart Text Scrubbing & IT Dictionary]
end
subgraph Stream [Low-Latency Streaming]
Scrub --> SSE[SSE /dsh-tts/stream]
SSE --> Player[Web Audio & HTML Audio Player]
end
subgraph Cache [Performance Layer]
Scrub --> LRU{Disk LRU Cache}
LRU -->|Cache Hit| Play[Immediate Audio Playback]
end
subgraph Fallback [TTS Provider Fallback Chain]
LRU -->|Cache Miss| Chain{Active Chain}
Chain -->|Online / Local| P1[Edge TTS / Piper / eSpeak]
Chain -.->|Cloud Neural| P2[OpenAI / ElevenLabs / Google / Azure / Groq]
Chain -.->|OpenAI-compatible| P3[SiliconFlow / DeepInfra / Fireworks / OpenRouter]
Chain -.->|Other| P4[MiMo / MiniMax / Custom]
end
subgraph Output [Delivery & Integrations]
P1 --> Store[Save to Cache]
P2 --> Store
P3 --> Store
P4 --> Store
Store --> Play
Store --> Msg[Telegram / Discord via dsh-messenger-gateway]
end
style Input fill:#1e1e2e,stroke:#89b4fa,stroke-width:2px,color:#cdd6f4
style Stream fill:#181825,stroke:#89dceb,stroke-width:2px,color:#cdd6f4
style Cache fill:#181825,stroke:#cba6f7,stroke-width:2px,color:#cdd6f4
style Fallback fill:#11111b,stroke:#a6e3a1,stroke-width:2px,color:#cdd6f4
style Output fill:#181825,stroke:#f38ba8,stroke-width:2px,color:#cdd6f4edge-tts CLI)./dsh-tts/stream route delivering synthesized chunks to connected browsers instantly.@goodandready/dsh-voice)@goodandready/dsh-voice is not present, settings controls are disabled with an explicit instruction banner (dsh plugin --profile web add @goodandready/dsh-voice).SQL $\rightarrow$ "sequel"Nginx $\rightarrow$ "engine-x"Kubernetes / K8s $\rightarrow$ "coo-ber-net-ees" / "kates"Docker $\rightarrow$ "docker", API $\rightarrow$ "A-P-I", JSON $\rightarrow$ "jason", YAML $\rightarrow$ "yaml"GUI, CLI, CI/CD, PR, Regex, OAuth, HTTP, HTTPS, CPU, GPU, RAMcoder, reviewer, planner, tester).autoDetectSubagent enabled, incoming turns automatically match subagents by message metadata (subagent, agent, author, name) and dynamically apply voice, rate, and SSML style presets..wav / .mp3) via exportAudioClip(text).⤓) integrated directly into the input dock speaker control and recent utterances dropdown list.@goodandready/dsh-messenger-gateway)POST /dsh-tts/speak.en) and Chinese (zh) UI and speech template dictionaries.@goodandready/dsh-russian-lang through Gitea issue tracking.。!?), abbreviations, file extensions, and IP/version numbers.Provider Key · Service Backend · Default Model · Default Voice · Credential Ref · Features & Notes kokoro · Local Kokoro-82M ONNX · hexgrad/Kokoro-82M · af_bella · *None* · Weights downloadable; ONNX inference not bundled — fails honestly f5 · Local F5-TTS GPU Daemon · F5-TTS · Default · *None* · Daemon ping only; GPU inference not bundled — fails honestly elevenlabs · ElevenLabs API · eleven_multilingual_v2 · Rachel · ELEVENLABS_API_KEY · Ultra-realistic, emotional nuance openai · OpenAI Audio · gpt-4o-mini-tts / tts-1 · alloy · OPENAI_API_KEY · High-quality industry standard edge · Microsoft Edge Online · en-US-AriaNeural · en-US-AriaNeural · *None* · Free, high-fidelity neural TTS without API keys siliconflow · SiliconFlow CosyVoice · FunAudioLLM/CosyVoice2-0.5B · Default · SILICONFLOW_API_KEY · State-of-the-art CosyVoice2 neural engine deepinfra · DeepInfra Kokoro · hexgrad/Kokoro-82M · Default · DEEPINFRA_API_KEY · Fast open-weights Kokoro synthesis fireworks · Fireworks AI · kokoro · Default · FIREWORKS_API_KEY · Ultra-low latency Kokoro inference minimax · MiniMax Speech · speech-01-turbo · Default · MINIMAX_API_KEY · High-expressiveness neural voice mimo · Xiaomi MiMo Audio · mimo-v2.5-tts · Default · MIMO_API_KEY · Low-latency streaming TTS google · Google Cloud TTS · gemini-2.5-flash-preview-tts · Language default · GEMINI_API_KEY · Multilingual Google Gemini voice synthesis azure · Azure Cognitive Speech · en-US-JennyNeural · Region default · AZURE_SPEECH_KEY · Enterprise neural synthesis deepgram · Deepgram Aura · aura-asteria-en · asteria · DEEPGRAM_API_KEY · Ultra-low latency voice output groq · Groq TTS · playai-tts · default · GROQ_API_KEY · Near-instant inference speed openrouter · OpenRouter Audio · openai/gpt-4o-mini-tts · alloy · OPENROUTER_API_KEY · Unified router access custom · Custom OpenAI-compatible · Configurable · Configurable · CUSTOM_TTS_API_KEY · Any /v1/audio/speech endpoint piper · Local Piper ONNX · Local ONNX weights · Model default · *None* · 100% offline neural engine espeak · Local eSpeak NG · System synth · ru / en · *None* · 100% offline lightweight fallback
Before text reaches speech synthesizers, dsh-tts intelligently sanitizes and filters the message so the assistant doesn't read out syntax noise:
*smiles*), narrate quotes only, and apply custom regex removal.dsh plugin --profile web add @goodandready/dsh-tts[!IMPORTANT]
Restart DSH Web UI after installation (systemctl --user restart dsh-web) and refresh your browser tab.dsh-tts:
speakReplies: true
enableLocalEngines: true
kokoroEnabled: true
streamingEnabled: true
enableItDictionary: true
voiceDuplexEnabled: true
vadBargeIn: true
messengerTtsEnabled: true
cache: true
cacheMaxMb: 150
autoDetect: true
chain:
- provider: edge
- provider: espeak
voice: ru-RU-SvetlanaNeural
- provider: openai
model: tts-1
voice: alloy
roles:
coder:
provider: openai
voice: onyx
reviewer:
provider: edge
voice: ru-RU-DmitryNeuralThe plugin settings card (Settings → Plugins → Plugin settings) exposes every user-facing schema field, including an Advanced block for maxChars, sentenceChars, timeoutMs, maxQueue, openaiBaseUrl, mimoBaseUrl, mimoFormat, and minimaxBin.
Provider API keys are never stored in plugin settings. Paste them in the chain editor; values go to the DSH credential store via PUT /dsh-tts/credential.
Config-only (not in the card): *KeyEnv fields (openaiKeyEnv, elevenlabsKeyEnv, …). They only rename the credential slot the plugin looks up. Change them in the profile settings if you must rebind a key name; the defaults match the usual environment variable names.
GET /dsh-tts/stream — Real-time Server-Sent Events (SSE) audio streaming.POST /dsh-tts/speak — { text, voice?, model? } → Returns synthesized audio.POST /dsh-tts/preview — { provider, model, voice, text? } → Test voice playback in UI.GET /dsh-tts/models/status — Reports Kokoro/F5 weight installation states (download only; inference not bundled).POST /dsh-tts/models/install — { engine: 'kokoro' | 'f5' } → Starts HuggingFace model download.DELETE /dsh-tts/models/delete — { engine: 'kokoro' | 'f5' } → Removes local model files.GET /dsh-tts/integrations — Status of sibling plugins (dsh-voice, dsh-messenger-gateway).GET /dsh-tts/status — Returns active chain state, cache statistics, and engine readiness.DELETE /dsh-tts/cache — Clears cached audio files.GET /dsh-tts/config & PUT /dsh-tts/config — Retrieve and update settings revision.GET /dsh-tts/stats & DELETE /dsh-tts/stats — Performance statistics and metrics reset.PUT /dsh-tts/credential & DELETE /dsh-tts/credential — Securely store or remove cloud provider API keys.MIT © GooDAnDReaDY