From df57cf2733e398473a58d788cd97fea3a618f892 Mon Sep 17 00:00:00 2001 From: historia Date: Sun, 23 Aug 2026 14:01:56 -0400 Subject: feat: tui for make_audiocpp_server_json --- README.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 8d2ae3c..26bb7cb 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ The converter sends text extracted from your books to a locally running TTS serv - Supports [audio.cpp](https://github.com/0xShug0/audio.cpp), [qwen-tts](https://pypi.org/project/qwen-tts/), and [faster-qwen3-tts](https://github.com/andimarafioti/faster-qwen3-tts) backend servers (audio.cpp can host any of its TTS model families, not just Qwen3-TTS) - Output a single file or one per chapter - Automatic metadata (title/artist/album tags, chapter track numbers) and a generated cover -- Clone voices from .wav reference files or use the built-in speaker in the CustomVoice model. +- Supports text-to-speech, voice cloning, voice design, and per-model controls like emotion/speed ## Prerequisites @@ -50,7 +50,9 @@ You need to install one of the following backends (see below for installation/us | `--single-file` | Merge all chapters into a single file. `m4b` is always one file. | | `--language ` | Output language for the synthesized speech. Can add an accent even if the text is English. | | `--chunk` | Force client-side chunking into `CHUNK_SIZE`-word requests. Only matters for `--backend audiocpp`, which otherwise sends each chapter as one request and lets the server chunk long text itself (may double-chunk); the `qwen` and `faster` backends always chunk. | -| `--model ` | `--backend audiocpp` only: Choose the model from `server.json` | +| `--model ` | `audiocpp`: Choose the model from `server.json` | +| `--instructions "..."` | `audiocpp`: voice design or style instruction. Required for voice design models (`vdes`) | +| `--option KEY=VALUE` | `audiocpp`: Some models support custom options (e.g. `emotion=netural`) that can be passed with this flag | | `--debug` | Dump each chunk's raw audio and sent text to `debug/` and log every request. | | `--voice ` | `audiocpp`, `faster`: Server-side voice to request | | `--clone ` | `qwen`: Reference audio (`wav`) for voice cloning. | @@ -89,7 +91,7 @@ You can run `python tools/model_manager_v2.py list` to see all available models. Create a `server.json` config file. One server can host multiple models and multiple cloned voices. The `id:` fields are the model names you will set for `tts-audiobook-generator` with `--model`. -A helper tool is available in this repo `tools/make_audiocpp_server_json.py path/to/clone/wavs` that will interactively make this file for you, including automatically transcribing `.wav` voices to clone with `whisper`. Just pass it a path of `.wav` files. Make sure you're in a Python environment that has `whisper` (i.e. `conda activate audiobook` before running) +A helper tool is available in this repo, `tools/make_audiocpp_server_json.py`, that will interactively make this file for you, including automatically transcribing `.wav` voices to clone with `whisper`. It runs as a minimal full-screen TUI: browse to your `audio.cpp` checkout, pick model families and packages from an expandable checkbox tree, and accept the defaults on the remaining screens (host, port, backend, lazy loading). Pass `--wavs path/to/clone/wavs` to skip the voice-directory browser (it is prompted for otherwise), and `--notui` to use classic line prompts instead (selected automatically when `curses` is unavailable, e.g. on Windows without `pip install windows-curses`, or when not running in a terminal). Make sure you're in a Python environment that has `whisper` (i.e. `conda activate audiobook` before running). The Qwen3-TTS model tree also offers hosting the VoiceDesign package as a `vdes` entry (see [Voice design](#voice-design) below). ```json { @@ -124,6 +126,8 @@ A helper tool is available in this repo `tools/make_audiocpp_server_json.py path } ``` +### 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: ```bash @@ -141,6 +145,10 @@ python audiobook.py --backend audiocpp --model qwen # Qwen3-TTS voice cloning python audiobook.py --backend audiocpp --model qwen-clone --voice narrator + +# Qwen-TTS voice design +python audiobook.py --backend audiocpp --model qwen-design \ + --instructions "A warm adult female narrator with a British accent" ``` ## Other TTS Backends -- cgit v1.2.3