chatterbook
Convert EPUB books into M4B audiobooks with Chatterbox Multilingual TTS.
from chatterbook import Book
book = Book("book.epub")
book.convert(
language="ko",
voice_path="voices/narrator.wav",
style="warm",
batch_size=8,
speed=0.9,
)
Book reads the EPUB immediately and builds a JSON-compatible representation
with title, chapters, paragraphs, narration/dialogue segments, and pause timing.
You can serialize and restore that representation without reading the EPUB again:
data = book.to_dict()
book = Book.from_dict(data)
book.convert("audiobooks/book.m4b", language="ko")
By default, the output filename is read from the EPUB title metadata and written
as Title.m4b in the current directory. You can also pass a path or directory.
voice_path is an optional short WAV reference clip for voice cloning. If it is
omitted, Chatterbox's bundled default conditionals are used. To use separate
voices for narration and dialogue, pass narrator_voice_path and
dialogue_voice_path. When combined with voice_path, the shared voice is used
as the default and the narrator/dialogue-specific paths override their side.
Chapters are split into paragraph and speech segments when the Book is built.
Quoted dialogue is marked separately and generated with slightly more expressive
settings. Commas, sentence endings, paragraph breaks, and narration/dialogue
transitions add real silence after each segment to improve audiobook pacing.
The default audiobook pacing is intentionally slower than raw TTS:
speed=0.9comma_pause_ms=200sentence_pause_ms=300paragraph_pause_ms=600dialogue_pause_ms=300
M4B output requires ffmpeg on your PATH. During conversion, chatterbook shows
one colored tqdm progress bar for the whole EPUB. Pass show_progress=False
to disable it.
When voice_path is used, conversion prepares voice conditionals once per
same-style batch instead of once per segment. Tune batch_size to control how
many adjacent narration or dialogue segments are grouped for that preparation
step.
book.convert(
language="ko",
narrator_voice_path="voices/narrator.wav",
dialogue_voice_path="voices/dialogue.wav",
)
To export chapter WAV files instead of one M4B:
book.convert(
"audio",
language="ko",
output_format="wav",
)
Styles
neutral: balanced defaultwarm: slightly softer narrationdramatic: more expressive narration
You can override a style with explicit generation values:
book.convert(
language="ko",
exaggeration=0.7,
cfg_weight=0.3,
)
Metadata
Release files for chatterbook 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| chatterbook-0.5.0.tar.gz | 234.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| chatterbook-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 248.9 kB
Release files / chatterbook-0.5.0.tar.gz
| Download URL | chatterbook-0.5.0.tar.gz |
|---|---|
| Size | 234.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bce35b69372cdc95e30c3f7208aa59bf8a62f6e21b13eed6b2f547b6e64bfbe9
|
|
BLAKE2b-256 checksum How to use checksums |
6d56c8818af4d6f402ac882aba5bdaaf35a32f5bd0f4c4542b5b2285a8ddb131
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 9, 2026.
Transparency logRelease files / chatterbook-0.5.0-py3-none-any.whl
| Download URL | chatterbook-0.5.0-py3-none-any.whl |
|---|---|
| Size | 14.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b65d79a57cd61aae5909eed745455b23c5606e0e8c170d5d35b5a1ba59410bc9
|
|
BLAKE2b-256 checksum How to use checksums |
85b3575f7b3a7d99228b78f37d9ecbb9d84efd8d9e7f2128077fea58997a140d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 9, 2026.
Transparency log