Turn any EPUB into a high-quality audiobook using Microsoft Edge's free neural voices — no API key, no subscription, no cost.
Powered by the same engine behind Windows Narrator and Edge's Read Aloud — high-quality, natural-sounding speech.
Reads your EPUB's spine in the correct reading order and saves one MP3 per chapter, neatly numbered and named.
Optionally bundle all chapters into a single audiobook file with chapter markers — works in Overcast, Apple Books, and more.
Already-converted chapters are skipped on re-runs. Interrupted halfway? Just run again and pick up where you left off.
British, American, Australian, and dozens of other languages and accents. Browse them with --list-voices.
No cloud account, no API key, no usage limits. Edge TTS is called directly from the command line — same as your browser.
EPUBs are ZIP files containing HTML. The script extracts each chapter from the book's spine in reading order, strips navigation and style noise, and pulls clean plain text.
Each chapter's text is sent to Microsoft Edge's neural TTS service — the same engine that powers Edge's built-in Read Aloud. Free, no key required.
Each chapter is saved as a numbered MP3 (001_Introduction.mp3, etc.) in a folder named after your book.
With --m4b or --m4a, FFmpeg merges all chapters and embeds chapter markers so you can skip between them in any audiobook app.
# 1. Clone the repo git clone https://github.com/michaelsanford/Speak-EPUB.git cd speak-epub # 2. Create a virtual environment & install deps python -m venv venv .\venv\Scripts\Activate.ps1 pip install -r requirements.txt # 3. Optional: FFmpeg for M4B/M4A output winget install ffmpeg
If you see a script execution policy error, run Set-ExecutionPolicy -Scope CurrentUser RemoteSigned first.
# 1. Clone the repo git clone https://github.com/michaelsanford/Speak-EPUB.git cd speak-epub # 2. Create a virtual environment & install deps python3 -m venv venv source venv/bin/activate pip install -r requirements.txt # 3. Optional: FFmpeg for M4B/M4A output brew install ffmpeg
# 1. Clone the repo git clone https://github.com/michaelsanford/Speak-EPUB.git cd speak-epub # 2. Create a virtual environment & install deps python3 -m venv venv source venv/bin/activate pip install -r requirements.txt # 3. Optional: FFmpeg for M4B/M4A output sudo apt install ffmpeg # Debian/Ubuntu sudo dnf install ffmpeg # Fedora sudo pacman -S ffmpeg # Arch
# Basic — outputs numbered MP3s into a folder python speak.py "path/to/book.epub" # Single M4B audiobook file with chapter markers python speak.py "path/to/book.epub" --m4b # M4A (better Android compatibility) python speak.py "path/to/book.epub" --m4a # Choose a different voice python speak.py "path/to/book.epub" --voice en-US-AriaNeural # Custom output folder python speak.py "path/to/book.epub" --output my_audiobook # Browse available English voices python speak.py --list-voices # Browse voices for all languages python speak.py --list-voices --all-languages
Files are saved in a folder named after your book. Re-run at any time — already-converted chapters are skipped automatically.
The default is en-GB-RyanNeural (British male). Run --list-voices to see the full list of English voices, or add --all-languages for all 300+.