TTS-Story is a web-based multi‑voice TTS studio for turning tagged scripts into audiobooks—featuring full speaker management, chunk review/regeneration, a job queue and library system, and local GPU or API backends including Kokoro, Chatterbox, VOX CPM, Pocket-TTS, Kitten-TTS, IndexTTS-2, QWEN3 TTS and Omnivoice engines
332
stars
69
commits
Python
primary language
Aug 31, 2026
updated
We are deeply grateful to everyone who uses, shares, contributes to, and supports TTS-Story. Your encouragement helps us continue improving the project and keeping it freely available to the community.
If you appreciate what we do and would like to support ongoing development:
👉 Support TTS-Story and our other projects
TTS-Story is a web-based, multi-voice text-to-speech application for creating narrated stories and audiobooks. It supports local CPU and GPU models, hosted speech providers, speaker tagging, voice cloning, optional LLM-assisted text preparation, chapter collections, chunk-level repair, and MP3/M4B export workflows.
[narrator]...[/narrator] and [alice-female]...[/alice-female].Initial setup installs the lightweight TTS-Story application, shared audio tools, and core dependencies. It no longer downloads every local TTS engine or its model stack.
On first launch, the welcome guide directs you to Settings → Engine Settings. Local engines can be installed individually with Install Engine; each local engine receives its own virtual environment and model/cache folder so its dependency versions cannot alter another engine or the TTS-Story core. Connected engines become available after their required server address, API key, model, or service settings are saved. Engine tabs are red when setup is required and green when ready. Only ready engines appear in the Generate-page engine selector. Installed local engines can also be removed from the same panel; TTS-Story warns before deleting that engine's isolated runtime and model downloads while keeping projects, generated audio, settings, and saved voices. Installation and removal logs remain visible after navigation or refresh, and TTS-Story offers an in-app backend restart when a completed engine change requires it.
install-update.bat and allow setup to finish.run.bat.The Windows installer manages the required Python 3.11 core environment. When you later install a local engine from Engine Settings, its installer selects compatible CPU or NVIDIA CUDA packages where that engine supports them, including RTX 50-series/Blackwell handling.
git clone https://github.com/Xerophayze/TTS-Story.git
cd TTS-Story
chmod +x install-update.sh run.sh
./install-update.sh
./run.sh
Linux/macOS setup supports Python 3.9 through 3.12. Apple Silicon uses unified memory rather than a separate VRAM pool; supported engines may use MPS, while the heavier CUDA-focused engines can be substantially slower on CPU.
If an older Pinokio installation stopped partway through setup, use Factory Reset and install again.
Run install-update.bat on Windows, ./install-update.sh on Linux/macOS, or select Update in Pinokio. Normal updates reuse healthy environments and reconcile the core application without automatically installing optional engines.
For a comprehensive repair:
# Windows
setup.bat --repair
# Linux/macOS
./setup.sh --repair
TTS-Story exposes nineteen normal generation choices. Qwen3 VoiceDesign and OmniVoice Design are additional Voice Creation workflows rather than full-job engines.
The figures below are practical planning ranges for the current adapters and default precision, not guaranteed minimums. Free VRAM matters: an 8 GB card with 2 GB already occupied does not provide 8 GB to the model.
| Local engine | Processing support | Approximate free VRAM to plan for | CPU-only use | Important notes |
|---|---|---|---|---|
| Kokoro-82M | CPU or NVIDIA CUDA | 0 GB required; allow roughly 1–2 GB when using CUDA | Practical | Lightweight built-in voices and local blends. |
| Chatterbox Turbo | NVIDIA CUDA recommended | About 8 GB | Selectable, but slow | English voice cloning in an isolated environment, avoiding Qwen3 dependency conflicts. |
| VoxCPM 1.5 | NVIDIA CUDA recommended | About 6 GB | Selectable, but impractical for long books | English/Chinese cloning; automatic transcription can add memory overhead. |
| Qwen3-TTS CustomVoice / Clone | NVIDIA CUDA recommended | Roughly 6–8 GB in bf16/fp16; 8 GB+ recommended | Selectable, but impractical for long books | Each mode normally loads its own 1.7B model. |
| OmniVoice Clone | NVIDIA CUDA, Apple MPS, or CPU | Roughly 4–6 GB in float16; 8 GB is safer | Supported, but extremely slow | Isolated environment; transcription or float32 can increase memory use. |
| Pocket TTS Preset / Clone | CPU only | 0 GB | Designed for CPU | English-only in the current adapter. |
| KittenTTS | CPU only | 0 GB | Designed for CPU | Eight English voices; model variants are approximately 25–80 MB. |
| IndexTTS | NVIDIA CUDA strongly recommended | Roughly 6–8 GB with FP16; allow 10–12 GB for FP32 | Selectable, but very slow | English/Chinese zero-shot cloning in an isolated environment. |
| Dot.TTS | NVIDIA CUDA strongly recommended | Plan for roughly 10–12 GB | Installation may work, but inference can be impractical | 2B-parameter, 48 kHz cloning model with multi-GB downloads. |
| Audio8 TTS 0.6B | NVIDIA CUDA recommended; CPU fallback | Benchmark pending; the BF16 model is compact but codec and generation state add overhead | Available in FP32, but potentially slow | 44.1 kHz multilingual cloning; exact reference transcript required; sentence-preserving soft and hard chunk limits. |
Cloud engines perform model inference remotely and therefore require no local TTS VRAM. Normal system RAM and CPU are still used for text handling, downloads, effects, merging, and encoding.
| Cloud engine | Local VRAM | Account or service requirement | Main consideration |
|---|---|---|---|
| Kokoro · Replicate | 0 GB | Replicate API token and billing/credits | Provider queues and prediction charges apply. |
| Chatterbox · Replicate | 0 GB | Replicate API token and billing/credits | Text and assigned reference audio are sent to Replicate. |
| Microsoft Azure Speech | 0 GB | Azure Speech key, matching region, and quota | Supported regional service with usage billing. |
| Microsoft Edge TTS | 0 GB | Internet connection; no API key | Experimental consumer endpoint with no availability guarantee. |
| ElevenLabs | 0 GB | API key, model/voice access, and character quota | Subscription and concurrency limits apply. |
| OpenAI-compatible TTS | 0 GB | Compatible endpoint, model, voice, and key when required | Cost and capabilities depend on the endpoint. |
| LocalAI TTS | Depends on the LocalAI host | Running LocalAI server with a TTS model; key only if authentication is enabled | Discovers TTS models and saved profiles, while also accepting freeform voice/speaker IDs and language values for models that do not advertise a voice catalog. |
VRAM use changes with precision, attention backend, chunk length, transcription device, drivers, and other loaded applications. FP16/bfloat16 generally use less memory than float32. NVIDIA CUDA is the primary tested path for the heavier local engines. Setup detects and validates optional FlashAttention 2 for Qwen3; when its CUDA/C++ build toolchain is unavailable, TTS-Story automatically uses PyTorch SDPA acceleration instead.
For model-specific controls, languages, privacy, and limitations, see the Engine Reference and Comparison.
The complete screenshot-guided workflow is available in Generate Your First Audio. See Install, Remove, and Reinstall TTS Engines for optional-engine management and LocalAI TTS for self-hosted speech setup.
Engine installation, removal, and backend restart remain localhost-only unless authenticated remote administration is explicitly enabled. This supports trusted LAN and reverse-proxy deployments without exposing destructive management actions by default.
Voice prompts can be renamed, previewed, filtered, bulk-uploaded, and reused across compatible engines. TTS-Story also provides access to the external TTS Samples library.
See Reference Voice Prompts and Assign and Test Voices for the complete workflow.
Use matching opening and closing tags:
[narrator]The wind moved through the trees.[/narrator]
[alice-female]Did you hear that?[/alice-female]
[marcus-male]Stay close. I'll check outside.[/marcus-male]
Speaker names may contain letters, numbers, underscores, and hyphens. When valid speaker-tagged blocks are present, untagged story text may not be synthesized, so review all tags before generating.
See Speaker and Expression Tags.
To collect exact installed package and model information for troubleshooting:
python scripts/engine_versions.py
Use python scripts/engine_versions.py --json for machine-readable output. See Performance Tuning and Generation Time and ETA for more detail.
Open the Help tab inside TTS-Story for searchable, screenshot-guided instructions. The ? buttons beside interface controls open the relevant article directly. The same documentation is available under docs/help.
Useful starting points:
Common first actions:
setup.bat --repair or ./setup.sh --repair when an environment is damaged.Settings and API keys are saved locally in config.json. The file is excluded from Git so personal settings do not block updates, but its contents are plain text. Never commit it, share it, or attach it to a public issue.
Local engines keep manuscript text and synthesis on the computer after required downloads. Cloud TTS providers receive the text they synthesize, and cloud cloning services may also receive reference audio. Cloud LLM providers receive the portions sent through Prep Text.
See Local Data, API Keys, and Backups and Configure Online Services Safely.
Apache 2.0.
For bugs, feature requests, or questions, open an issue on the TTS-Story GitHub repository.
69 commits
Python
50.8%
JavaScript
33.4%
HTML
7.4%
CSS
4.5%
Batchfile
2.1%
Shell
1.8%
TTS-Story is a web-based multi‑voice TTS studio for turning tagged scripts into audiobooks—featuring full speaker management, chunk review/regeneration, a job queue and library system, and local GPU or API backends including Kokoro, Chatterbox, VOX CPM, Pocket-TTS, Kitten-TTS, IndexTTS-2, QWEN3 TTS and Omnivoice engines
332
stars
69
commits
Python
primary language
Aug 31, 2026
updated
We are deeply grateful to everyone who uses, shares, contributes to, and supports TTS-Story. Your encouragement helps us continue improving the project and keeping it freely available to the community.
If you appreciate what we do and would like to support ongoing development:
👉 Support TTS-Story and our other projects
TTS-Story is a web-based, multi-voice text-to-speech application for creating narrated stories and audiobooks. It supports local CPU and GPU models, hosted speech providers, speaker tagging, voice cloning, optional LLM-assisted text preparation, chapter collections, chunk-level repair, and MP3/M4B export workflows.
[narrator]...[/narrator] and [alice-female]...[/alice-female].Initial setup installs the lightweight TTS-Story application, shared audio tools, and core dependencies. It no longer downloads every local TTS engine or its model stack.
On first launch, the welcome guide directs you to Settings → Engine Settings. Local engines can be installed individually with Install Engine; each local engine receives its own virtual environment and model/cache folder so its dependency versions cannot alter another engine or the TTS-Story core. Connected engines become available after their required server address, API key, model, or service settings are saved. Engine tabs are red when setup is required and green when ready. Only ready engines appear in the Generate-page engine selector. Installed local engines can also be removed from the same panel; TTS-Story warns before deleting that engine's isolated runtime and model downloads while keeping projects, generated audio, settings, and saved voices. Installation and removal logs remain visible after navigation or refresh, and TTS-Story offers an in-app backend restart when a completed engine change requires it.
install-update.bat and allow setup to finish.run.bat.The Windows installer manages the required Python 3.11 core environment. When you later install a local engine from Engine Settings, its installer selects compatible CPU or NVIDIA CUDA packages where that engine supports them, including RTX 50-series/Blackwell handling.
git clone https://github.com/Xerophayze/TTS-Story.git
cd TTS-Story
chmod +x install-update.sh run.sh
./install-update.sh
./run.sh
Linux/macOS setup supports Python 3.9 through 3.12. Apple Silicon uses unified memory rather than a separate VRAM pool; supported engines may use MPS, while the heavier CUDA-focused engines can be substantially slower on CPU.
If an older Pinokio installation stopped partway through setup, use Factory Reset and install again.
Run install-update.bat on Windows, ./install-update.sh on Linux/macOS, or select Update in Pinokio. Normal updates reuse healthy environments and reconcile the core application without automatically installing optional engines.
For a comprehensive repair:
# Windows
setup.bat --repair
# Linux/macOS
./setup.sh --repair
TTS-Story exposes nineteen normal generation choices. Qwen3 VoiceDesign and OmniVoice Design are additional Voice Creation workflows rather than full-job engines.
The figures below are practical planning ranges for the current adapters and default precision, not guaranteed minimums. Free VRAM matters: an 8 GB card with 2 GB already occupied does not provide 8 GB to the model.
| Local engine | Processing support | Approximate free VRAM to plan for | CPU-only use | Important notes |
|---|---|---|---|---|
| Kokoro-82M | CPU or NVIDIA CUDA | 0 GB required; allow roughly 1–2 GB when using CUDA | Practical | Lightweight built-in voices and local blends. |
| Chatterbox Turbo | NVIDIA CUDA recommended | About 8 GB | Selectable, but slow | English voice cloning in an isolated environment, avoiding Qwen3 dependency conflicts. |
| VoxCPM 1.5 | NVIDIA CUDA recommended | About 6 GB | Selectable, but impractical for long books | English/Chinese cloning; automatic transcription can add memory overhead. |
| Qwen3-TTS CustomVoice / Clone | NVIDIA CUDA recommended | Roughly 6–8 GB in bf16/fp16; 8 GB+ recommended | Selectable, but impractical for long books | Each mode normally loads its own 1.7B model. |
| OmniVoice Clone | NVIDIA CUDA, Apple MPS, or CPU | Roughly 4–6 GB in float16; 8 GB is safer | Supported, but extremely slow | Isolated environment; transcription or float32 can increase memory use. |
| Pocket TTS Preset / Clone | CPU only | 0 GB | Designed for CPU | English-only in the current adapter. |
| KittenTTS | CPU only | 0 GB | Designed for CPU | Eight English voices; model variants are approximately 25–80 MB. |
| IndexTTS | NVIDIA CUDA strongly recommended | Roughly 6–8 GB with FP16; allow 10–12 GB for FP32 | Selectable, but very slow | English/Chinese zero-shot cloning in an isolated environment. |
| Dot.TTS | NVIDIA CUDA strongly recommended | Plan for roughly 10–12 GB | Installation may work, but inference can be impractical | 2B-parameter, 48 kHz cloning model with multi-GB downloads. |
| Audio8 TTS 0.6B | NVIDIA CUDA recommended; CPU fallback | Benchmark pending; the BF16 model is compact but codec and generation state add overhead | Available in FP32, but potentially slow | 44.1 kHz multilingual cloning; exact reference transcript required; sentence-preserving soft and hard chunk limits. |
Cloud engines perform model inference remotely and therefore require no local TTS VRAM. Normal system RAM and CPU are still used for text handling, downloads, effects, merging, and encoding.
| Cloud engine | Local VRAM | Account or service requirement | Main consideration |
|---|---|---|---|
| Kokoro · Replicate | 0 GB | Replicate API token and billing/credits | Provider queues and prediction charges apply. |
| Chatterbox · Replicate | 0 GB | Replicate API token and billing/credits | Text and assigned reference audio are sent to Replicate. |
| Microsoft Azure Speech | 0 GB | Azure Speech key, matching region, and quota | Supported regional service with usage billing. |
| Microsoft Edge TTS | 0 GB | Internet connection; no API key | Experimental consumer endpoint with no availability guarantee. |
| ElevenLabs | 0 GB | API key, model/voice access, and character quota | Subscription and concurrency limits apply. |
| OpenAI-compatible TTS | 0 GB | Compatible endpoint, model, voice, and key when required | Cost and capabilities depend on the endpoint. |
| LocalAI TTS | Depends on the LocalAI host | Running LocalAI server with a TTS model; key only if authentication is enabled | Discovers TTS models and saved profiles, while also accepting freeform voice/speaker IDs and language values for models that do not advertise a voice catalog. |
VRAM use changes with precision, attention backend, chunk length, transcription device, drivers, and other loaded applications. FP16/bfloat16 generally use less memory than float32. NVIDIA CUDA is the primary tested path for the heavier local engines. Setup detects and validates optional FlashAttention 2 for Qwen3; when its CUDA/C++ build toolchain is unavailable, TTS-Story automatically uses PyTorch SDPA acceleration instead.
For model-specific controls, languages, privacy, and limitations, see the Engine Reference and Comparison.
The complete screenshot-guided workflow is available in Generate Your First Audio. See Install, Remove, and Reinstall TTS Engines for optional-engine management and LocalAI TTS for self-hosted speech setup.
Engine installation, removal, and backend restart remain localhost-only unless authenticated remote administration is explicitly enabled. This supports trusted LAN and reverse-proxy deployments without exposing destructive management actions by default.
Voice prompts can be renamed, previewed, filtered, bulk-uploaded, and reused across compatible engines. TTS-Story also provides access to the external TTS Samples library.
See Reference Voice Prompts and Assign and Test Voices for the complete workflow.
Use matching opening and closing tags:
[narrator]The wind moved through the trees.[/narrator]
[alice-female]Did you hear that?[/alice-female]
[marcus-male]Stay close. I'll check outside.[/marcus-male]
Speaker names may contain letters, numbers, underscores, and hyphens. When valid speaker-tagged blocks are present, untagged story text may not be synthesized, so review all tags before generating.
See Speaker and Expression Tags.
To collect exact installed package and model information for troubleshooting:
python scripts/engine_versions.py
Use python scripts/engine_versions.py --json for machine-readable output. See Performance Tuning and Generation Time and ETA for more detail.
Open the Help tab inside TTS-Story for searchable, screenshot-guided instructions. The ? buttons beside interface controls open the relevant article directly. The same documentation is available under docs/help.
Useful starting points:
Common first actions:
setup.bat --repair or ./setup.sh --repair when an environment is damaged.Settings and API keys are saved locally in config.json. The file is excluded from Git so personal settings do not block updates, but its contents are plain text. Never commit it, share it, or attach it to a public issue.
Local engines keep manuscript text and synthesis on the computer after required downloads. Cloud TTS providers receive the text they synthesize, and cloud cloning services may also receive reference audio. Cloud LLM providers receive the portions sent through Prep Text.
See Local Data, API Keys, and Backups and Configure Online Services Safely.
Apache 2.0.
For bugs, feature requests, or questions, open an issue on the TTS-Story GitHub repository.
69 commits
Python
50.8%
JavaScript
33.4%
HTML
7.4%
CSS
4.5%
Batchfile
2.1%
Shell
1.8%