Metadata-Version: 2.4
Name: yakbox
Version: 0.3.0
Summary: A local-first, reproducible audiobook build system
Author: yakbox contributors
License-Expression: MIT
License-File: LICENSE
License-File: THIRD_PARTY_NOTICES.md
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.14
Classifier: Typing :: Typed
Requires-Dist: click>=8.5.0,<9
Requires-Dist: httpx>=0.28.1,<1
Requires-Dist: markdown-it-py>=4.2.0,<5
Requires-Dist: pyyaml>=6.0.3,<7
Requires-Dist: regex>=2026.9.29,<2027
Requires-Dist: rich>=15.0,<16
Requires-Dist: mlx-whisper>=0.4.3,<0.5 ; platform_machine == 'arm64' and sys_platform == 'darwin' and extra == 'alignment'
Requires-Dist: parakeet-mlx==0.5.2 ; platform_machine == 'arm64' and sys_platform == 'darwin' and extra == 'analysis-parakeet'
Requires-Dist: mlx-audio[stt]>=0.4.8,<0.5 ; platform_machine == 'arm64' and sys_platform == 'darwin' and extra == 'analysis-qwen'
Requires-Dist: keyring>=25.7,<26 ; extra == 'credentials'
Requires-Dist: chatterbox-tts>=0.1.7,<0.2 ; extra == 'local'
Requires-Dist: diffusers>=0.38.0 ; extra == 'local'
Requires-Dist: gradio>=6.16.0 ; extra == 'local'
Requires-Dist: numba>=0.66.0 ; extra == 'local'
Requires-Dist: numpy>=2,<2.5 ; extra == 'local'
Requires-Dist: onnx>=1.22.0 ; extra == 'local'
Requires-Dist: safetensors>=0.8.0 ; extra == 'local'
Requires-Dist: setuptools>=83.0.0 ; extra == 'local'
Requires-Dist: starlette>=1.3.1 ; extra == 'local'
Requires-Dist: torch==2.13.0 ; extra == 'local'
Requires-Dist: torchaudio==2.11.0 ; extra == 'local'
Requires-Dist: torchcodec>=0.13,<0.14 ; extra == 'local'
Requires-Dist: transformers>=5.5.0 ; extra == 'local'
Requires-Dist: huggingface-hub>=1.4,<2 ; extra == 'phoneme'
Requires-Dist: torch==2.13.0 ; extra == 'phoneme'
Requires-Dist: transformers>=5.5.0 ; extra == 'phoneme'
Requires-Python: >=3.14, <3.15
Project-URL: Homepage, https://github.com/pbsladek/yakbox
Project-URL: Documentation, https://github.com/pbsladek/yakbox/tree/main/docs
Project-URL: Issues, https://github.com/pbsladek/yakbox/issues
Provides-Extra: alignment
Provides-Extra: analysis-parakeet
Provides-Extra: analysis-qwen
Provides-Extra: credentials
Provides-Extra: local
Provides-Extra: phoneme
Description-Content-Type: text/markdown

# yakbox

Yakbox is a local-first audiobook build system. It turns Markdown manuscripts
into generated narration, mastered WAV chapters, delivery MP3 chapters, and
verified releases.

It supports local Chatterbox and hosted Resemble.ai synthesis. The same speech
backends also power direct text-to-speech commands.

## Install

Yakbox supports macOS and Linux with Python 3.14. Install the CLI from a
[GitHub Release](https://github.com/pbsladek/yakbox/releases) with
[uv](https://docs.astral.sh/uv/):

```console
uv tool install --python 3.14 \
  https://github.com/pbsladek/yakbox/releases/download/v0.2.0/yakbox-0.2.0-py3-none-any.whl
yakbox doctor
```

For local Chatterbox synthesis:

```console
uv tool install --python 3.14 \
  "yakbox[local] @ https://github.com/pbsladek/yakbox/releases/download/v0.2.0/yakbox-0.2.0-py3-none-any.whl" \
  --overrides https://raw.githubusercontent.com/pbsladek/yakbox/v0.2.0/constraints/chatterbox-security-overrides.txt
```

FFmpeg and FFprobe are required to master, encode, inspect, and assemble audio.
You can also install a wheel downloaded from the
[GitHub Releases](https://github.com/pbsladek/yakbox/releases) page:

```console
uv tool install ./yakbox-*.whl
```

Releases include `SHA256SUMS`. See the
[installation and release guide](docs/installing-and-releasing.md) for checksum
verification, local release commands, and optional PyPI publishing.

## Build an audiobook

```console
yakbox init my-book
cd my-book
yakbox validate
yakbox audition --profile default --text "A short voice check."
yakbox build
yakbox release check --write-manifest
```

New projects use the fast offline fake backend. Change the profile in
`yakbox.toml` to use local Chatterbox or Resemble.ai for real narration.

## Examples

The [examples](examples/README.md) cover a tiny offline book, local Chatterbox,
Resemble.ai, multiple voice editions, pronunciations, selective rebuilding,
and M4B assembly. Start with the tiny book:

```console
cp -R examples/tiny-book my-tiny-book
cd my-tiny-book
yakbox validate
yakbox plan
yakbox build
```

## Direct text to speech

```console
yakbox tts "A short local test." --backend chatterbox-local --out local.wav
RESEMBLE_API_KEY=... yakbox cloud tts "A hosted test." \
  --voice-uuid VOICE_UUID --out hosted.wav
```

Use only voices and reference audio for which you have the necessary rights
and consent.

The local Chatterbox example includes four public-domain LibriVox prompts with
verified provenance and checksums. See the
[third-party notices](THIRD_PARTY_NOTICES.md) and
[licensing policy](docs/licensing.md).

For one- to three-word dialogue, Yakbox can generate longer carrier sentences,
use local Whisper to crop and verify the target, and stop for a hash-bound
listening review. See [Whisper inspection and short-audio
QA](docs/whisper-and-short-audio.md).

## Documentation

See the [documentation](docs/README.md) for manifests, backends, hosted
budgets, cleanup, releases, troubleshooting, and the Python API.
