Spaces:
Sleeping
Sleeping
title: Ebook2audiobookPiper-tts | |
colorFrom: purple | |
colorTo: red | |
sdk: gradio | |
sdk_version: 4.44.1 | |
app_file: app.py | |
pinned: true | |
license: mit | |
thumbnail: >- | |
https://cdn-uploads.huggingface.co/production/uploads/66903a229152b56774988b49/cQEAJx9leR79GMVsjwPWS.png | |
short_description: Converts Ebooks into audiobooks with piper-tts | |
emoji: πͺπ | |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference | |
![Piper logo](logo.png) | |
# π eBook to Audiobook Converter with Piper-tts | |
Convert eBooks to audiobooks effortlessly using a Docker container. This project leverages Calibre for eBook conversion and Piper-tts for text-to-speech, all wrapped in a Gradio interface. | |
## π Features | |
- **eBook Conversion:** Converts various eBook formats to text using Calibre. | |
- **Text-to-Speech:** High-quality TTS using eSpeak-ng with customizable voice, speed, and pitch. | |
- **Language Support:** Includes multiple languages and accents for TTS. | |
- **User-Friendly Interface:** Easy-to-use Gradio interface accessible via your web browser. | |
- **Dockerized:** Run the entire setup with a single Docker command. | |
- **High Speed** Get High speed audiobook generation on even a low end laptop. | |
## π Supported Languages | |
- **Arabic** (ar_JO) | |
- **Catalan** (ca_ES) | |
- **Czech** (cs_CZ) | |
- **Welsh** (cy_GB) | |
- **Danish** (da_DK) | |
- **German** (de_DE) | |
- **Greek** (el_GR) | |
- **English** (en_GB, en_US) | |
- **Spanish** (es_ES, es_MX) | |
- **Finnish** (fi_FI) | |
- **French** (fr_FR) | |
- **Hungarian** (hu_HU) | |
- **Icelandic** (is_IS) | |
- **Italian** (it_IT) | |
- **Georgian** (ka_GE) | |
- **Kazakh** (kk_KZ) | |
- **Luxembourgish** (lb_LU) | |
- **Nepali** (ne_NP) | |
- **Dutch** (nl_BE, nl_NL) | |
- **Norwegian** (no_NO) | |
- **Polish** (pl_PL) | |
- **Portuguese** (pt_BR, pt_PT) | |
- **Romanian** (ro_RO) | |
- **Russian** (ru_RU) | |
- **Serbian** (sr_RS) | |
- **Swedish** (sv_SE) | |
- **Swahili** (sw_CD) | |
- **Turkish** (tr_TR) | |
- **Ukrainian** (uk_UA) | |
- **Vietnamese** (vi_VN) | |
- **Chinese** (zh_CN) | |
## π₯ Demo | |
https://github.com/user-attachments/assets/7d2328b9-ac65-4485-b1b3-fe1006f041c6 | |
## π₯οΈ Gradio Web Gui | |
<img width="1363" alt="Screenshot 2024-08-30 at 12 17 41β―AM" src="https://github.com/user-attachments/assets/8515b9b2-1db2-4944-b12b-c3a6bfde1535"> | |
<img width="1365" alt="Screenshot 2024-08-30 at 12 17 51β―AM" src="https://github.com/user-attachments/assets/0dc196a9-5853-4194-9151-46fd92eff811"> | |
## π Quick Start | |
To quickly get started with this eBook to Audiobook converter, simply run the following Docker command: | |
```bash | |
docker run -it --rm -p 7860:7860 athomasson2/ebook2audiobookpiper-tts:latest | |
``` | |
This will start the Gradio interface on port `7860`. You can access it by navigating to `http://localhost:7860` in your web browser. | |
## π Offline Mode | |
For a fully offline experience with all Piper TTS voice models bundled, use the following Docker command: | |
```bash | |
docker run -it --rm -p 7860:7860 athomasson2/ebook2audiobookpiper-tts:latest_large | |
``` | |
This version comes preloaded with every Piper TTS voice model, ensuring that you can convert eBooks to audiobooks without needing an internet connection. Perfect for uninterrupted usage in any environment! | |
## ποΈ Gradio Interface Customizations | |
In the Gradio interface, you can customize the following settings for your audiobook conversion: | |
- **Speed:** Adjust the reading speed from 80 to 450 words per minute (default is 170). | |
- **Pitch:** Modify the pitch of the voice from 0 to 99 (default is 50). | |
- **Voice Selection:** Choose from a variety of voices and accents available in eSpeak-ng. | |
- **Audiobook Player:** Listen to the converted audiobook directly in the interface. | |
- **Download Audiobook:** Download the generated audiobook files directly to your device. | |
## π οΈ Building the Docker Image | |
If you prefer to build the Docker image yourself, use the following Dockerfile: | |
```dockerfile | |
# Use an official Python runtime as a parent image | |
FROM python:3.10-slim | |
# Install system dependencies for Calibre and ffmpeg | |
RUN apt-get update && \ | |
apt-get install -y calibre ffmpeg git nano wget unzip git && \ | |
rm -rf /var/lib/apt/lists/* | |
# Set the working directory | |
WORKDIR /app | |
#No do a git clone instead | |
RUN git clone https://github.com/DrewThomasson/ebook2audiobookpiper-tts.git | |
# Install Python packages | |
RUN pip install --no-cache-dir piper-tts pydub nltk beautifulsoup4 ebooklib tqdm spacy gradio | |
# Download the spaCy language model | |
RUN python -m spacy download en_core_web_sm | |
# Replace the NLTK folder with the backup | |
RUN echo "Replacing the nltk folder with the nltk folder backup I pulled from a docker image, just in case the nltk servers ever mess up." && \ | |
ZIP_URL="https://github.com/DrewThomasson/VoxNovel/blob/main/readme_files/nltk.zip?raw=true" && \ | |
TARGET_DIR="/usr/local/lib/python3.10/site-packages" && \ | |
TEMP_DIR=$(mktemp -d) && \ | |
wget -q -O "$TEMP_DIR/nltk.zip" "$ZIP_URL" && \ | |
unzip -q "$TEMP_DIR/nltk.zip" -d "$TEMP_DIR" && \ | |
rm -rf "$TARGET_DIR/nltk" && \ | |
mv "$TEMP_DIR/nltk" "$TARGET_DIR/nltk" && \ | |
rm -rf "$TEMP_DIR" && \ | |
echo "NLTK Files Replacement complete." | |
# Set the working directory | |
WORKDIR /app/ebook2audiobookpiper-tts | |
# NO USE THIS Default command | |
CMD ["python", "gradio_gui.py"] | |
#To run this docker on your computer run docker run -it athomasson2/ebook2audiobookpiper-tts | |
``` | |
To build the image, run: | |
```bash | |
docker build -t athomasson2/ebook2audiobookpiper-tts:latest . | |
``` | |
## π Enjoy | |
Explore the full power of this converter by running your Docker container. Customize the settings in the Gradio interface to suit your needs. | |
For more details and updates, visit the [DockerHub repository](https://hub.docker.com/repository/docker/athomasson2/ebook2audiobookpiper-tts). | |
## π Special Thanks | |
- **Piper-tts**: [Piper-tts on GitHub]([https://github.com/espeak-ng/espeak-ng](https://github.com/rhasspy/piper)) | |
- **Calibre**: [Calibre Website](https://calibre-ebook.com) |