A comprehensive audio-book creation studio where every character has a voice
Python
26
32 commits
updated Oct 15, 2026
PolyVox Studio turns books into audiobooks with distinct voices per character. It detects characters and dialogue, lets you assign voices (or clone your own), and renders polished audio via an intuitive desktop GUI.
Highlights
app/ui during migration)Clone the repo and run the platform installer. Each script creates a PolyVox virtual environment, installs the right PyTorch wheel (CUDA 12.8, CUDA 12.1, CUDA 11.8, or CPU), and pulls the remaining dependencies.
PolyVox/bin/python interpreter directly (prevents accidental use of base/conda Python).requirements_min.txt when something is missing.git clone https://github.com/dmarsh400/PolyVoxStudio.git
cd PolyVoxStudio
chmod +x install_linux.sh
./install_linux.sh
The installer will prompt for your preferred GPU runtime. See INSTALL_LINUX.md for prerequisites, optional system packages (FFmpeg/Tesseract), and troubleshooting tips.
git clone https://github.com/dmarsh400/PolyVoxStudio.git
cd PolyVoxStudio
.\install_windows.bat
You can also double-click install_windows.bat in Explorer. The batch file launches PowerShell with execution-policy bypass, then runs the full installer. Detailed notes live in INSTALL_WINDOWS.md.
Need CPU-only? Choose the CPU option when prompted. Unsure which CUDA runtime to pick? Check the GPU Support section below.
./run_gui.sh # Linux / macOS
On Linux, run_gui.sh automatically uses the local PolyVox environment if present and prints which Python executable is being used.
./run_gui.bat # Windows (double-click works too)
Book Processing
Import Book → select .txt / .pdf / .epub → Detect Chapters → (optionally) select 1–3 chapters to process first for best attribution.
Characters
Click Detect Characters → review/merge/rename characters → fix split/merged lines using split/merge tools.
Voices
Refresh Characters → assign built-in voices or Clone Voice using a clean 6–20 s sample → Send to Audio Processing.
Audio Processing
Select chapters/batches → choose output (defaults to /output/audio) → Export (per-chapter or M4B full audiobook).
Tip: Start with a few chapters to dial in detection & voices, then run the whole book.
Both installers prompt for a PyTorch runtime. Pick the option that matches your hardware:
| GPU Series / Setup | Runtime choice in installer | Notes |
|---|---|---|
| RTX 50-series (Blackwell) | CUDA 12.8 | Required for GB202/GB203 (RTX 5090/5080/5070/5060); driver ≥ 570 |
| RTX 40 / 30 / 20, GTX 16 | CUDA 12.1 | Latest features and fastest inference |
| RTX 10 / GTX 10 & older RTX | CUDA 11.8 | Best fit for earlier CUDA-capable cards |
| No NVIDIA GPU / Virtualized | CPU only | Works everywhere (slower) |
Driver baseline (NVIDIA): Ensure your driver supports the selected CUDA version (≥ 520 for CUDA 11.8, ≥ 535 for CUDA 12.1, ≥ 570 for CUDA 12.8). If in doubt, choose CPU to finish the install, then upgrade drivers and rerun the installer later.
Minimum
Nice to have
Join our official Discord server to chat with other users, share your generated audiobooks, request new features, or get help troubleshooting hardware and CUDA installation issues:
" quotes; try processing 1–3 chapters../run_gui.sh from the project root. v2.5 pins startup to the project interpreter and reports the active executable.PolyVox can self-check synthesized lines before finalizing them. The guard synthesizes a segment, transcribes it with Whisper (prefers faster-whisper), and compares the transcript with the expected text. If the similarity drops below a threshold, it can retry.
Enable it by exporting an environment variable before launching the app:
export POLYVOX_TTS_GUARD=on
Available modes:
on / true — guard every line.auto (default) — guard narrator lines only.narrator — identical to auto, explicit for readability.off / false — disable the guard entirely.Fine-tune behavior with optional overrides:
export POLYVOX_TTS_GUARD_THRESHOLD=0.9 # similarity target (0..1)
export POLYVOX_TTS_GUARD_RETRIES=2 # additional attempts if under threshold
export POLYVOX_TTS_GUARD_MODEL=base # Whisper size: base, small, medium, etc.
Voice definitions (e.g., JSON entries) can opt in/out per character using:
"hallucination_guard": true | false"guard_threshold": 0.88"guard_max_retries": 2"guard_model_size": "base.en"Dependencies: install
faster-whisperandrapidfuzzfor the fast path. The guard falls back gracefully if the packages are missing.
INSTALL_LINUX.mdINSTALL_WINDOWS.mdGPU_COMPATIBILITY.mdCONTRIBUTING.mdPDF_CHAPTER_DETECTION.mdPolyVox now includes advanced PDF chapter detection with:
👉 Full PDF Chapter Detection guide →
coqui-tts is no longer a dependency; f5-tts and PySide6 are (see requirements_min.txt).ref_text). Existing voices can be migrated with scripts/migrate_voices_to_f5.py (uses faster-whisper); new clones are transcribed once at clone time.app/ui_qt, launched by app/main.py). The CustomTkinter UI (app/ui) remains only for reference.QComboBox popups (which fail to render on some Linux window managers). The Split Line dialog now inserts a newline on Enter and confirms with Ctrl+Enter.* * *), or when tag/continuation cues point elsewhere."…," said X. "…" continuation, "went on/continued", action beats, vocative replies ("Charlie, …" is answered by Charlie), and short answers to tagged questions."Why, Zack?").booknlp_character_debug diagnostics block explaining inclusions.app/core/emotion_cues.py), with adverbs scaling intensity. Supported: angry, fearful, happy, sad, surprised, disgusted.app/core/data/emosteer/. RAVDESS is licensed CC BY-NC-SA 4.0 (non-commercial). If anything fails, lines fall back to neutral synthesis.BASE_ALPHA in app/core/emosteer.py (default 8; values of ~16 and above degrade audio).NARRATOR_* constants in app/core/voices.py).requirements_min.txt now installs f5-tts and PySide6; the launchers check for them and auto-repair.Upgrading from 2.x: re-run the installer (or
pip install -r requirements_min.txt) and re-run chapter detection; cached detections from older versions are not reused. Voice reference files are not distributed with the repo — add your own undervoices/references/.
PRs welcome! See CONTRIBUTING.md for style, tests, and PR checklist.
MIT — see LICENSE.
27 followers · starred Oct 2025
A comprehensive audio-book creation studio where every character has a voice
Python
26
32 commits
updated Oct 15, 2026
PolyVox Studio turns books into audiobooks with distinct voices per character. It detects characters and dialogue, lets you assign voices (or clone your own), and renders polished audio via an intuitive desktop GUI.
Highlights
app/ui during migration)Clone the repo and run the platform installer. Each script creates a PolyVox virtual environment, installs the right PyTorch wheel (CUDA 12.8, CUDA 12.1, CUDA 11.8, or CPU), and pulls the remaining dependencies.
PolyVox/bin/python interpreter directly (prevents accidental use of base/conda Python).requirements_min.txt when something is missing.git clone https://github.com/dmarsh400/PolyVoxStudio.git
cd PolyVoxStudio
chmod +x install_linux.sh
./install_linux.sh
The installer will prompt for your preferred GPU runtime. See INSTALL_LINUX.md for prerequisites, optional system packages (FFmpeg/Tesseract), and troubleshooting tips.
git clone https://github.com/dmarsh400/PolyVoxStudio.git
cd PolyVoxStudio
.\install_windows.bat
You can also double-click install_windows.bat in Explorer. The batch file launches PowerShell with execution-policy bypass, then runs the full installer. Detailed notes live in INSTALL_WINDOWS.md.
Need CPU-only? Choose the CPU option when prompted. Unsure which CUDA runtime to pick? Check the GPU Support section below.
./run_gui.sh # Linux / macOS
On Linux, run_gui.sh automatically uses the local PolyVox environment if present and prints which Python executable is being used.
./run_gui.bat # Windows (double-click works too)
Book Processing
Import Book → select .txt / .pdf / .epub → Detect Chapters → (optionally) select 1–3 chapters to process first for best attribution.
Characters
Click Detect Characters → review/merge/rename characters → fix split/merged lines using split/merge tools.
Voices
Refresh Characters → assign built-in voices or Clone Voice using a clean 6–20 s sample → Send to Audio Processing.
Audio Processing
Select chapters/batches → choose output (defaults to /output/audio) → Export (per-chapter or M4B full audiobook).
Tip: Start with a few chapters to dial in detection & voices, then run the whole book.
Both installers prompt for a PyTorch runtime. Pick the option that matches your hardware:
| GPU Series / Setup | Runtime choice in installer | Notes |
|---|---|---|
| RTX 50-series (Blackwell) | CUDA 12.8 | Required for GB202/GB203 (RTX 5090/5080/5070/5060); driver ≥ 570 |
| RTX 40 / 30 / 20, GTX 16 | CUDA 12.1 | Latest features and fastest inference |
| RTX 10 / GTX 10 & older RTX | CUDA 11.8 | Best fit for earlier CUDA-capable cards |
| No NVIDIA GPU / Virtualized | CPU only | Works everywhere (slower) |
Driver baseline (NVIDIA): Ensure your driver supports the selected CUDA version (≥ 520 for CUDA 11.8, ≥ 535 for CUDA 12.1, ≥ 570 for CUDA 12.8). If in doubt, choose CPU to finish the install, then upgrade drivers and rerun the installer later.
Minimum
Nice to have
Join our official Discord server to chat with other users, share your generated audiobooks, request new features, or get help troubleshooting hardware and CUDA installation issues:
" quotes; try processing 1–3 chapters../run_gui.sh from the project root. v2.5 pins startup to the project interpreter and reports the active executable.PolyVox can self-check synthesized lines before finalizing them. The guard synthesizes a segment, transcribes it with Whisper (prefers faster-whisper), and compares the transcript with the expected text. If the similarity drops below a threshold, it can retry.
Enable it by exporting an environment variable before launching the app:
export POLYVOX_TTS_GUARD=on
Available modes:
on / true — guard every line.auto (default) — guard narrator lines only.narrator — identical to auto, explicit for readability.off / false — disable the guard entirely.Fine-tune behavior with optional overrides:
export POLYVOX_TTS_GUARD_THRESHOLD=0.9 # similarity target (0..1)
export POLYVOX_TTS_GUARD_RETRIES=2 # additional attempts if under threshold
export POLYVOX_TTS_GUARD_MODEL=base # Whisper size: base, small, medium, etc.
Voice definitions (e.g., JSON entries) can opt in/out per character using:
"hallucination_guard": true | false"guard_threshold": 0.88"guard_max_retries": 2"guard_model_size": "base.en"Dependencies: install
faster-whisperandrapidfuzzfor the fast path. The guard falls back gracefully if the packages are missing.
INSTALL_LINUX.mdINSTALL_WINDOWS.mdGPU_COMPATIBILITY.mdCONTRIBUTING.mdPDF_CHAPTER_DETECTION.mdPolyVox now includes advanced PDF chapter detection with:
👉 Full PDF Chapter Detection guide →
coqui-tts is no longer a dependency; f5-tts and PySide6 are (see requirements_min.txt).ref_text). Existing voices can be migrated with scripts/migrate_voices_to_f5.py (uses faster-whisper); new clones are transcribed once at clone time.app/ui_qt, launched by app/main.py). The CustomTkinter UI (app/ui) remains only for reference.QComboBox popups (which fail to render on some Linux window managers). The Split Line dialog now inserts a newline on Enter and confirms with Ctrl+Enter.* * *), or when tag/continuation cues point elsewhere."…," said X. "…" continuation, "went on/continued", action beats, vocative replies ("Charlie, …" is answered by Charlie), and short answers to tagged questions."Why, Zack?").booknlp_character_debug diagnostics block explaining inclusions.app/core/emotion_cues.py), with adverbs scaling intensity. Supported: angry, fearful, happy, sad, surprised, disgusted.app/core/data/emosteer/. RAVDESS is licensed CC BY-NC-SA 4.0 (non-commercial). If anything fails, lines fall back to neutral synthesis.BASE_ALPHA in app/core/emosteer.py (default 8; values of ~16 and above degrade audio).NARRATOR_* constants in app/core/voices.py).requirements_min.txt now installs f5-tts and PySide6; the launchers check for them and auto-repair.Upgrading from 2.x: re-run the installer (or
pip install -r requirements_min.txt) and re-run chapter detection; cached detections from older versions are not reused. Voice reference files are not distributed with the repo — add your own undervoices/references/.
PRs welcome! See CONTRIBUTING.md for style, tests, and PR checklist.
MIT — see LICENSE.
27 followers · starred Oct 2025