Precise speech duration control, emotionally expressive generation, and disentanglement of emotional expression and speaker identity. Revolutionary text-to-speech technology.
Try It NowDemonstrating precise speech duration control with emotional expression preservation
Precise timing adjustment
Natural emotional expression
No training required
Advanced capabilities that set IndexTTS apart
Explicit token count specification and autoregressive generation with prosodic reproduction.
Zero-shot emotion reproduction with support for angry, happy, calm, fear, and more emotions.
Independent control of speaker identity and emotional expression using different prompts.
Generate emotions using natural language descriptions with Qwen3 integration.
Outperforms existing models in word error rate, speaker similarity, and emotional fidelity.
Enhanced speech stability using advanced GPT latent representations and soft instruction mechanisms.
Experience the power of zero-shot voice synthesis
Turn text into natural speech and create voices for your next project.
Please wait while the demo prepares.
Simple API integration in just a few lines of code
# Install IndexTTS
pip install indextts
# Import and initialize
from indextts.infer import IndexTTS
tts = IndexTTS(
model_dir="checkpoints",
cfg_path="checkpoints/config.yaml"
)
# Generate speech
voice = "reference_voice.wav"
text = "Hello, this is IndexTTS speaking!"
output_path = "generated_speech.wav"
tts.infer(voice, text, output_path)
Comprehensive guides and API reference
Open source code and examples
Discord and QQ groups for support
IndexTTS outperforms existing TTS systems
Supported emotions
Speed control range
Word error rate & speaker similarity
Latent representations
IndexTTS2 is presented here as a speech synthesis project with an emphasis on timing, expression, and speaker identity. These are useful dimensions to evaluate separately. Start with a short script, decide what the listener should understand, and identify the point at which emotion or timing matters. A clear brief makes comparisons more useful than generating a different sentence for every attempt.
Open indextts2.org to review the demonstration and project overview. For a local setup, use the current instructions in the official IndexTTS repository. Check the model version and available inference options before relying on a particular control. A recorded demonstration illustrates a workflow, while your own environment determines how an actual generation request behaves.
If your chosen workflow uses a reference recording, listen to it before starting. Prefer a clear passage with one speaker and without distracting background sound. Make sure you have permission to use that voice. Keep the reference separate from the script you want spoken so you can tell which input is responsible for an unwanted result.
Read the target script aloud. Expand abbreviations when their spoken form is ambiguous, check how names should be pronounced, and remove wording that is hard to follow by ear. Record the script revision with each sample. A small change in punctuation or sentence length may be more useful than a large change to the intended emotional delivery.
Take a line that has a clear intention, such as asking for help or reassuring another character. Compare readings that preserve the same words and speaker reference. Listen for emphasis that supports the meaning without making every word equally dramatic. Then play the line beside the preceding and following dialogue to judge whether the transition feels coherent.
Choose a brief section of video with a defined place for narration. Mark the moment when the key information should be heard. Compare the generated speech with that visual moment, and leave room for the viewer to absorb the image. If the sentence is too crowded, revise the wording before trying to force the same amount of information into a shorter space.
For an application prototype, write a neutral confirmation and a more reassuring explanation of the same event. Evaluate whether the delivery remains understandable in both cases. Keep the message's practical content intact: an expressive voice should still communicate the action or outcome. Test the sentence with someone who has not seen the script to discover which words need clarification.
Save a baseline sample before adjusting the voice or delivery. When comparing alternatives, keep the script, playback device, and listening level consistent. Note whether a change improves pronunciation, emphasis, timing, or speaker consistency. These are different qualities, and a version that improves one may make another less suitable for the scene.
Listen to the complete passage, including the beginning and ending. Check for clipped words, an unexpected pause, repeated syllables, or a sudden change in tone. Review important names and numbers against the text. For a longer project, keep a few accepted samples as a reference so that later clips can be compared with the intended voice direction.
Measure the duration of the result you actually generated instead of assuming a description of timing control guarantees a specific outcome. Check the current release documentation for the available timing behavior. A clip that fits a time slot may still need editing for clarity, and a natural reading may require a shorter script to fit the same scene.
Store the input text, reference choice, model version, and settings beside each selected clip. Record the device used for a local test if performance matters to your application. This helps you reproduce a result and investigate regressions without treating a benchmark, a recorded demo, and your full application as the same environment.
If the demo is unavailable, the official repository remains the place to check supported installation and inference paths. The linked voice product is a separate service with its own controls. Review its workflow before moving your content there, and check the applicable terms for the model and source recordings before publication.
Start with the script when a sentence is difficult to understand even when you read it aloud yourself. Start with delivery when the words are clear but the emphasis does not fit the scene. Keeping these decisions separate reduces unnecessary iterations and makes feedback easier to apply. After either change, replay the surrounding passage to check that the result still fits.