CPU/GPU Converter from E-Book to audiobook with chapters and metadata
using advanced TTS engines and much more.
Supports voice cloning and 1158 languages!
[!IMPORTANT] This tool is intended for use with non-DRM, legally acquired eBooks only.
The authors are not responsible for any misuse of this software or any resulting legal consequences.
Use this tool responsibly and in accordance with all applicable laws.

Click to see images of Web GUI

New Default Voice Demo
https://github.com/user-attachments/assets/750035dc-e355-46f1-9286-05c1d9e88cea
More Demos
ASMR Voice
https://github.com/user-attachments/assets/68eee9a1-6f71-4903-aacd-47397e47e422
Rainy Day Voice
https://github.com/user-attachments/assets/d25034d9-c77f-43a9-8f14-0d167172b080
Scarlett Voice
https://github.com/user-attachments/assets/b12009ee-ec0d-45ce-a1ef-b3a52b9f8693
David Attenborough Voice
https://github.com/user-attachments/assets/81c4baad-117e-4db5-ac86-efc2b7fea921
Example

XTTSv2, Bark, Fairseq, VITS, Tacotron2, Tortoise, GlowTTS, YourTTS.epub, .mobi, .azw3, .fb2, .lrf, .rb, .snb, .tcr, .pdf, .txt, .rtf, .doc, .docx, .html, .odt, .azw, .tiff, .tif, .png, .jpg, .jpeg, .bmp, .zipaac, flac, mp3, m4b, m4a, mp4, mov, ogg, wav, webm🎛️ Fine-tuned preset models trained by the E2A Team
(Contact us if you need additional fine-tuned models, or if you’d like to share yours to the official preset list)
* Modern TTS engines are very slow on CPU, so use lower quality TTS like YourTTS, Tacotron2 etc..
| Arabic (ar) | Chinese (zh) | English (en) | Spanish (es) |
|---|---|---|---|
| French (fr) | German (de) | Italian (it) | Portuguese (pt) |
| Polish (pl) | Turkish (tr) | Russian (ru) | Dutch (nl) |
| Czech (cs) | Japanese (ja) | Hindi (hi) | Bengali (bn) |
| Hungarian (hu) | Korean (ko) | Vietnamese (vi) | Swedish (sv) |
| Persian (fa) | Yoruba (yo) | Swahili (sw) | Indonesian (id) |
| Slovak (sk) | Croatian (hr) | Tamil (ta) | Danish (da) |
| - +1130 languages and dialects here |
.epub, .pdf, .mobi, .txt, .html, .rtf, .chm, .lit,
.pdb, .fb2, .odt, .cbr, .cbz, .prc, .lrf, .pml,
.snb, .cbc, .rb, .tcr.epub or .mobi for automatic chapter detection.m4b, .m4a, .mp4, .webm, .mov, .mp3, .flac, .wav, .ogg, .aac[break] — silence (random range 0.3–0.6 sec.)[pause] — silence (random range 1.0–1.6 sec.)[pause:N] — fixed pause (N sec.)[voice:/path/to/voice/file]...[/voice] — switch voice from default or selected voice from GUI/CLICheck our other repo dedicated to add SML automatically in your ebook -> E2A-SML
[!IMPORTANT] **Before to post an install or bug issue search carefully to the opened and closed issues TAB
to be sure your issue does not exist already.**
[!NOTE] **EPUB format lacks any standard structure like what is a chapter, paragraph, preface etc.
So you should first remove manually any text you don't want to be converted in audio.**
Clone repo
bash
git clone https://github.com/DrewThomasson/ebook2audiobook.git
cd ebook2audiobook
Install / Run ebook2audiobook:
Linux/MacOS
bash
./ebook2audiobook.command
Note for MacOS users: homebrew is installed to install missing programs.
Mac Launcher
Double click Mac Ebook2Audiobook Launcher.command
Windows
bash
ebook2audiobook.cmd
or
Double click ebook2audiobook.cmd
Note for Windows users: scoop is installed to install missing programs without administrator privileges.
Open the Web App: Click the URL provided in the terminal to access the web app and convert eBooks. http://localhost:7860/
./ebook2audiobook.command --share (Linux/MacOS)
ebook2audiobook.cmd --share (Windows)
python app.py --share (all OS)[!IMPORTANT] **If the script is stopped and run again, you need to refresh your gradio GUI interface
to let the web page reconnect to the new connection socket.**
bash
./ebook2audiobook.command --headless --ebook <path_to_ebook_file> --voice <path_to_voice_file> --language <language_code>Windows
bash
ebook2audiobook.cmd --headless --ebook <path_to_ebook_file> --voice <path_to_voice_file> --language <language_code>
[--ebook]: Path to your eBook file
[--language]: Language code in ISO-639-3 (i.e.: ita for italian, eng for english, deu for german...).
Default language is eng and --language is optional for default language set in ./lib/lang.py.
The ISO-639-1 2 letters codes are also supported.
(must be a .zip file containing the mandatory model files. Example for XTTSv2: config.json, model.pth, vocab.json and ref.wav)
- Linux/MacOS
bash
./ebook2audiobook.command --headless --ebook <ebook_file_path> --language <language> --custom_model <custom_model_path>
- Windows
bash
ebook2audiobook.cmd --headless --ebook <ebook_file_path> --language <language> --custom_model <custom_model_path>
Note: the ref.wav of your custom model is always the voice selected for the conversion
: Path to model_name.zip file,
which must contain (according to the tts engine) all the mandatory files
(see ./lib/models.py).
bash
./ebook2audiobook.command --helpbash
ebook2audiobook.cmd --helppython
app.py --help```bash usage: app.py [-h] [--session SESSION] [--share] [--headless] [--ebook EBOOK] [--ebooks_dir EBOOKS_DIR] [--language LANGUAGE] [--voice VOICE] [--voice_map VOICE_MAP] [--device {CPU,CUDA,MPS,ROCM,XPU,JETSON}] [--tts_engine {XTTS,BARK,VITS,FAIRSEQ,TACOTRON,YOURTTS,xtts,bark,vits,fairseq,tacotron,yourtts}] [--custom_model CUSTOM_MODEL] [--fine_tuned FINE_TUNED] [--output_format OUTPUT_FORMAT] [--output_channel OUTPUT_CHANNEL] [--temperature TEMPERATURE] [--length_penalty LENGTH_PENALTY] [--num_beams NUM_BEAMS] [--repetition_penalty REPETITION_PENALTY] [--top_k TOP_K] [--top_p TOP_P] [--speed SPEED] [--enable_text_splitting] [--text_temp TEXT_TEMP] [--waveform_temp WAVEFORM_TEMP] [--output_dir OUTPUT_DIR] [--version]
Convert eBooks to Audiobooks using a Text-to-Speech model. You can either launch the Gradio interface or run the script in headless mode for direct conversion.
options: -h, --help show this help message and exit --session SESSION Session to resume the conversion in case of interruption, crash, or reuse of custom models and custom cloning voices.
**** The following option is for gradio/gui mode only: --share (Optional) Enable a public shareable Gradio link.
**** The following options are for --headless mode only: --headless Run the script in headless mode --ebook EBOOK Path to the ebook file for conversion. Cannot be used when --ebooks_dir is present. --ebooks_dir EBOOKS_DIR Relative or absolute path of the directory containing the files to convert. Cannot be used when --ebook is present. --text TEXT Raw text for conversion. Cannot be used when --ebook or --ebooks_dir is present. --language LANGUAGE Language of the e-book. Default language is set in ./lib/lang.py sed as default if not present. All compatible language codes are in ./lib/lang.py
optional parameters: --translate ISO3 (Optional) Translate ebook to a target language (ISO 639-3 code, e.g. eng, fra, deu) before TTS synthesis. Uses argostranslate. The target language becomes the effective TTS language for the run. A copy of the source ebook is made with the _ suffix so translated and non-translated outputs stay isolated (independent process folder, audio chunks, and final file). --voice VOICE (Optional) Path to the voice cloning file for TTS engine. Uses the default voice if not present. --voice_map VOICE_MAP (Optional, --ebooks_dir only) Path to a JSON file mapping ebook path -> voice path. Each entry overrides --voice for that specific ebook. Missing/null entries fall back to --voice. Keys may be absolute paths or basenames. Example:
$ claude mcp add ebook2audiobook \
-- python -m otcore.mcp_server <graph>