Skip to main content

Convert EPUB e-books into high-quality audiobooks using multiple Text-to-Speech providers (Azure, Doubao)

Project description

EPUB to Speech

build pip install epub2speech pypi epub2speech python versions license

English | 中文

Convert EPUB e-books into high-quality audiobooks using multiple Text-to-Speech providers.

Features

  • 📚 EPUB Support: Compatible with EPUB 2 and EPUB 3 formats
  • 🎙️ Multiple TTS Providers: Supports Azure and Doubao TTS services
  • 🔄 Auto-Detection: Automatically detects configured provider
  • 🌍 Multi-Language Support: Supports various languages and voices
  • 📱 M4B Output: Generates standard M4B audiobook format with chapter navigation
  • 🔧 CLI Interface: Easy-to-use command-line tool with progress tracking

Basic Usage

epub2speech input.epub output.m4b --voice zh-CN-XiaoxiaoNeural

Installation

Prerequisites

  • Python 3.11 or higher
  • FFmpeg (for audio processing)
  • TTS provider credentials (Azure or Doubao)

Install Dependencies

# Install Python dependencies
pip install poetry
poetry install

# Install FFmpeg
# macOS: brew install ffmpeg
# Ubuntu/Debian: sudo apt install ffmpeg
# Windows: Download from https://ffmpeg.org/download.html

Quick Start

Option 1: Using Azure TTS

Set environment variables and run:

export AZURE_SPEECH_KEY="your-subscription-key"
export AZURE_SPEECH_REGION="your-region"

epub2speech input.epub output.m4b --voice zh-CN-XiaoxiaoNeural

Where to get credentials:

  • Create an Azure account at https://azure.microsoft.com
  • Create a Speech Service resource in Azure Portal
  • Get your subscription key and region from the dashboard

Available voices:

Option 2: Using Doubao TTS

Set environment variables and run:

export DOUBAO_ACCESS_TOKEN="your-access-token"
export DOUBAO_BASE_URL="your-api-base-url"

epub2speech input.epub output.m4b --voice zh_male_lengkugege_emo_v2_mars_bigtts

Where to get credentials:

  • Get your Doubao access token and API base URL from Volcengine console

Available voices: https://www.volcengine.com/docs/6561/1257544 (Find voice IDs in the Doubao TTS documentation)

Provider Auto-Detection

If you have configured only one provider, it will be automatically detected and used. If multiple providers are configured, specify which one to use:

# Explicitly use Azure
epub2speech input.epub output.m4b --provider azure --voice zh-CN-XiaoxiaoNeural

# Explicitly use Doubao
epub2speech input.epub output.m4b --provider doubao --voice zh_male_lengkugege_emo_v2_mars_bigtts

Advanced Options

General Options

# Limit to first 5 chapters
epub2speech input.epub output.m4b --voice zh-CN-XiaoxiaoNeural --max-chapters 5

# Use custom workspace directory
epub2speech input.epub output.m4b --voice zh-CN-YunxiNeural --workspace /tmp/my-workspace

# Quiet mode (no progress output)
epub2speech input.epub output.m4b --voice ja-JP-NanamiNeural --quiet

Azure TTS Configuration

Pass credentials via command-line arguments:

epub2speech input.epub output.m4b \
  --voice zh-CN-XiaoxiaoNeural \
  --azure-key YOUR_KEY \
  --azure-region YOUR_REGION

Doubao TTS Configuration

Pass credentials via command-line arguments:

epub2speech input.epub output.m4b \
  --voice zh_male_lengkugege_emo_v2_mars_bigtts \
  --doubao-token YOUR_TOKEN \
  --doubao-url YOUR_BASE_URL

How It Works

  1. EPUB Parsing: Extracts text content and metadata from EPUB files
  2. Chapter Detection: Identifies chapters using EPUB navigation data
  3. Text Processing: Cleans and segments text for optimal speech synthesis
  4. Audio Generation: Converts text to speech using your chosen TTS provider
  5. M4B Creation: Combines audio files with chapter metadata into M4B format

Development

Using as a Library

You can integrate epub2speech into your own Python application:

from pathlib import Path
from epub2speech import convert_epub_to_m4b, ConversionProgress
from epub2speech.tts.azure_provider import AzureTextToSpeech
# Or use: from epub2speech.tts.doubao_provider import DoubaoTextToSpeech

# Initialize TTS provider
tts = AzureTextToSpeech(
    subscription_key="your-key",
    region="your-region"
)

# Optional: Define progress callback
def on_progress(progress: ConversionProgress):
    print(f"{progress.progress:.1f}% - Chapter {progress.current_chapter}/{progress.total_chapters}")

# Convert EPUB to M4B
result = convert_epub_to_m4b(
    epub_path=Path("input.epub"),
    workspace=Path("./workspace"),
    output_path=Path("output.m4b"),
    tts_protocol=tts,
    voice="zh-CN-XiaoxiaoNeural",
    max_chapters=None,  # Optional: limit chapters
    progress_callback=on_progress  # Optional
)

if result:
    print(f"Success: {result}")

Running Tests

python test.py

Run specific test modules:

python test.py --test test_epub_picker
python test.py --test test_tts

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Support

For issues and questions:

  1. Check existing GitHub issues
  2. Create a new issue with detailed information
  3. Include EPUB file samples if relevant (ensure no copyright restrictions)”,“file_path”:

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

epub2speech-0.0.4.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

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

epub2speech-0.0.4-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

Details for the file epub2speech-0.0.4.tar.gz.

File metadata

  • Download URL: epub2speech-0.0.4.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.13.4 Darwin/25.1.0

File hashes

Hashes for epub2speech-0.0.4.tar.gz
Algorithm Hash digest
SHA256 d43fef0435efe0f8d1e01e568d77dbdfe6f9532b397f2efe0b7336dec17d1236
MD5 a4301b3b4d4b60ec8dbcec91cbc79eff
BLAKE2b-256 1149cb999f4867c7e4eaa80d3e9502ec0d2833b8bd5e165d817d56614ef823fa

See more details on using hashes here.

File details

Details for the file epub2speech-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: epub2speech-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 21.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.13.4 Darwin/25.1.0

File hashes

Hashes for epub2speech-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 34e41b1060bc6957c4b6c19f73f71f1237a324eadee82a84923e8ee3feb73477
MD5 c67d4d0300a6163c0ca1920a9487fc7c
BLAKE2b-256 10751b7c614cbcd454cfb21d2ce97f8ea372f4f1dd0e373c7d940ddfdf55ec35

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