Skip to main content

Convert Ebooks to Audiobooks with [custom] voice samples

Project description

kenkui

Python Platform License PyPI

Freaky fast audiobook generation from EPUBs. No GPU. No nonsense.

kenkui turns EPUB ebooks into high-quality M4B audiobooks using state-of-the-art text-to-speech — entirely on CPU, and faster than anything else I've used.

It's built on top of Kyutai's pocket-tts, with all the annoying parts handled for you: chapter parsing, batching, metadata, covers, voices, and sane defaults.

If you have ebooks and want audiobooks, kenkui is for you.


✨ Features

  • Freaky fast audiobook generation
  • No GPU needed, 100% CPU
  • Super high-quality text-to-speech
  • Multithreaded
  • EPUB-aware chapter parsing
  • Flexible chapter filtering with regex patterns and presets
  • Custom voices
  • Batch processing
  • Automatic cover embedding (EPUB → M4B)
  • Sensible defaults, minimal configuration

🚀 Quick Start

kenkui is intentionally easy to install and easy to use.

Requirements

Install

Recommended:

uv tool install kenkui

Alternatives if you prefer:

pip install kenkui
pipx install kenkui

Run

kenkui book.epub

That's it. You'll get a book.m4b alongside your EPUB.

You can also point Kenkui at a directory, and it will recursively convert all EPUBs it finds.


📚 Usage

You can pass either a single EPUB file or a directory.

# Convert a single book
kenkui book.epub

# Convert an entire library (interactive book selection)
kenkui library/

# Convert all books without prompting
kenkui library/ --no-select-books

# Specify output directory
kenkui book.epub -o output/

# Log detailed output to file
kenkui book.epub --log conversion.log

# Debug mode with full logging
kenkui book.epub --log debug.log --verbose

🎙️ Voice Selection

Use -v or --voice to choose a voice.

Accepted inputs:

  • One of pocket-tts's default voices:

    alba, marius, javert, jean, fantine, cosette, eponine, azelma
    
  • A local .wav file

  • A Hugging Face-hosted voice:

    hf://user/repo/voice.wav
    

To see everything Kenkui can currently use:

kenkui --list-voices

🎭 Custom Voices

To use your own voice, record a 5–10 second clip of clean speech with minimal background noise or crosstalk.

Cleaning the audio makes a noticeable difference. Tools like Adobe's Enhance Speech work well: https://podcast.adobe.com/en/enhance


FAQ

Do I need a GPU?
No. kenkui is 100% CPU-based.

Is it actually fast?
Yes. That's the entire point of the project.

What output format does it use?
M4B, with chapters, metadata, and embedded covers.

Can it generate MP3s?
No. This is intentional — M4B is a significantly better format for audiobooks.

Does it support formats other than EPUB?
Not currently. EPUB only, for now.

Does it upload my books anywhere?
No. Everything runs locally. Internet access is only needed if you pull voices from Hugging Face.


Non-Goals

kenkui is not meant to be:

  • A general-purpose text-to-speech framework
  • A GUI application
  • An MP3 audiobook generator
  • A pluggable frontend for every TTS backend available

The focus is narrow by design: fast, high-quality audiobook generation from EPUBs, with minimal friction.


🙏 Special Thanks

Thanks to Project Gutenberg for providing some of the public-domain books included with Kenkui.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kenkui-0.6.0.tar.gz (83.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kenkui-0.6.0-py3-none-any.whl (83.4 MB view details)

Uploaded Python 3

File details

Details for the file kenkui-0.6.0.tar.gz.

File metadata

  • Download URL: kenkui-0.6.0.tar.gz
  • Upload date:
  • Size: 83.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for kenkui-0.6.0.tar.gz
Algorithm Hash digest
SHA256 489e1a3d107997a496e614aeeb72fc4a80f3fd1f5eb40f8abfec298274992c57
MD5 721ed5f5b7dd33548a4a48b99539ac0e
BLAKE2b-256 98ee79193da0c1a918b482e677e0a4933868bd51116cf23b8dc27ef822ba0821

See more details on using hashes here.

File details

Details for the file kenkui-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: kenkui-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 83.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for kenkui-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1f9278018de8bd73a42200ed1aef1e8c90326596e7bd35b96548d782c1867fc6
MD5 141aec05a0603ccec9369a47333dcb37
BLAKE2b-256 a5325f03285baa64430c2a8217150de4dafcd02c01d30006ebae03c281a21c28

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page