IndexTTS 2.5 Premium - The Complete Beginner-to-Advanced Guide
App Download Link
Quick Info
Voice cloning, long-form narration, caption-timed audio and MP4, batch production, dataset preparation, LoRA/DoRA training, checkpoint evaluation, listening grids, speaking-rate calibration, and low-VRAM operation - all in one tested workflow.
V6 maintenance update: the main workflows and registered settings remain compatible with the screenshots, while the following user-visible behavior is new or corrected.
- Record a reference directly from the browser microphone, alongside upload, local-path, library, adapter, and recent-output sources.
- Local media paths are staged safely for browser playback, and unsupported video codecs receive an FFmpeg-generated browser preview without changing the audio used for cloning.
- Voice Generation now defaults to in-process model reuse; isolated subprocess mode remains available when hard cancellation and complete VRAM release matter more than repeat-run speed.
- Candidate players, dataset reference players, feature-cache handoff, completed batch summaries, CPU diagnostics, and narrow-screen header controls now restore or update reliably.
- A lazy-rendered Changelog tab now keeps the public v6.0-to-v4.0 release history and official SECourses project links inside the app.
Choose a route:
- Beginner route: install, choose a reference, enter text, and generate a first voice.
- Production route: control segmentation, pauses, subtitles, emotion, duration, formats, and batches.
- Voice-training route: prepare clean data, cache features, train LoRA or DoRA, evaluate checkpoints, and deploy the best adapter.
- Hardware route: choose a VRAM tier, BF16 or INT8, block swapping, auxiliary-model residency, and verify the setup with the isolated benchmark.
1. Install and Start the App
Windows one-click install or update

Place the downloaded package in a short writable path such as G:\Index_TTS_v4. Before the first install, provide Python 3.12.10 or newer, Git, FFmpeg, CUDA 13.0, cuDNN 9.17 or newer, and Visual Studio Community with the C++ workload. Then run Windows_Install_or_Update.bat.
The installer clones or updates Premium_IndexTTS2_SECourses, creates its Python 3.12 virtual environment, installs uv, resolves the requirements, and runs the model downloader. If it detects local source changes, it deliberately skips git pull rather than overwriting them.
- Run
Windows_Install_or_Update.bat once for a fresh install and again whenever an update is announced.
- Run
Windows_Start_App.bat for normal use. It activates the environment, configures the CUDA allocator and model cache, and launches the Gradio UI.
- Wait for the local URL, normally
http://127.0.0.1:7860, and open it in a browser.
- For a specific GPU, add
set CUDA_VISIBLE_DEVICES=1 to the start BAT or launch python webui.py --device cuda:1 from the activated environment.
Useful launch flags are --port, --host, --share, --model_dir, --verbose, --no-browser, and --device. For example:
Windows_Start_App.bat --port 7861 --device cuda:0 --no-browser
Linux, RunPod, SimplePod, and Massed Compute
Use the supplied RunPod_Install_IndexTTS.sh or Massed_Compute_Install.sh, then follow the matching instruction text file in the package. The current Linux installers require root or sudo, install aria2, xz, Git LFS, and FFmpeg/ffprobe n9.0, provision a current Python 3.12 environment, install the application requirements, and download the IndexTTS 2.5 models. The Linux launcher then enters the app folder, activates venv/bin/activate, clears a conflicting LD_LIBRARY_PATH, and starts Gradio with --share. Keep the generated public Gradio link private because anyone who has it can use the running GPU.
bash Linux_Start_App.sh --device cuda:0
If startup reports missing model files, run Windows_Model_Download_and_Fix.bat on Windows or use Models & Performance > Download / verify base models after the interface opens.
2. Know the Workspace Before Generating
The header controls reusable settings; the tab row separates generation, batch work, dataset preparation, training, checkpoint comparison, performance, help, and release history. A fresh V6 install selects the quality preset automatically; an updated installation restores its last-used preset. Start in Voice Generation and keep the quality preset for the first successful output.

Figure 1. The first screen is a working console, not a landing page: reference and text are on the left and center, while run controls, progress, results, and logs stay on the right. Open / close all sections is the fastest way to expose or collapse advanced controls.
At startup, earlier result panels stay clean. Load last values restores the most recently saved values across every tab. A system preset is marked with a star and is read-only; a user preset can be created, overwritten, loaded, or deleted. Reset returns the registered controls to the system default preset without deleting model files or generated outputs.
- Voice Generation: one script, one reference workflow, optional candidates and media output.
- Batch Generation: many TXT, SRT, VTT, or SBV jobs with shared or per-file references.
- LoRA Dataset Preparation: turn raw audio/video/captions into quality-controlled training clips.
- LoRA / DoRA Training: train, validate, sample, save, resume, analyze, and manage adapters.
- Checkpoint Grid: compare base, recommended, final, and epoch checkpoints with identical inputs.
- Models & Performance: fit the model to the GPU, verify files, and benchmark real VRAM use.
- Help: embedded quick starts, parameter guidance, pause syntax, and recovery steps.
- Changelog: read newest-first release notes and open the official Patreon or GitHub project pages.
3. Make the First Voice Clone
Choose the speaker and write the script
Use a clean, single-speaker reference with little music, reverb, or room noise. Eight to fifteen seconds is a strong starting point. Audio, video, and direct microphone recording are accepted; video is decoded through FFmpeg and the audio preview shows the exact material generation will use.

Figure 2. Upload or drop the reference, type the script, choose its language, and press Generate voice. V6 also places a Record from microphone accordion directly beneath the upload surface. The right column exposes cancellation, progress, current item, speed, ETA, the generated player, and the last 60 log lines.
- Drop an audio or video file into Reference Voice, expand Record from microphone and record a WAV in the browser, or enter an existing local path in Reference media path and press Load path. Stop the microphone recording before generating; the recorded WAV becomes the active Reference Voice.
- If only part of a long source is clean, enter ranges such as
1:4;7.5:12 or 01:02-01:08, then press Extract ranges. Ranges are joined in the order written.
- Type the words to synthesize. Match Language to the script, not necessarily to the reference speaker.
- Keep Max tokens per segment on Auto or the language-aware default for the first run.
- Press Generate voice and do not close the terminal while the worker is active.
The Reference audio library scans reference_audios. Refresh rescans it and Load path applies the selected entry. When no manual reference is present, an enabled LoRA/DoRA can supply its recommended reference automatically; otherwise the newest compatible library file is the final fallback. Clear removes uploads, recordings, previews, the path field, and the current manual selection.
For a local path outside the app's normal output, dataset, adapter, reference, or temporary folders, V6 stages a browser-safe hard link or copy under .ui_state/reference_media. A video whose codec cannot play directly in the browser receives a cached preview under .ui_state/reference_video_previews; generation still uses the audio extracted from the original source.
Understand automatic text segmentation
Long input is split before synthesis so each section stays inside the model and VRAM budget. The live preview shows section number, type, text or pause, and details before you commit GPU time.

Figure 3. Shorter segments are safer on low VRAM and make failures easier to retry; longer segments can preserve phrasing but reserve more semantic and diffusion memory. The non-CJK budget scale leaves room for English, Arabic, and Spanish subword expansion.
Use punctuation to create natural boundaries. Enable pause tags when you need exact silence: [pause:500ms], [pause:0.8s], and <pause=0.5> are accepted forms. A pause becomes its own section and is inserted without asking the speech model to invent silence.
Text normalization expands text before phonetic processing and is recommended for ordinary numbers and punctuation. Disable it only when you have a deliberate pre-normalized script and have checked pronunciation. If the WeText backend rejects an unusual English or Chinese fragment, V6 keeps the original text and logs a concise warning instead of dropping the fragment.
Use captions and create an MP4
Upload SRT, VTT, or SBV captions to replace or organize the script. With Use caption cue timing, each caption unit is retimed to its cue slot and cue start times are preserved. Add a still image only when an MP4 is required.

Figure 4. Caption timing is ideal for localization, dubbing drafts, and slide narration. Without the timing checkbox, caption text is still synthesized but flows naturally; without a still image, the job remains audio-only.
- Plain captions: use subtitle text as a structured script while allowing natural timing.
- Cue-timed captions: preserve subtitle starts and fit each unit to its slot.
- Still-image video: combine the completed audio and uploaded image into an MP4.
- Caption plus pause tags: pause parsing still occurs inside caption text when enabled.
4. Shape Emotion, Sampling, and Timing
Four emotion sources
Emotion is independent from speaker identity. Select Same as speaker for the simplest clone, Emotion reference audio to transfer delivery from another clip, Manual vectors for direct channel control, or Emotion text to describe the desired performance.

Figure 5. Emotion weight blends the chosen emotion source with the speaker tone. Manual mode exposes joy, anger, sadness, fear, disgust, depression, surprise, and calm; tuned biases and the maximum vector sum keep a combination from becoming unnaturally extreme.
For emotion-reference work, use a clip whose delivery is clear even if the voice is different: the speaker reference supplies identity and the emotion reference supplies style. Random emotion exemplar varies the internal exemplar used with manual vectors. For reproducible comparisons, turn it off and keep the generation seed fixed.
Emotion-text mode needs the Qwen emotion model enabled in Models & Performance. Enter a short direction such as calm, reassuring, and quietly optimistic. If the field is blank, the app analyzes the speech text itself.
Autoregressive and diffusion controls
The autoregressive stage decides semantic tokens; the diffusion stage turns those tokens and conditioning into acoustic detail. Change one family at a time so you can hear what caused the difference.

Figure 6. The quality preset uses sampling, temperature 0.8, top-p 0.8, four beams, CFM temperature 0.9, and 40 diffusion steps. The system default preset uses three beams, CFM temperature 1.0, and 25 steps. A fixed seed plus a single candidate is the cleanest diagnostic setup.
- Temperature: lower is steadier; higher is more varied but can be less stable.
- Top-p and top-k: restrict the token candidate pool. Top-k 0 disables that filter.
- Beams: can improve stability, but multiplies time and VRAM. Optional acceleration expects beams 1.
- Repetition penalty: prevents semantic-token loops; keep the established default unless diagnosing repeats.
- Length penalty: affects beam search only; 0 is neutral.
- Max mel tokens: a safety ceiling, not a requested duration.
- Candidates: consecutive seeded alternatives from one request; each costs another generation.
- Diffusion steps: 12-16 is a faster draft range, 25 is the registered/system-default value, and the quality preset uses 40; 35-50 can refine difficult material.
- CFG rate and CFM temperature: control conditioning strength and diffusion variation.
- CFM cache length: lower it only when reserved VRAM is the problem.
Pacing, silence, and reference processing
Use Speaking rate for the voice's pace, Section silence for joins, and Target duration only when the entire assembled output must approach a known length. A trained voice can store a measured speaking rate and apply it automatically.

Figure 7. Reference limits normally stay at 15 seconds. Semantic layer 17 is the trained recommendation. Reusing speaker conditioning for emotion is the fast default when there is no separate emotion source.
- Off: no whole-output duration target.
- Natural: regenerate timing toward the target instead of mechanically editing the finished waveform.
- Pad: append silence only when output is shorter; it never speeds up or truncates longer speech.
- Trim: cut a longer assembled result to the exact target.
- Max consecutive silence tokens: 0 disables token trimming; use it only to suppress unusual model silences.
- Latent multiplier: the natural-duration factor passed to the engine; leave 1.72 unless running a controlled timing experiment.
Give the task an optional safe filename, keep the used reference for reproducibility, and choose WAV, MP3, or still-image MP4 behavior. Bypass preserves model audio; the other tuning presets use FFmpeg post-processing with optional explicit overrides.

Figure 8. V6 system presets start with in-process reuse for faster repeat runs. Enable isolated subprocess mode when Cancel must terminate the complete model process and release its VRAM after the job; isolation trades away resident-model reuse.
- MP3 bitrate 256k is a strong voice quality and file-size balance; WAV candidates always remain available.
- Edge-silence trimming removes only sufficiently long leading or trailing silence.
- Low cut, high cut, gain, LUFS, and de-ess values override the chosen tuning preset when supplied.
- Every non-bypass tuning preset preserves the source sample rate in V6.
- In-process reuse is the V6 default; isolated subprocess is an intentional per-preset opt-in.
- Section batch size 1 is safest. Raise it only within the active VRAM tier hint.
- Low-memory mode chooses sequential, aggressive-memory paths.
- Prevent VRAM accumulation clears autoregressive caches between sections; it is slower but useful for long books.
- Verbose logging exposes model inputs, timing, and detailed diagnostics in the terminal and live log.
5. Run, Cancel, Review, and Reuse Outputs
During a run, watch item number, elapsed time, ETA, speed, current stage, and the live log. Cancel stops new work and, in subprocess mode, can terminate the worker cleanly instead of leaving GPU memory occupied.

Figure 9. A successful run ends with a playable result and a final summary. Open outputs folder jumps to the task directory containing audio, media, reference copies, metadata, and logs selected by the output settings.
If generation seems stuck, read the last log line before cancelling. First-time model loads and optional compilation can be much slower than later runs. If cancellation leaves a model resident in reuse mode, use Models & Performance > Unload model / free VRAM.
When Candidates is above one, listen to every player before choosing. The displayed seed lets you repeat or compare a run with the same stochastic starting point; settings and output metadata explain exactly what created each file.

Figure 10. Recent outputs lists the last ten generated tasks. Select a good result and press Load selected output into reference to perform iterative voice cloning, continuation work, or a clean second-generation reference test.
6. Batch Generation for Many Scripts
Build a queue from uploaded TXT/caption files, pasted text, or a local folder. The batch uses the shared Voice Generation settings, so first prove one representative item in the single-generation tab.

Figure 11. Naming supports {index}, {name}, and {stem}. Keep output in a safe subfolder under outputs, choose shared or same-stem per-file references, then choose cancellable subprocess execution or faster in-process reuse.
- Load mixed TXT, SRT, VTT, and SBV sources or point the folder field at a local collection.
- Choose Shared reference to use the active Voice Generation reference for every item.
- Choose Per-file reference when each text/caption file has a same-stem audio file beside it.
- Enable Continue after item errors for unattended queues; failed rows are recorded while later items continue.
- Press Generate batch, monitor the table and log, and use Open batch folder when complete.
The tested queue mixed a plain TXT item with an SRT item and completed both. Caption timing is now applied per item, so a subtitle entry can use its cues without incorrectly forcing the TXT entry through a caption-only path.

Figure 12. Confirm that every requested item has a completed row, playable output, path, elapsed time, and no hidden error in the log. Cancel batch is safe at an item boundary and terminates the active subprocess when needed.
7. Prepare a High-Quality Voice Dataset
Dataset preparation accepts media files, folders, metadata.csv, or already segmented WAV+TXT folders. Use one safe dataset name and confirm the output root before scanning, especially when Overwrite dataset will later be enabled.

Figure 13. Recursion discovers nested media. A fixed speaker name labels every segment; Speaker from folder instead uses each source parent folder, which is useful for a multi-speaker collection.
Press Scan inputs before processing. The discovered-media table and statistics expose supported files, sidecar captions, durations, and warnings without spending time on transcription or cutting.

Figure 14. Fix missing paths, unsupported extensions, or accidental extra speakers at this stage. Refresh updates existing datasets, and Open dataset folder inspects a selected prepared dataset.
Transcripts and sentence-aligned segmentation
Prefer sidecars uses SRT/VTT/SBV text and timing when available and lets Whisper fill missing alignment. Sentence-aligned mode with Whisper word times is the recommended CUDA workflow because it preserves complete phrases instead of arbitrary waveform chunks.
