# Third-party notices `dsh-gpt-sovits` is MIT-licensed (see [LICENSE](./LICENSE)). This file records the third-party code, constants and interface contracts it **actually** draws on, with the exact locations, so the credit is where it belongs. Every project below is MIT-licensed, which permits this reuse provided the notice and permission text travel with the distribution. Nothing here is a claim about projects that were only *read for reference* — those are listed separately at the end, uncredited-but-acknowledged. --- ## 1. `MaRi23333/dsh-fish-tts` — text pipeline - **Source**: https://github.com/MaRi23333/dsh-fish-tts (`dsh-fish-tts@0.2.11`) - **License**: MIT — “Copyright (c) 2026 dsh-fish-tts contributors” - **Where it went**: `lib/client.js`, function `cleanForSpeech`, and the single-object `WORDS` replacement table that feeds it. The speech-cleaning regular-expression chain is **adapted directly** from that project's `cleanForTts` (`lib/client.js`). Copied verbatim, character for character: | Pattern | Purpose | |---|---| | `/https?:\/\/[^\s<>"|]+/g` | collapse URLs | | `/[A-Za-z]:\\[^\s<>"|]+/g` | collapse Windows paths | | `/(^\|[\s((])(?:~\/\|\.{0,2}\/)[^\s<>"|]+/g` | collapse POSIX paths | | `/\b[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}\b/g` | collapse UUIDs | | `/\b[0-9a-fA-F]{16,}\b/g` | collapse long hex | | `/```[\s\S]*?```/g` | drop code fences | | `/`([^`\n]+)`/g` | unwrap inline code | | `/!\[[^\]]*\]\([^)]*\)/g` | drop images | | `/\[([^\]]+)\]\([^)]*\)/g` | unwrap links | | `/<[^>]+>/g` | strip HTML tags | | `/(\*\*\|__\|~~\|\*\|_)(?=\S)(.*?)(?<=\S)\1/g` | unwrap emphasis | | `/[ \t]+/g` | collapse runs of spaces | | `/\n{2,}/g` | collapse blank lines | **Deliberate local changes** (not from upstream): the long-identifier threshold is `{28,}` rather than `{24,}`; the code-fence pattern gained an `|$` alternative so an unterminated fence still matches; the emphasis pattern uses `[\s\S]*?` instead of `.*?` so it can span lines; heading/blockquote/list-marker/rule stripping (`/^\s{0,3}#{1,6}\s+/gm` and friends) was added here; and the replacement words are a `{ zh, en }` table rather than upstream's `REPL_ZH` / `REPL_EN` pair. Also adapted from the same file: the `window.__ModuleLoader__.load({ id, factory })` client-bundle shape and the use of `require("react")` + `require("react/jsx-runtime")` as the only module-table specifiers. --- ## 2. `fangqian616/dsh-say` — GPT-SoVITS engine contract - **Source**: https://github.com/fangqian616/dsh-say (`dsh-say@0.1.0`) - **License**: MIT — “Copyright (c) 2026 dsh-say contributors” - **Where it went**: `lib/index.js` — the `/tts` payload and the liveness probe. That project's `lib/engines/gptsovits.js` was read in full and used as the specification for how to drive `api_v2.py`: | Item | Value taken | |---|---| | Endpoint | `POST {serverUrl}/tts`, JSON body, raw WAV bytes back | | Payload fields and defaults | `text_lang`, `ref_audio_path`, `prompt_text`, `prompt_lang`, `top_k: 15`, `top_p: 1`, `temperature: 1`, `text_split_method: "cut5"`, `batch_size: 1`, `speed_factor`, `seed: -1`, `media_type: "wav"`, `streaming_mode: false`, `parallel_infer: true`, `repetition_penalty: 1.35`, `sample_steps`, `super_sampling: false` | | Liveness probe | `GET {serverUrl}/control`, where **an HTTP error counts as alive** — the endpoint returns 400 by design without a `command` | | Default endpoint | `http://127.0.0.1:9880` | | Sample-steps guidance | 32 is the default; lowering it is the documented speedup | The endpoint contract itself originates upstream in [RVC-Boss/GPT-SoVITS](https://github.com/RVC-Boss/GPT-SoVITS) `api_v2.py` (MIT); this plugin's `/set_gpt_weights` and `/set_sovits_weights` handling was written against that file directly, including the fact that both are **GET-only** and that an empty path answers 400. --- ## 3. DeepSeek Harness client plugins — slot and styling contract - **Source**: the `@deepseek-ai/dsh-client-*` packages bundled inside the DSH app (`app.asar`), read at runtime on the machine this was developed on. - **License**: MIT (`@deepseek-ai/dsh-client-ui-primitives` declares MIT; the packages are not published standalone, so no `LICENSE` file ships with them). - **Where it went**: `lib/client.js` — the registration pattern and the button geometry. Read as the authoritative API reference and adapted: | From | Taken | |---|---| | `dsh-experimental-client-ui-voice-input/lib/client.js` | the `ctx.slots.inject(name, () => ctx.slots.register({ name, locale, inject }, Component))` pattern, `exports.apply` / `exports.inject`, and the `apply(ctx)` entry point | | `dsh-client-ui-message-feedback/lib/client.js` | the `settings.section` registration shape (`{ name, id, order, label, locale }`), and the injected-stylesheet pattern — creating a `