Issue: Voice Quality Degradation (Childish Tone) After Dataset & Config Changes in Coqui VITS Voice Cloning

Summary

The user experienced a significant regression in voice prosody and pitch (resulting in a “childish” tone) while attempting to fix pronunciation issues in a Coqui TTS VITS voice cloning pipeline. The regression occurred after two distinct failure modes: a naive dataset expansion followed by a drastic dataset reduction and configuration change. The core failure was the inability to maintain speaker identity consistency across these shifts, likely caused by a combination of catastrophic forgetting, prosodic bias from dataset composition, and optimizer instability due to aggressive batch size increases.

Root Cause

The root cause is a combination of three factors that destabilized the model’s learned manifold of the speaker’s voice:

  • Prosodic Bias from Dataset Composition: The “childish” pitch likely originated from the characteristics of the new vocabulary data. In TTS datasets, short sentences or specific phoneme distributions often correlate with higher pitch or different intonation patterns. When the model was forced to prioritize the new data (either via oversampling or undersampling), it adapted its output distribution to match the average prosody of the new samples rather than the original speaker’s identity.
  • Catastrophic Forgetting via Data Pruning: By removing 80% of the original data, the model lost access to the statistical anchors of the speaker’s natural pitch and cadence. The remaining 20% (newer samples) likely did not contain enough variance to reconstruct the original low, adult tone, causing the model to “hallucinate” a tone that fit the remaining distribution—often resulting in a higher pitch.
  • Optimizer Instability (Batch Size & LR): Increasing batch size from 8 to 64 is a massive jump. This changes the noise profile of the gradient estimates. If the learning rate was not adjusted downwards (typically, LR scales linearly or with square root of batch size), the model effectively took massive, unstable steps in the parameter space. This often breaks fine-grained acoustic features like pitch, leading to the observed distortion.

Why This Happens in Real Systems

Voice cloning models like VITS do not separate “identity” and “pronunciation” into disjoint latent spaces. Instead, they learn a holistic mapping of audio features.

  • Optimization “Shortcuts”: Neural networks are lazy learners. If the prompt suggests adding vocabulary, and the new vocabulary samples happen to have a slightly faster cadence or higher pitch, the model will use pitch as a feature to distinguish those hard-to-learn new words.
  • Data Resampling Ambiguity: When you remove 80% of data, the effective learning rate per sample changes. If you kept the learning rate constant, the model overfits immediately to the few remaining samples.
  • Lack of Feature Preservation Constraints: Standard VITS loss functions (Mel-spectrogram reconstruction, GAN loss) optimize for perceptual quality and alignment, not strictly for pitch consistency. Without explicit pitch conditioning or freezing of the timbre-extracting layers, the model is free to drift.

Real-World Impact

  • Production Failure: The resulting model is unusable for deployment. A “childish” voice destroys the credibility of the speaker, making it unsuitable for professional applications (e.g., assistants, audiobooks).
  • Resource Waste: The user burned ~18.5 hours of GPU compute (RTX 3090) to produce a degraded model.
  • Debugging Complexity: The issue is non-obvious. It’s not a “no audio” failure or severe artifacts; it is a subtle, yet fatal, shift in prosody, which is much harder to diagnose than basic overfitting.

Example or Code

The user did not provide code, but the issue stems from the configuration logic. Below is a conceptual representation of the incorrect approach versus the fix.

Incorrect (The path taken):

# Step 1: Add data, resume
trainer.resume("/path/to/checkpoint", new_dataset)

# Step 2: Prune data + Change Batch Size drastically
# This is the critical failure point
new_config.batch_size = 64  # Jump from 8
new_config.train_dataset = pruned_dataset  # 20% of original
# Learning rate usually remains default here
trainer.resume("/path/to/checkpoint_2", new_config)

Correct (What should happen):

# Conceptual fix: Maintain Distribution
# 1. Keep all data, but use a Sampler
# 2. Freeze speaker layers
# 3. Adjust LR for batch size
optimizer = torch.optim.AdamW(model.parameters(), lr=0.00005) # Lower LR
# Pseudo-code for freezing
for param in model.speaker_encoder.parameters():
    param.requires_grad = False

How Senior Engineers Fix It

To recover the original tone and improve pronunciation without regression, a senior engineer would apply the following strategy:

  • Rollback and Aggregate: Start from the checkpoint before the dataset reduction. Keep all original data. To address the vocabulary gap, increase the sample probability of the new vocabulary items rather than deleting the original data. This preserves the speaker manifold.
  • Explicit Pitch Conditioning: If available, utilize the VITS speaker embedding or Prosody Encoder explicitly. Ensure the model has a strong reference to the original speaker’s pitch statistics (mean/variance) during inference or training.
  • Optimizer Reset & LR Schedule: When resuming with a drastically different batch size:
    1. Reset the Optimizer State: Don’t carry over momentum/velocity estimates from the old batch size regime.
    2. Warm Restart: Use a learning rate scheduler (like Cosine Annealing with Warm Restarts) to allow the model to settle into the new data distribution without jolts.
  • Fine-Tuning with Progressive Unfreezing: Instead of training the whole model, freeze the flow/decoder layers and only train the alignment/duration predictor first to fix pronunciation. Then unfreeze the rest with a very low learning rate to refine tone.

Why Juniors Miss It

Juniors often view datasets as bags of data points without considering the statistical distribution of features like pitch and duration.

  • Misunderstanding of “More Data”: They think adding data is always good. They fail to realize that if the new data introduces a systematic bias (e.g., all new prompts are short questions, which tend to be higher pitched), the model will learn that bias.
  • Treating Batch Size as a “Speed Dial”: Increasing batch size is seen strictly as a way to speed up training. They often miss that it requires compensatory changes to the learning rate and regularization.
  • The “Clean Slate” Fallacy: They often think that deleting “bad” data (the original samples causing mispronunciation) is better than balancing. In reality, TTS models need massive diversity to maintain natural prosody; deleting data usually destroys the naturalness more than it fixes specific errors.