diff options
| -rw-r--r-- | README.md | 18 | ||||
| -rw-r--r-- | app/backends/audiocpp/catalog.py | 2 | ||||
| -rw-r--r-- | app/backends/audiocpp/wizard.py | 9 | ||||
| -rw-r--r-- | app/converter/config.py | 4 |
4 files changed, 21 insertions, 12 deletions
@@ -57,6 +57,24 @@ python audiobook.py Everything the TUI does can also be scripted with flags: `python audiobook.py --backend audiocpp --model higgs --voice narrator`. To convert a single book file instead of the whole input directory, pass `--input-file` (and optionally `--output-file`): `python audiobook.py --input-file books/dune.epub --output-file out/dune.mp3`. The directory flags (`--input`/`--output`) and the single-book flags (`--input-file`/`--output-file`) are mutually exclusive pairs — mixing one stops with an error explaining both. +Note: unlike the TUI, the CLI does **not** start or stop backend servers — point it at a server that is already running. You can manually launch servers in the TUI too. + +```bash +python audiobook.py --backend audiocpp --model qwen3_tts_1_7b_base_q8_0 --voice narrator + +python audiobook.py --backend audiocpp --model qwen3_tts_1_7b_customvoice_q8_0 --voice Vivian + +python audiobook.py --backend audiocpp --model Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF \ + --instructions "A warm adult female narrator with a British accent" + +python audiobook.py --backend faster --voice narrator + +python audiobook.py --backend audiocpp --api-url http://10.20.30.40:8080 --voice narrator + +python audiobook.py --input-file the_odyssey.epub --output-file the_odyssey.mp3 \ + --format mp3 --single-file +``` + ## Options | Flag | Example | Description | diff --git a/app/backends/audiocpp/catalog.py b/app/backends/audiocpp/catalog.py index 2892b9c..412fdf1 100644 --- a/app/backends/audiocpp/catalog.py +++ b/app/backends/audiocpp/catalog.py @@ -57,7 +57,7 @@ def supports_request_options(families: Dict[str, dict], _BACKEND_DESCRIPTIONS = ( - ("cuda", "NVIDIA GPUs (fastest)"), + ("cuda", "NVIDIA GPUs"), ("vulkan", "cross-vendor GPU"), ("hip", "AMD GPUs"), ("cpu", "no GPU required"), diff --git a/app/backends/audiocpp/wizard.py b/app/backends/audiocpp/wizard.py index 75d84ee..91a8522 100644 --- a/app/backends/audiocpp/wizard.py +++ b/app/backends/audiocpp/wizard.py @@ -454,7 +454,6 @@ def _wizard(stdscr, args: argparse.Namespace, parser: argparse.ArgumentParser "key": "backend", "label": "Inference backend", "kind": "choice", "value": default_backend, "choices": options, - "note": "audiocpp_server is not built yet.", }) fields.append({ "key": "build", "label": "Build audiocpp_server now?", @@ -466,8 +465,6 @@ def _wizard(stdscr, args: argparse.Namespace, parser: argparse.ArgumentParser "key": "wav_dir", "label": "Voice clone .wav directory", "kind": "dir", "value": Path(wav_start) if wav_start else None, "visible": lambda fs: bool(s["include_clone"]), - "note": "Published as the server-level voice presets " - "(prompt_text transcribed with whisper).", } fields.append(wav_field) @@ -487,8 +484,6 @@ def _wizard(stdscr, args: argparse.Namespace, parser: argparse.ArgumentParser "key": "download", "label": "Download the selected models automatically?", "kind": "bool", "value": True, - "note": "No prints the model_manager_v2.py install " - "commands for any models not already installed.", }) model_sync_relevant = len(s["entry_ids"]) == 1 and not ( @@ -499,8 +494,6 @@ def _wizard(stdscr, args: argparse.Namespace, parser: argparse.ArgumentParser "key": "sync_model_ids", "label": f"Make '{s['entry_ids'][0]}' the default model?", "kind": "bool", "value": True, - "note": "Writes AUDIOCPP_MODEL_ID/AUDIOCPP_CLONE_MODEL_ID " - "to app/converter/config.py.", }) new_paths = {entry["path"] for entry in s["model_entries"]} @@ -515,8 +508,6 @@ def _wizard(stdscr, args: argparse.Namespace, parser: argparse.ArgumentParser "label": f"Delete {count} unused downloaded model " f"{'entry' if count == 1 else 'entries'} from disk?", "kind": "bool", "value": False, - "note": "Selected models were removed above but their " - "downloads are still on disk.", }) result = tui.form( diff --git a/app/converter/config.py b/app/converter/config.py index 9a07353..d0028dc 100644 --- a/app/converter/config.py +++ b/app/converter/config.py @@ -106,8 +106,8 @@ AUDIOCPP_REMOTE_URL = "http://127.0.0.1:8080" # externally-run audiocpp_server # hosting several lazily-loaded entries) needs no editing here either: leave # AUDIOCPP_MODEL_ID unset to auto-select when only one entry is hosted, or # pick the entry per run with the --model CLI flag. -AUDIOCPP_MODEL_ID = "" -AUDIOCPP_CLONE_MODEL_ID = "" +AUDIOCPP_MODEL_ID = "Qwen3-TTS-12Hz-1.7B-Base-GGUF" +AUDIOCPP_CLONE_MODEL_ID = "Qwen3-TTS-12Hz-1.7B-Base-GGUF" # Voice design / style instruction sent with every audio.cpp request when # the --instructions CLI flag is not given. Required for server entries |
