xuan25/dsh-tts ↗★ 0

dsh-tts

Text-to-speech plugin for dsh: a single tts tool (synth/voices/providers/models/status/phonemize verbs) over OpenAI-compatible TTS backends, configured via DSH_TTS_* env or the dsh-tts: settings section 适合需要在DSH中调用外部TTS服务进行语音合成和发音处理的用户。

패키지
dsh-tts
호환성
미검증
Harness peer 범위
>=0.1.0-rc.6
Cordis peer 범위
>=4.0.2
버전
0.1.0
라이선스
MIT
최근 업데이트
2026. 10. 13.

같은 패키지 이름의 다른 저장소

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:xuan25/dsh-tts

Configuration

Providers are configured in any of four layers, lowest to highest priority; the providers verb reports the originating layer of every field, so a shadowed value is never silent:

  1. the built-in default (api: openai-compatible),
  2. the DSH_TTS_* env contract (static per process boot),
  3. the cordis config layer (a patch entry with id dsh-tts and a config object, or profile-level patches),
  4. the dsh-tts: section in the user settings document ($DSH_HOME/settings.yaml), which the plugin re-reads on every call, so settings edits apply without a restart.
dsh-tts:
  defaultProvider: local
  providers:
    local:
      baseURL: http://:
/v1
    hosted:
      baseURL: https://api.example.com/v1
      apiKeyEnv: DSH_TTS_HOSTED_KEY
      models: [kokoro-v2]
      displayName: Hosted Speech

The env contract mirrors the config fields 1:1: DSH_TTS_DEFAULT_PROVIDER, and per route the variables `DSH_TTS_PROVIDER__BASEURL`, `DSH_TTS_PROVIDER__API`, `DSH_TTS_PROVIDER__APIKEYENV`, `DSH_TTS_PROVIDER__HEADERS`, `DSH_TTS_PROVIDER__MODELS`, `DSH_TTS_PROVIDER__DISPLAYNAME`. The segment is the route name uppercased with - written as _. The headers value is a JSON object string, and the models value is a comma-separated list of model ids. The baseURL value is the OpenAI-compatible base URL including the /v1 prefix (the same shape as an LLM provider base URL); the plugin appends /audio/speech, /audio/voices, and /models to it verbatim, and it addresses /health and /dev/phonemize at the server root, which it derives by stripping a trailing /v1 from the base URL. The apiKeyEnv value is a reference to an environment variable name, never a secret in config; per request the value resolves from the process environment, then from $DSH_HOME/.credentials.yaml.