dsh-whale-tts: Give DSH Whale a Voice

Introduction

In DSH, agent replies are primarily text-based. If you want it to speak, the common approach is to hardcode a logic block for “synthesize audio, upload, and send message” inside a plugin. This results in playback, sending, and upload logic all squeezed into a single plugin, requiring a complete redo if you switch frontends.

The cilis/dsh-whale-tts introduced below handles this cleanly: it is only responsible for synthesizing text into local audio files and returning the path, leaving playback, sending, and upload entirely to the caller. The maintainer is cilis, the repository is on GitHub, the license is MIT, and it falls under the “Fun Outfit” category in the community directory.

What is this

One-sentence positioning: A Text-to-Speech (TTS) aggregation plugin for DeepSeek Harness, giving the assistant role its own voice. It synthesizes text into local audio and returns absolute paths, relative paths, and filenames.

The pain point it solves is: The main workflow requires pronunciation, but the plugin should not overstep by managing playback. The boundary between synthesis and delivery is clearly defined.

Core Features

Three tools with single responsibilities:

  • tts_synthesize: Converts text to speech, returning absolute path, relative path, and filename.
  • tts_list_voices: Lists provider capabilities and saved voice profiles.
  • tts_status: Self-checks the provider, key, cache, and output directory.

Voice Design and Cloning: Writing a description can generate 2-5 candidates for auditioning, then solidify one; or upload a wav/mp3 reference audio under 10MB for cloning. Both design and cloning preserve the tone and speed in the description as style instructions.

Voice Profiles: Divided into Preset, Cloned, and Designed types, up to 50, manually switchable; deleting a profile also deletes the reference audio.

Settings Card: Visual operations on the DSH plugin page, including audition, generating candidates, managing profiles, entering keys, and changing output settings; the interface is bilingual in English and Chinese.

Playback: Each final reply of the DSH assistant has a play button on the action row, using the current voice to read or pause. “Auto-play new replies” in the settings card is disabled by default; once enabled, it only reads the last paragraph of a single turn. You can also set to skip code blocks, segment length, and speed; inline code is read word-by-word, fenced code blocks are skipped by default.

Backup and Restore: Export profiles, samples, and candidates into a JSON (without keys); import supports merging or replacing, with an automatic backup of the current state before import.

Key Security: Only saves the reference name of DSH credentials; tool results, logs, and frontend will not show the key values; only allows clearing credentials written by this plugin itself.

Offline Fallback: The main provider is currently only MiMo; when MiMo is unavailable, it can fall back to the offline SAPI built into Windows.

Installation and Enablement

The official installation command is for a local tgz:

dsh plugin --profile <profile> add file:/path/dsh-whale-tts-0.5.0.tgz
# Or install tgz / local directory directly on the DSH plugin page, restart DSH after installation

You can also install tgz or a local directory directly on the DSH plugin page; a restart of DSH is required for changes to take effect.

Runtime environment requirements come from the repository’s package.json:

"engines": {
  "dsh": ">=0.2.1-rc.4 <0.3.0-0",
  "node": ">=24.9.0"
}

This means the DSH version must fall within >=0.2.1-rc.4 <0.3.0-0, and Node.js must be at least 24.9.0. The plugin has external dependencies @deepseek-ai/cordis and @deepseek-ai/schemastery.

Typical Usage

First, perform a self-check to confirm the provider, key, cache, and output directory are ready:

tts_status

Then list available voices and existing profiles:

tts_list_voices

After obtaining the voice ID, synthesize an audio file:

tts_synthesize

tts_synthesize returns a path, not the audio itself. Once the caller gets the absolute path, they decide how to play, send, and upload. If you want continuous playback, enable “Auto-play new replies” in the settings card and set the speed and segment length as needed.

Suitable Scenarios and Notes

Suitable for giving DSH assistant roles a stable, exclusive voice, or batch converting replies to local audio for downstream processing. If you just want to quickly audition a few sentences, use the audition function in the settings card.

Here are a few points that must be noted:

The plugin runs with the permissions of the current DSH process; it can read files accessible by the process and write to the output directory. Before installing, check the source code and license (this plugin is MIT) to confirm you are not granting unwanted permissions.

The main provider is currently only MiMo, which means the first use requires available MiMo credentials; keys are only saved as references, and the plugin does not log key values to logs or the frontend. The offline fallback on Windows relies on the system’s built-in SAPI, which behaves differently from online synthesis.

Profiles and candidates are stored locally; deleting a profile will also delete the reference audio. For cross-machine migration, use backup export and import rather than manually copying folders.

Conclusion

The value of this plugin lies in separating “synthesis” and “playback”: the plugin only cares about producing audio files and returning paths; the caller decides how to use them. If you are working on voice for DSH assistants, this is a minimal viable starting point.

  • Directory Page: https://www.skillhub.cn/plugins/cilis/dsh-whale-tts
  • Repository: https://github.com/cilis/dsh-whale-tts
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye