DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

litterbit /

litterbit/dsh-plugin-moss-tts

Verified

dsh-plugin

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@4749c21b

dsh-plugin-moss-tts

简体中文 · Version 0.1.0 · Apache-2.0 · Engine repo

Local text-to-speech for DeepSeek Harness, powered by the MOSS-TTS-Nano-100M C++ CPU engine. Everything is synthesized on this machine; text never leaves it, and the weights are installed once and shared with the CLI and the web playground.

Harness assistant reply ──► auto-read / per-message read button
                                 │
                     POST /moss-tts/stream (same origin, no CORS)
                                 │
        host plugin: engine lifecycle + verified download + paced proxy
                                 │  stdin/stdout JSON
                 moss_tts.exe --stdio (resident, weights loaded once)
                                 │
            browser AudioWorklet ring buffer ──► speakers

Requirements

Item Requirement
DeepSeek Harness 0.2.1-rc or newer (client slot contract)
OS Windows x64 (the engine ships for that platform only)
Disk ~170 MB (engine + weights), installed once

Install

dsh plugin --profile desktop add github:litterbit/dsh-plugin-moss-tts#main

Restart DSH afterwards. You get a "Moss Speech" settings page, a speaker toggle at the left of the composer, a read button on every assistant reply, and five moss_tts_* tools.

Installing from a local checkout: dsh plugin --profile desktop add D:\path\to\dsh-plugin-moss-tts (an absolute path is required).

First run: install the engine

Open Settings → Moss Speech → Download engine. The plugin fetches MossTTS-win-x64-full.zip (~160 MB) from the engine releases, verifies it against the release's sha256sums.txt, and extracts it into %LOCALAPPDATA%\MossTTS.

  • Already installed via the CLI or the web playground? It is reused; nothing is downloaded twice.
  • Downloads resume after an interruption; cancel removes only the partial file.
  • Behind a blocked network, point engineUrl + engineSha256 at a mirror in the plugin config, or set autoDownload: false and manage the install yourself.

Usage

Entry point What it does
🔊 left of the composer Auto-read. Reads each reply when it settles; while speaking the same button is ⏹ and stops it
🔊 on a reply Reads that reply only (whole text, ignores the auto-read limit)
Settings → Moss Speech Voice, auto-read limit, skip code blocks, preview, engine state and paths
moss_tts_say Agent-initiated speech (plays locally, or save_to writes a WAV)
moss_tts_voices / moss_tts_stop / moss_tts_clone / moss_tts_engine Voices / stop / clone a voice / engine status and install

Markdown is cleaned before speaking: fenced code and tables are skipped, links keep their text, heading and list markers are stripped, and long replies are cut on a sentence boundary at the auto-read limit (default 1500 characters, 0 = unlimited).

Privacy

  • Synthesis is fully local: no network, no uploaded text, no telemetry.
  • The only outbound traffic is the engine download you trigger from the settings page.
  • Cloned voices live under %LOCALAPPDATA%\MossTTS\userdata\voices\user\.

How it relates to the CLI and the web playground

All three run the same moss_tts.exe, the same weights and the same data directory:

  • CLI: moss_tts.exe --text "hello" --out hello.wav
  • Web playground: double-click moss_tts.exe → http://127.0.0.1:8759/
  • This plugin: no port; it spawns the resident engine over --stdio

Engine and plugin version independently: engine.json pins a release, falls back to the latest one when that tag is gone, and always verifies the release's sha256sums.txt.

Uninstall

dsh plugin --profile desktop remove dsh-plugin-moss-tts

The weights are left in place (the CLI and the web playground still use them). Delete %LOCALAPPDATA%\MossTTS to remove them too.

Troubleshooting

Symptom Fix
Settings keeps showing "not installed" Press "Re-check"; verify %LOCALAPPDATA%\MossTTS\moss_tts.exe and models\ exist
Download fails / hash mismatch Usually a proxy rewriting the body. Retry once; if it persists, set engineUrl + engineSha256 in the plugin config
"Ready" but silent The tab is muted, or the output device is wrong; click anywhere in the page once so the browser allows playback
Long replies are cut short The auto-read limit (1500 chars) — raise it in settings, or use the reply's own read button
Plugin does not appear DSH must be restarted; dsh --profile desktop --dump-config should contain a row id: moss-tts

Development

node tools/build-client.mjs          # regenerate lib/client.js (committed; installs run no build)
node tools/build-client.mjs --check  # what CI uses to catch a stale bundle
node --test tests/*.test.mjs         # no DSH required; engine tests skip without an engine

Host contract (verified against DSH 0.2.1-rc.2 on the development machine): dsh.bundle.patch inserts one loader row for the host half; dsh.client.platform = "web" plus exports["./client"] load the browser half; the host registers routes through ctx.get('webServer').register and the client registers slots through ctx.slots.inject. Nothing is imported from the host packages — tool definitions are plain objects with standard JSON Schema.

License

Apache-2.0. Model weights come from MOSS-TTS-Nano-100M (Apache-2.0) and are converted to the engine's container format by the engine repo; this package ships no weights or binaries and downloads them at runtime. See NOTICE.

—/ 5

No ratings yet

Verified DSH bundle

Commit 4749c21b5611

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout