dsh-tts: A Text-to-Speech Audio Plugin for DeepSeek Harness

xuan25/dsh-tts

Tools & CapabilitiesVerified
Listed on 2026-10-15
Page last updated 2026-10-17

A DSH plugin exposing a tts tool that turns text into audio files via any OpenAI-compatible TTS backend, with voice, model and route probing.

dsh-tts is a text-to-speech plugin for DeepSeek Harness that turns a piece of text into an audio file written to disk. It works with any OpenAI-compatible TTS backend, so agents can voice their output without per-backend glue code. The plugin exposes a single tts tool whose verbs cover synthesis, voice and model listing, route and credential inspection, connectivity probing, and phonemization, and it ships a skill document for agent contexts.

How to Install

install
dsh plugin --profile web add github:xuan25/dsh-tts
Category
Tools & Capabilities
Platform
DSH Plugin
Author
xuan25
Distribution
Plugin

dsh-tts Key Features

Synthesize text to audioList voices and modelsProbe backend routesValidate audio containersShips dsh-tts skill docs
Listed on dsh-plugin.org

dsh-tts Repo Summary

What Does It Do?

DSH TTS is a DSH plugin for DeepSeek Harness that turns text into an audio file written to disk. It synthesizes speech through any OpenAI-compatible TTS backend, so agents can voice their output without per-backend glue code. The plugin exposes a single tts tool whose verbs cover synthesis, voice and model listing, route probing, and phonemization. It is maintained by xuan25 under the MIT license, written in TypeScript, and last updated in October 2026.

Core Features

  • Speech synthesis: the synth verb renders the requested speech and writes the audio file to disk, supporting wav, mp3, flac, aac, opus, and pcm, with response_format defaulting to wav.
  • Voice and model listing: the voices verb lists backend voices with optional filtering and falls back to the static OpenAI table marked as static when the backend returns 404; the models verb reports each route's model list.
  • Route and credential inspection: the providers verb reads local configuration only, listing each route's fields, the originating layer of every field, and the credential state without any network request.
  • Connectivity probing: the status verb probes each route with a model listing plus an optional server-root health check.
  • Phonemization calls: the phonemize verb calls the backend's development phonemize endpoint at the server root, reporting 404 or 405 as unsupported.
  • Returned-byte validation: after synthesis the tool validates the payload, walking RIFF for wav and checking magic bytes for other formats, and reports known defects such as placeholder RIFF chunk sizes as warnings.

How to Use This Plugin?

Once enabled in DSH, an agent calls the tts tool with a verb, using synth to produce audio or voices to discover available voices. The voice argument is required with no default because the voice set is provider-specific, so list it first with voices; when model is omitted the tool uses the route's single declared model and fails with candidates listed if several are declared. When out is omitted the audio lands in the default directory, with the extension taken from response_format. Configuration layers from built-in defaults through the environment contract, the cordis config layer, and the user settings section, lowest to highest priority, and the providers verb reports which layer each field came from. The plugin also ships a skill document carrying the full parameter table, environment contract, and error shapes for agent contexts.

How to Troubleshoot This Plugin?

When synthesis fails, check the error shape first. A missing-voice error means the voice argument was not set, so query the backend's supported voice ids with the voices verb. An error listing several model candidates means the route declares multiple models and the call must specify model explicitly. If the returned payload is not the claimed container, the call fails but the file stays on disk, which is a signal to verify the backend actually honors response_format. Warnings in a successful result usually mean the backend emitted a known defect such as placeholder RIFF chunk sizes; the audio remains usable but should be reviewed. An unsupported response from phonemize simply means the backend does not implement that development endpoint.

This page is an independent rewrite of the plugin's official README — for authoritative documentation and the latest changes, refer to the source: xuan25/dsh-tts. The plugin is third-party code that runs on your machine once installed; inclusion does not imply endorsement — please review the source before installing.

Install, update, and uninstall this plugin in the Plugin Market of DeepSeek Harness's DSH Plugin Hub

DSH Plugin FAQ