docs: fix emoji encoding and update IndexTTS-2 size

- Fix: Insert Zero Width Non-Joiner between flag emojis in tables to prevent ligatures
- Update: Set IndexTTS-2 model size to ~4.7GB in YAML and Tables
This commit is contained in:
diodiogod
2026-02-11 23:45:02 -03:00
parent 08226ff96d
commit 4e4c50045a
4 changed files with 29 additions and 30 deletions
+8 -10
View File
@@ -25,21 +25,19 @@ A comprehensive ComfyUI extension providing unified Text-to-Speech, Voice Conver
| Engine | Languages | Size | Key Features |
|--------|-----------|------|--------------|
| **F5-TTS** | 🇺🇸🇩🇪🇪🇸🇫🇷🇮🇹🇯🇵 +4 | ~1.2GB each | Targeted Word/Speech Editing, Speed control |
| **ChatterBox** | 🇺🇸🇩🇪🇫🇷🇮🇹🇯🇵🇰🇷 +4 | ~4.3GB | Expressiveness slider |
| **F5-TTS** | 🇺🇸​🇩🇪​🇪🇸​🇫🇷​🇮🇹​🇯🇵 +4 | ~1.2GB each | Targeted Word/Speech Editing, Speed control |
| **ChatterBox** | 🇺🇸​🇩🇪​🇫🇷​🇮🇹​🇯🇵​🇰🇷 +4 | ~4.3GB | Expressiveness slider |
| **ChatterBox 23L** | 🌐 24 languages | ~4.3GB | 24 languages in single model, emotion tokens (v2 - doesn't work) |
| **VibeVoice** | 🇺🇸🇨🇳�🇪🇪🇸🇫🇷�🇮� +21 | 5.4GB / 18GB | 90-min long-form, Native 4-speaker (Base models) |
| **Higgs Audio 2** | 🇺🇸🇨🇳🇩🇪🇪🇸🇰🇷 | ~9GB | 3 multi-speaker, CUDA graphs (55+ tokens/sec) |
| **IndexTTS-2** | 🇺🇸🇨🇳🇯🇵 | ? | Emotion Control: 8 vectors, Text as reference |
| **CosyVoice3** | 🇺🇸🇨🇳🇯🇵🇰🇷 | ~5.4GB | Paralinguistic tags |
| **Qwen3-TTS** | 🇺🇸🇨🇳🇩🇪🇪🇸🇫🇷🇮🇹 +4 | ~3-6GB | Voice design, ASR (Automatic Speech Recognition) |
| **Step Audio EditX** | 🇺🇸🇨🇳🇯🇵🇰🇷 | ~7GB | Second Pass Speech Editing Node: 14 emotions, 32 speaking styles |
| **VibeVoice** | 🇺🇸​🇨🇳​🇩🇪​🇪🇸​🇫🇷​🇮🇹 +21 | 5.4GB / 18GB | 90-min long-form, Native 4-speaker (Base models) |
| **Higgs Audio 2** | 🇺🇸​🇨🇳​🇩🇪​🇪🇸​🇰🇷 | ~9GB | 3 multi-speaker, CUDA graphs (55+ tokens/sec) |
| **IndexTTS-2** | 🇺🇸​🇨🇳​🇯🇵 | ~4.7GB | Emotion Control: 8 vectors, Text as reference |
| **CosyVoice3** | 🇺🇸​🇨🇳​🇯🇵​🇰🇷 | ~5.4GB | Paralinguistic tags |
| **Qwen3-TTS** | 🇺🇸​🇨🇳​🇩🇪​🇪🇸​🇫🇷​🇮🇹 +4 | ~3-6GB | Voice design, ASR (Automatic Speech Recognition) |
| **Step Audio EditX** | 🇺🇸​🇨🇳​🇯🇵​🇰🇷 | ~7GB | Second Pass Speech Editing Node: 14 emotions, 32 speaking styles |
| **RVC** | 🌐 Any | 100-300MB | Real-time VC, Pitch shift (±14) |
📊 **[Full comparison tables →](docs/ENGINE_COMPARISON.md)** | **[Language matrix →](docs/LANGUAGE_SUPPORT.md)** | **[Feature matrix →](docs/FEATURE_COMPARISON.md)**
*Note: These tables are generated automatically from source: [tts_audio_suite_engines.yaml](docs/Dev%20reports/tts_audio_suite_engines.yaml)*
<!-- ENGINE_COMPARISON_END -->
## 🚀 Project Evolution Timeline
@@ -281,7 +281,7 @@ engines:
- id: indextts-2
name: IndexTTS-2
models: "IndexTTS-2"
size: "?"
size: "~4.7GB"
capabilities:
tts: true
+10 -10
View File
@@ -4,13 +4,13 @@
| Engine | Models | Size | TTS | SRT | VC | ASR | Special Features | Languages |
| ------------------ | ----------------------------------------- | ------------ | --- | --- | --- | --- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| **F5-TTS** | Base, v1, E2TTS + 8 lang models | ~1.2GB each | ✅ | ✅ | ❌ | ❌ | Targeted Word/Speech Editing, Speed control | 🇺🇸🇩🇪🇪🇸🇫🇷🇮🇹🇯🇵🇧🇷🇵🇱🇮🇳🇹🇭 |
| **ChatterBox** | EN, DE×3, IT, FR, RU, HY, KA, JA, KO, NO | ~4.3GB | ✅ | ✅ | ✅ | ❌ | Expressiveness slider | 🇺🇸🇩🇪🇫🇷🇮🇹🇯🇵🇰🇷🇷🇺🇳🇴🇦🇲🇬🇪 |
| **ChatterBox 23L** | v1, v2, Vietnamese (Viterbox) | ~4.3GB | ✅ | ✅ | ✅ | ❌ | 24 languages in single model, emotion tokens (v2 - doesn't work) | 🇺🇸🇨🇳🇩🇪🇪🇸🇫🇷🇮🇹🇯🇵🇰🇷🇷🇺🇵🇹🇵🇱🇮🇳🇦🇪🇹🇷🇹🇭🇳🇴🇻🇳🇩🇰🇫🇮🇬🇷🇮🇱🇲🇾🇳🇱🇸🇪🇰🇪(+9) |
| **VibeVoice** | 1.5B, 7B, KugelAudio-0 (7B), Hindi-1.5B/7B | 5.4GB / 18GB | ✅ | ✅ | ❌ | ❌ | 90-min long-form, Native 4-speaker (Base models), Multilingual (KugelAudio), 4-bit quantization | 🇺🇸🇨🇳🇩🇪🇪🇸🇫🇷🇮🇹🇯🇵🇰🇷🇷🇺🇧🇷🇵🇱🇮🇳🇦🇪🇹🇷🇹🇭🇳🇴🇻🇳🇦🇲🇬🇪🇩🇰🇫🇮🇬🇷🇮🇱🇲🇾🇳🇱🇸🇪🇰🇪 |
| **Higgs Audio 2** | 3B | ~9GB | ✅ | ✅ | ❌ | ❌ | 3 multi-speaker, CUDA graphs (55+ tokens/sec) | 🇺🇸🇨🇳🇩🇪🇪🇸🇰🇷 |
| **IndexTTS-2** | IndexTTS-2 | ? | ✅ | ✅ | ❌ | ❌ | Emotion Control: 8 vectors, Text as reference, Audio as reference | 🇺🇸🇨🇳🇯🇵 |
| **CosyVoice3** | 0.5B, 0.5B-RL | ~5.4GB | ✅ | ✅ | ✅ | ❌ | Paralinguistic tags | 🇺🇸🇨🇳🇯🇵🇰🇷 |
| **Qwen3-TTS** | 0.6B, 1.7B (CustomVoice/VoiceDesign/Base) | ~3-6GB | ✅ | ✅ | ❌ | ✅ | Voice design, ASR (Automatic Speech Recognition) | 🇺🇸🇨🇳🇩🇪🇪🇸🇫🇷🇮🇹🇯🇵🇰🇷🇷🇺🇵🇹 |
| **Step Audio EditX** | 3B LLM + CosyVoice | ~7GB | ✅ | ✅ | ❌ | ❌ | Second Pass Speech Editing Node: 14 emotions, 32 speaking styles, Paralinguistic effects | 🇺🇸🇨🇳🇯🇵🇰🇷 |
| **RVC** | Community .pth | 100-300MB | ❌ | ❌ | ✅ | ❌ | Real-time VC, Pitch shift (±14), 6 HuBERT models, Language-independent | 🇺🇸🇨🇳🇩🇪🇪🇸🇫🇷🇮🇹🇯🇵🇰🇷🇷🇺🇧🇷🇵🇱🇮🇳🇦🇪🇹🇷🇹🇭🇳🇴🇻🇳🇦🇲🇬🇪🇩🇰🇫🇮🇬🇷🇮🇱🇲🇾🇳🇱🇸🇪🇰🇪 |
| **F5-TTS** | Base, v1, E2TTS + 8 lang models | ~1.2GB each | ✅ | ✅ | ❌ | ❌ | Targeted Word/Speech Editing, Speed control | 🇺🇸​🇩🇪​🇪🇸​🇫🇷​🇮🇹​🇯🇵​🇧🇷​🇵🇱​🇮🇳​🇹🇭 |
| **ChatterBox** | EN, DE×3, IT, FR, RU, HY, KA, JA, KO, NO | ~4.3GB | ✅ | ✅ | ✅ | ❌ | Expressiveness slider | 🇺🇸​🇩🇪​🇫🇷​🇮🇹​🇯🇵​🇰🇷​🇷🇺​🇳🇴​🇦🇲​🇬🇪 |
| **ChatterBox 23L** | v1, v2, Vietnamese (Viterbox) | ~4.3GB | ✅ | ✅ | ✅ | ❌ | 24 languages in single model, emotion tokens (v2 - doesn't work) | 🇺🇸​🇨🇳​🇩🇪​🇪🇸​🇫🇷​🇮🇹​🇯🇵​🇰🇷​🇷🇺​🇵🇹​🇵🇱​🇮🇳​🇦🇪​🇹🇷​🇹🇭​🇳🇴​🇻🇳​🇩🇰​🇫🇮​🇬🇷​🇮🇱​🇲🇾​🇳🇱​🇸🇪​🇰🇪(+9) |
| **VibeVoice** | 1.5B, 7B, KugelAudio-0 (7B), Hindi-1.5B/7B | 5.4GB / 18GB | ✅ | ✅ | ❌ | ❌ | 90-min long-form, Native 4-speaker (Base models), Multilingual (KugelAudio), 4-bit quantization | 🇺🇸​🇨🇳​🇩🇪​🇪🇸​🇫🇷​🇮🇹​🇯🇵​🇰🇷​🇷🇺​🇧🇷​🇵🇱​🇮🇳​🇦🇪​🇹🇷​🇹🇭​🇳🇴​🇻🇳​🇦🇲​🇬🇪​🇩🇰​🇫🇮​🇬🇷​🇮🇱​🇲🇾​🇳🇱​🇸🇪​🇰🇪 |
| **Higgs Audio 2** | 3B | ~9GB | ✅ | ✅ | ❌ | ❌ | 3 multi-speaker, CUDA graphs (55+ tokens/sec) | 🇺🇸​🇨🇳​🇩🇪​🇪🇸​🇰🇷 |
| **IndexTTS-2** | IndexTTS-2 | ~4.7GB | ✅ | ✅ | ❌ | ❌ | Emotion Control: 8 vectors, Text as reference, Audio as reference | 🇺🇸​🇨🇳​🇯🇵 |
| **CosyVoice3** | 0.5B, 0.5B-RL | ~5.4GB | ✅ | ✅ | ✅ | ❌ | Paralinguistic tags | 🇺🇸​🇨🇳​🇯🇵​🇰🇷 |
| **Qwen3-TTS** | 0.6B, 1.7B (CustomVoice/VoiceDesign/Base) | ~3-6GB | ✅ | ✅ | ❌ | ✅ | Voice design, ASR (Automatic Speech Recognition) | 🇺🇸​🇨🇳​🇩🇪​🇪🇸​🇫🇷​🇮🇹​🇯🇵​🇰🇷​🇷🇺​🇵🇹 |
| **Step Audio EditX** | 3B LLM + CosyVoice | ~7GB | ✅ | ✅ | ❌ | ❌ | Second Pass Speech Editing Node: 14 emotions, 32 speaking styles, Paralinguistic effects | 🇺🇸​🇨🇳​🇯🇵​🇰🇷 |
| **RVC** | Community .pth | 100-300MB | ❌ | ❌ | ✅ | ❌ | Real-time VC, Pitch shift (±14), 6 HuBERT models, Language-independent | 🇺🇸​🇨🇳​🇩🇪​🇪🇸​🇫🇷​🇮🇹​🇯🇵​🇰🇷​🇷🇺​🇧🇷​🇵🇱​🇮🇳​🇦🇪​🇹🇷​🇹🇭​🇳🇴​🇻🇳​🇦🇲​🇬🇪​🇩🇰​🇫🇮​🇬🇷​🇮🇱​🇲🇾​🇳🇱​🇸🇪​🇰🇪 |
+10 -9
View File
@@ -48,12 +48,13 @@ def generate_engine_comparison(data):
output.append("")
output.append("## Engine Comparison")
output.append("")
output.append("| Engine | Models | Size | TTS | SRT | VC | ASR | Special Features | Languages |")
output.append("| ------------------ | ----------------------------------------- | ------------ | --- | --- | --- | --- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |")
output.append("| Engine | Models | Size | TTS | SRT | VC | ASR | Special Features | Languages |")
output.append("| ------------------ | ----------------------------------------- | ------------ | --- | --- | --- | --- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |")
for e in engines:
# Extract flags from languages
flags = "".join(
# Use Zero Width Space to prevent flag ligature issues
flags = "\u200B".join(
lang_data["flag"]
for lang_data in e["languages"].values()
if lang_data["supported"]
@@ -72,11 +73,11 @@ def generate_engine_comparison(data):
e["size"].ljust(12),
format_support(e["capabilities"]["tts"]),
format_support(e["capabilities"]["srt"]),
format_support(e["capabilities"]["vc"]),
format_support(e["capabilities"]["asr"]),
features.ljust(88),
flags.ljust(88)
]
format_support(e["capabilities"]["vc"]),
format_support(e["capabilities"]["asr"]),
features.ljust(88),
flags.ljust(88)
]
output.append("| " + " | ".join(row) + " |")
@@ -106,7 +107,7 @@ def generate_readme_condensed_table(data):
if count >= 6: # Limit to 6 flags for readability
break
lang_display = "".join(flags)
lang_display = "\u200B".join(flags)
# Special handling for ChatterBox 23L
if e["id"] == "chatterbox-23l":