diff options
Diffstat (limited to 'app/docs/backend-audiocpp.md')
| -rw-r--r-- | app/docs/backend-audiocpp.md | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/app/docs/backend-audiocpp.md b/app/docs/backend-audiocpp.md index 32ce39b..aab98b0 100644 --- a/app/docs/backend-audiocpp.md +++ b/app/docs/backend-audiocpp.md @@ -87,11 +87,20 @@ Create a `server.json` config file. One server can host multiple models and mult "path": "models/Qwen3-TTS-12Hz-1.7B-Base-GGUF", "task": "tts", "mode": "offline" + }, + { + "id": "Chatterbox-GGUF", + "family": "chatterbox", + "path": "models/Chatterbox-GGUF", + "task": "clon", + "mode": "offline" } ] } ``` +The `task` field decides which session type the server creates for the entry, and model families are picky about it: clone-only families — **Chatterbox**, **Confucius4-TTS** and **Echo-TTS** — reject plain-TTS sessions outright (every speech request fails with an HTTP 500 like `Chatterbox supports VoiceCloning and VoiceConversion`), so they must be hosted with `"task": "clon"`. Voice-design packages are hosted with `"task": "vdes"`; every other family keeps `"task": "tts"`, which serves plain TTS and (where the family supports it) voice cloning through the request's `voice` field alike. The setup wizard writes the right task automatically, and opening **Generate Audiobooks** re-hosts stale `tts`-tasked clone-only entries in an existing `server.json` (restarting the managed server to load the fix). + ### Run audio.cpp and the audiobook script Run the server with this config file. The `audiocpp_server` path will be slightly different depending on your platform and build options: @@ -103,9 +112,15 @@ Run the server with this config file. The `audiocpp_server` path will be slightl In a different terminal, run `audiobook.py`. Pick the TTS `--model` and `--voice` from server.json: ```bash -# Higgs Audio (clone-only) +# Higgs Audio voice cloning (the family also does plain TTS: omit --voice) python audiobook.py --backend audiocpp --model Higgs-Audio-v3-TTS-4B-GGUF --voice narrator +# Chatterbox (clone-only: a reference voice is required) +python audiobook.py --backend audiocpp --model Chatterbox-GGUF --voice narrator + +# Supertonic (pure TTS: no voice needed, none can be cloned) +python audiobook.py --backend audiocpp --model Supertonic-GGUF + # Qwen3-TTS built-in speaker (pick one with --voice) python audiobook.py --backend audiocpp --model Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF --voice Vivian @@ -144,7 +159,7 @@ If accurate transcripts are not available, cloning without one is possible per run with `--option x_vector_only_mode=true` (speaker-embedding-only cloning — no transcript needed, noticeably lower speaker similarity). -In the hub's **Generate Audiobooks** form the Model picker shows each entry's voice capability (`speaker` / `clone` / `design`). The Voice field is labelled **Built-in voice** on CustomVoice entries (listing the model's speakers) and **Voice to clone** everywhere else (listing the server's preset/voice_dir entries). Instructions are shown for every entry: required for `vdes` design models, an optional style/delivery instruction elsewhere — and on families without built-in speakers that read instructions, a description alone can define the voice, so leaving Voice empty is fine there. A Request options field accepts the same `KEY=VALUE` items as `--option`, and appears only for model families whose audio.cpp checkout spec declares request options (e.g. Neutts, Outetts, F5-TTS — not Qwen3-TTS or Higgs Audio). Editing Instructions or Request options shows a short dim hint with an example (for Instructions: `"Speak in a calm, soothing, and happy tone."`). Language is a static picker over the languages of audio.cpp's WebUI menus (it shows the same "Check model documentation for supported languages." hint while editing) and overrides the global setting for this run only. +In the hub's **Generate Audiobooks** form the Model picker shows each entry's voice capability: `speaker` (built-in Qwen3-TTS speakers), `tts` (pure-TTS families that need no voice at all), `tts/clone` (mixed families that work either way), `clone` (clone-only families) or `design`. The Voice field is labelled **Built-in voice** on CustomVoice entries (listing the model's speakers) and **Voice to clone** on clone-capable entries (listing the server's preset/voice_dir entries) — it is hidden entirely on pure-TTS families, and on mixed families it leads with a blank **(built-in)** pick that means plain TTS without a reference voice (the default). Clone-only families keep the voice required. Instructions are shown for every entry: required for `vdes` design models, an optional style/delivery instruction elsewhere — and on families without built-in speakers that read instructions, a description alone can define the voice, so leaving Voice empty is fine there. A Request options field accepts the same `KEY=VALUE` items as `--option`, and appears only for model families whose audio.cpp checkout spec declares request options (e.g. Neutts, Outetts, F5-TTS — not Qwen3-TTS or Higgs Audio). Editing Instructions or Request options shows a short dim hint with an example (for Instructions: `"Speak in a calm, soothing, and happy tone."`). Language is a static picker over the languages of audio.cpp's WebUI menus (it shows the same "Check model documentation for supported languages." hint while editing) and overrides the global setting for this run only. The hub also works with an audio.cpp server that runs somewhere else (another checkout, another machine): set `AUDIOCPP_REMOTE_URL` in `app/converter/config.py` (or the TUI **Settings** → "audio.cpp remote URL") to its `host:port`. The hub probes that URL and, when it answers, offers an `audio.cpp [remote]` entry in **Generate Audiobooks…** whose models and voices are queried live (`GET /v1/models` and `GET /v1/audio/voices`) — alongside the managed `audio.cpp` entry, which keeps reading the local `server.json`. The remote URL defaults to `127.0.0.1:8080`, so a server started outside this tool on the local port is found automatically. On the CLI, pass `--api-url http://host:port` (and `--model`/`--voice` matching that server's config). |
