plycast
Convert books into multilingual audiobooks with context-aware LLM translation and text-to-speech. Turn PDF, DOCX, images, or text → translate → generate audio (MP3) in one pipeline.
🚀 At a glance
- 📚 Convert documents into translated audiobooks
- 🌍 Multilingual support with LLM-based translation
- 🧠 More natural, context-aware wording (better for listening)
- 🔌 Open-source, local-first, BYOK-friendly
Table of contents
About
What it’s for
- One workflow from a file on disk to translated text and audio—no need to chain many tools by hand.
- Fits drafts, articles, chapters, or scans you’d rather listen to in another language.
How you use it
- Terminal: run the
plycastcommand for quick jobs.
plycast tts examples/input/nhat-ky-nu-phap-y-c1.txt \
--lang vi --tts system_say --voice Linh
- Python: after
import plycastuse it in Python scripts
from pathlib import Path
from plycast import synthesize_book
r = synthesize_book(
Path("examples/input/nhat-ky-nu-phap-y-c1.txt"),
tts_language="vi",
tts="system_say",
voice="Linh",
audio_format="mp3",
)
print(r.audio_path)
Inputs
- Text and Markdown out of the box.
- PDF, Word, and images (e.g. photos of text) with a little extra setup.
Translation (pick what matches you)
- LibreTranslate (hosted or self-hosted): straightforward; good if you want to edit the text before audio.
- Large language models: geared toward natural, listenable wording when you’re fine using a vendor API and key.
Speech
- Uses voices already on your system where possible (e.g. Mac say, espeak-style on Linux).
- Optional neural voices if you install that stack.
Installation
Published package: plycast on PyPI.
Prerequisites
Before pip install, install anything below that matches what you will use. After installing system tools, open a new terminal (or restart the IDE) so PATH updates.
-
Python 3.10+ (3.11+ recommended)
- Where: python.org/downloads, your OS package manager, or a version manager (pyenv, conda, etc.).
- Check:
python3 --version(orpython --versionon Windows).
-
Virtual environment (recommended)
- How:
python3 -m venv .venvthensource .venv/bin/activate(macOS/Linux) or.venv\Scripts\activate(Windows). - Why: keeps
pip install plycastisolated from system Python.
- How:
-
Tesseract (only if you use image inputs for OCR)
- What: the
tesseractbinary on yourPATH(plycast installs pytesseract via pip, not the engine). - macOS (Homebrew):
brew install tesseract tesseract-lang - Debian / Ubuntu:
sudo apt install tesseract-ocr(add language packs, e.g.tesseract-ocr-chi-sim, as needed) - Windows: installer from the Tesseract at UB Mannheim wiki, or Chocolatey / winget packages named
tesseract. - Check:
tesseract --version
- What: the
-
ffmpeg (only if you want mp3 / m4a / aiff after WAV-based TTS)
- macOS (Homebrew):
brew install ffmpeg - Debian / Ubuntu:
sudo apt install ffmpeg - Windows:
winget install ffmpegor ffmpeg.org builds; ensureffmpegis onPATH. - Check:
ffmpeg -version
- macOS (Homebrew):
-
Speech backends (pick what matches
--tts):system_say: macOS only — uses the built-insaycommand; nothing to install.espeak: installespeak-ng(or legacyespeak) on yourPATH.- Debian / Ubuntu:
sudo apt install espeak-ng - macOS (Homebrew):
brew install espeak - Check:
espeak-ng --versionorespeak --version
- Debian / Ubuntu:
text_file: no audio engine.
-
Translation / APIs
- LibreTranslate: run your own server (e.g. Docker — see QuickStart → Self-hosted LibreTranslate) or use a host you trust; optional API key.
- LLM (OpenAI / Anthropic): create a key in the vendor console (OpenAI, Anthropic); export
OPENAI_API_KEYorANTHROPIC_API_KEY(details in QuickStart).
More env vars, CLI flags, and troubleshooting → docs/QuickStart.md.
Install with pip
-
Activate your virtual environment (see above).
-
Install the library and CLI:
pip install plycast
This pulls in core Python packages (Typer, Rich, Pillow, pytesseract, …). System tools (Tesseract, ffmpeg, etc.) stay separate—see Prerequisites.
-
Optional extras (pick what you need):
Extra Command Purpose PDF / Word pip install 'plycast[docs]'pypdf,python-docxfor.pdf/.docxParler TTS pip install 'plycast[parler]'Neural TTS (Parler-TTS, PyTorch, transformers, soundfile, … — large download). English-centric; see Voices.md. Docs + PDF/Word pip install 'plycast[full]'Same as [docs]todayDevelopment pip install 'plycast[dev]'pytest (for contributors) Parler troubleshooting: if
soundfilefails to install, install OS libsndfile first (macOS:brew install libsndfile; Debian/Ubuntu:sudo apt install libsndfile1), then re-runpip install 'plycast[parler]'. mp3 / m4a output still needs ffmpeg (see Prerequisites). -
From a git clone (editable install):
pip install -e ".[dev]"
Add
[docs]or[parler]as needed, e.g.pip install -e ".[dev,docs]".
Features
- Input:
.txt,.md; optional.pdf/.docx(pip install ".[docs]"); images with OCR and--source-langfor Tesseract languages (e.g.zh). - Translation: chunked text; LLM path for natural tone; LibreTranslate for a free, self-hostable draft you can review and edit; Identity, OpenAI, Anthropic, unified LLM routing (
LLMTranslator). - Audio:
SystemSayTTS(macOSsay);ParlerTTS/--tts parler(neural TTS, English-only for reliable quality; optionalpip install 'plycast[parler]', default on non-macOS when installed; seed voices +--parler-gender, or raw--voice);EspeakTTS/--tts espeak(espeak-ng, fallback when Parler is not installed);TextFileTTS/--tts text_fileanywhere. See docs/Voices.md. - CLI: flags for translator, languages, API keys, TTS, chunk size — docs/CLI.md (reference) and docs/QuickStart.md (tutorials).
Documentation
| Doc | Contents |
|---|---|
| docs/QuickStart.md | Install, prerequisites, CLI intro, LibreTranslate Docker, LLM examples, Python API, env vars, troubleshooting |
| docs/CLI.md | CLI reference: all commands and options (convert, translate, tts, inspect), outputs, translators, TTS backends, --json |
| docs/Voices.md | system_say (macOS) and espeak (Linux-friendly) voices / --voice |
| examples/README.md | Vietnamese sample: vi → en + Parler (laura) and vi + system_say (Linh) — CLI + Python |
| This README | Project introduction and layout |
Contributing
A contribution workflow (guidelines, review process, and what we merge) is in progress and not finalized yet — so we are not ready for pull requests or formal code contributions at this time.
Issues are welcome: please open an issue on GitHub for bugs, ideas, or questions.
License
Open-source. This project is released under the MIT License.
Metadata
Release files for plycast 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| plycast-0.1.2.tar.gz | 33.3 kB | With provenance | Details for plycast-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| plycast-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for plycast-0.1.2-py3-none-any.whl |
Total release size: 76.9 kB
Release files / plycast-0.1.2.tar.gz
| Download URL | plycast-0.1.2.tar.gz |
|---|---|
| Size | 33.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7a68437963d969f40a5d72584c9ba29f7eaae18877e51de33fe908682e34a019
|
|
BLAKE2b-256 checksum How to use checksums |
04a71f410ab555f0594b9c42499818daf96e3900a410fa2396a2e761fb14439d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logRelease files / plycast-0.1.2-py3-none-any.whl
| Download URL | plycast-0.1.2-py3-none-any.whl |
|---|---|
| Size | 43.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6eac63dedbb10f4e52365022d558f4a77d21ecd1aad0f4170b5729f63c6a3bc3
|
|
BLAKE2b-256 checksum How to use checksums |
ccf09ecad47c2785d4b574556bad1d0925fadeadcd874a575b16652d91e8291d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logSecurity for plycast 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for plycast-0.1.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.