Preface¶
In DSH’s agent workflow, text output is common, but voice scenarios often require additional processing: when text needs to be synthesized into speech, one must pay attention to the voice timbre, request parameters, and output files; when audio needs to be converted to text, one must consider the ASR endpoint, key, language, and result persistence.
dsh-voice consolidates these tasks into a DSH plugin: providing three tools, voice_tts, voice_stt, and voice_list, covering text-to-MP3 synthesis, audio-to-text conversion, and a common voice list.
What is this¶
dsh-voice is a DSH voice bundle plugin designed to add TTS and STT tool capabilities to an agent.
- Project Repository: https://github.com/STARDUSTLC666/dsh-voice
- Verified Owner: STARDUSTLC666;
stardustlcalso appears in the source data, but it is not explicitly confirmed whether they are the same person or the primary maintainer. - License: MIT.
- Verified on:
@deepseek-ai/dsh@0.1.2-alpha.2(2026-08-31). - Runtime: Does not import any
@deepseek-ai/*internal modules. - Node Requirement:
Node >=22. - Implementation: Uses native WebSocket and provides a plugin-level proxy.
Core Features¶
The following introduces the three tools provided by the plugin.
voice_tts: Text to MP3 Synthesis¶
voice_tts is used to synthesize text into MP3 (free). text is a required parameter; voice, rate, pitch, and output are optional parameters.
voice_tts { text: 今天的 AI 早报来了 } # XiaoXiao female voice, output voice_output.mp3
voice_tts { text: hello, voice: en-US-AriaNeural } # English female voice
Verified materials indicate that voice_tts works with zero configuration; synthesis uses the edge-tts protocol for direct connection and generates the Sec-MS-GEC token locally.
voice_stt: Audio to Text¶
voice_stt is used to convert audio into text. audio is a required parameter; engine, model, language, prompt, and output are optional parameters.
voice_stt { audio: E:\audio\meeting.mp3, language: zh } # Transcribe meeting recording
This tool requires an ASR key. It supports OpenAI-compatible ASR interfaces and can point to Groq, OpenAI, or custom endpoints; the key is recommended to be changed to use the environment variable DSH_VOICE_ASR_KEY.
voice_list: Voice List¶
voice_list is used to return a list of common voices, making it convenient to select the voice parameter for voice_tts.
voice_list {}
Installation and Enablement¶
First, confirm that the runtime environment meets Node >=22, then execute:
dsh plugin --profile web add dsh-voice
After executing the command above, you can use the following three examples in DSH tool calls. If using voice_stt later, it is recommended to put the ASR key into the environment variable DSH_VOICE_ASR_KEY instead of writing the key into daily configuration.
Suitable Scenarios and Notes¶
Suitable scenarios:
- Directly converting text to MP3 within a DSH agent, such as generating a news report voice.
- Converting audio files like meeting recordings to text within a DSH agent.
- Needing to quickly view available voices to adjust
voice_ttsparameters.
Notes when using:
voice_ttsworks with zero configuration;voice_sttrequires an ASR key.- The plugin performs pre-validation on input: text should not exceed 5000 characters, and audio should not exceed 25MB.
- Output files will automatically add sequence numbers if they share the same name.
- After uninstalling, the Web service needs to be restarted; for thorough cleanup, manually delete the plugin line in your profile’s
cordis.patch.ymlfile. - The plugin runs with the permissions of the current dsh process. It is recommended to check the source code, dependencies, and MIT license before installing.
- DSH’s plugin ecosystem emphasizes “everything is a plugin”; the community directory is an independent site with no official affiliation with DeepSeek or Fangyuan.
Conclusion¶
The value of dsh-voice lies in integrating TTS, STT, and voice lists into the DSH plugin toolchain, reducing the glue code required for agent speech input and output.
Project Repository: https://github.com/STARDUSTLC666/dsh-voice