Skip to main content

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.9
  • comma_pause_ms=200
  • sentence_pause_ms=300
  • paragraph_pause_ms=600
  • dialogue_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 default
  • warm: slightly softer narration
  • dramatic: 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)

Source distribution for chatterbook 0.5.0
File Size Uploaded
chatterbook-0.5.0.tar.gz 234.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for chatterbook 0.5.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page