- Integrate DramaBox with unified TTS and SRT generation, duration targeting, prompt templates, memory strategies, FP8, compile, and silence diagnostics - Add ChatterBox 23-Lang V3 checkpoint support and artifact handling - Extend parameter switching, generated-audio caching, tag editor controls, model downloads, and engine registration - Add user documentation, engine metadata, generated comparison tables, and FL-MCP launcher reliability updates
14 KiB
TTS Audio Suite - Project Index
Comprehensive file index for the universal multi-engine TTS extension for ComfyUI
Architecture Overview
Unified modular architecture - all engines share the same layered pattern:
- Engine Node (
nodes/engines/<engine>_engine_node.py) - ComfyUI configuration UI - Unified Nodes (
nodes/unified/) - thin delegation layer, routes to engine processors - Processor (
nodes/<engine>/<engine>_processor.py) - orchestration, chunking, character/pause/tag handling - SRT Processor (
nodes/<engine>/<engine>_srt_processor.py) - SRT-specific orchestration - Adapter (
engines/adapters/<engine>_adapter.py) - bridges processor to engine implementation - Engine Implementation (
engines/<engine>/) - actual model inference - Optional Isolated Runtime (
utils/runtimes/) - worker subprocess layer for fragile engine stacks
Key architectural rules:
- Chunking happens in the processor, not the adapter (
generate_single()on adapter = raw single call) - Runtime routing happens through
ModelLoadConfig.runtime_mode+runtime_profile, not ad-hoc subprocess calls - Shared runtime workers are currently used for fragile engine families such as VibeVoice, Qwen3-TTS / ASR, Granite forced alignment, and Higgs Audio 2. Engines that support the modern stack run natively in the main Transformers 5 environment.
- YAML (
docs/Dev reports/tts_audio_suite_engines.yaml) is source of truth for engine doc tables → runpython3 scripts/generate_engine_tables.py --readmeto regenerate - Auxiliary YAML (
docs/Dev reports/tts_audio_suite_aux_models.yaml) is source of truth for helper/post-process model docs → runpython3 scripts/generate_aux_model_docs.py - All models download to
ComfyUI/models/TTS/<model-name>/ - Engine registry:
utils/models/engine_registry.py
Engines
19 engines follow the pattern above:
| Engine | Adapter | Processor | SRT Processor | Engine Node |
|---|---|---|---|---|
| ChatterBox | chatterbox_adapter.py |
nodes/chatterbox/chatterbox_tts_node.py |
chatterbox_srt_node.py |
chatterbox_engine_node.py |
| ChatterBox 23-Lang | chatterbox_official_23lang_adapter.py |
nodes/chatterbox_official_23lang/ |
same folder | chatterbox_official_23lang_engine_node.py |
| F5-TTS | f5tts_adapter.py |
nodes/f5tts/f5tts_node.py |
f5tts_srt_node.py |
f5tts_engine_node.py |
| Higgs Audio 2 | higgs_audio_adapter.py |
— | nodes/higgs_audio/higgs_audio_srt_processor.py |
higgs_audio_engine_node.py |
| Higgs Audio v3 | higgs_audio_v3_adapter.py |
nodes/higgs_audio_v3/higgs_audio_v3_processor.py |
higgs_audio_v3_srt_processor.py |
higgs_audio_v3_engine_node.py |
| VibeVoice | vibevoice_adapter.py |
nodes/vibevoice/vibevoice_processor.py |
— | vibevoice_engine_node.py |
| IndexTTS-2 | — | engines/index_tts/ |
— | index_tts_engine_node.py |
| Step Audio EditX | step_audio_editx_adapter.py |
nodes/step_audio_editx/step_audio_editx_processor.py |
step_audio_editx_srt_processor.py |
step_audio_editx_engine_node.py |
| CosyVoice3 | cosyvoice_adapter.py |
engines/processors/cosyvoice_processor.py |
nodes/cosyvoice/cosyvoice_srt_processor.py |
cosyvoice_engine_node.py |
| Qwen3-TTS | qwen3_tts_adapter.py |
nodes/qwen3_tts/qwen3_tts_processor.py |
same folder | qwen3_tts_engine_node.py |
| MOSS-TTS | moss_tts_adapter.py |
nodes/moss_tts/moss_tts_processor.py |
moss_tts_srt_processor.py |
moss_tts_engine_node.py |
| Granite ASR | asr_granite_adapter.py |
— | — | granite_asr_engine_node.py |
| Echo-TTS | echo_tts_adapter.py |
nodes/echo_tts/echo_tts_processor.py |
echo_tts_srt_processor.py |
echo_tts_engine_node.py |
| Fish Audio S2 Pro | fish_audio_s2_adapter.py |
nodes/fish_audio_s2/fish_audio_s2_processor.py |
fish_audio_s2_srt_processor.py |
fish_audio_s2_engine_node.py |
| Dots TTS | dots_tts_adapter.py |
nodes/dots_tts/dots_tts_processor.py |
dots_tts_srt_processor.py |
dots_tts_engine_node.py |
| DramaBox | dramabox_adapter.py |
nodes/dramabox/dramabox_processor.py |
dramabox_srt_processor.py |
dramabox_engine_node.py |
| OmniVoice | omnivoice_adapter.py |
nodes/omnivoice/omnivoice_processor.py |
omnivoice_srt_processor.py |
omnivoice_engine_node.py |
| MOSS-SoundEffect v2 | moss_soundeffect_v2_adapter.py |
— | — | moss_soundeffect_v2_engine_node.py |
| RVC | — | engines/rvc/ |
— | rvc_engine_node.py |
Engine implementations live in:
engines/chatterbox/,engines/chatterbox_official_23lang/,engines/f5tts/,engines/higgs_audio/,engines/higgs_audio_v3/,engines/vibevoice_engine/,engines/step_audio_editx/,engines/cosyvoice/,engines/qwen3_tts/,engines/qwen3_asr/,engines/moss_tts/,engines/moss_soundeffect_v2/,engines/granite_asr/,engines/echo_tts/,engines/fish_audio_s2/,engines/dots_tts/,engines/dramabox/,engines/omnivoice/,engines/rvc/
Documentation Files
README.md - Main project docs, installation, features overview CLAUDE.md - Dev guidelines for Claude Code CHANGELOG.md - Full version history docs/BUMP_SCRIPT_INSTRUCTIONS.md - Version bump process
User Docs (docs/)
CHARACTER_SWITCHING_GUIDE.md- [CharacterName] tag systemPARAMETER_SWITCHING_GUIDE.md- Per-segment parameter override syntaxINLINE_EDIT_TAGS_USER_GUIDE.md- Step Audio EditX inline tagsHIGGS_AUDIO_V3_INLINE_TAGS.md- Higgs Audio v3 native paralinguistic tagsOMNIVOICE_TAGS_GUIDE.md- OmniVoice native non-verbal tags and pronunciation overridesMOSS_TTS_PROMPT_FIELDS_GUIDE.md- Official MOSS whole-segment prompt fields and inline<>translation limitsDRAMABOX_PROMPTING_GUIDE.md- DramaBox expressive scene prompts, voice references, controls, hardware, and licenseCOSYVOICE3_TAGS_GUIDE.md- CosyVoice3 native paralinguistic tagsCHATTERBOX_V2_SPECIAL_TOKENS.md- ChatterBox v2 emotion tokensIndexTTS2_Emotion_Control_Guide.md- IndexTTS-2 vector, text, audio, and blended emotion controlsVOCAL_REMOVAL_GUIDE.md- Vocal separation guideqwen3_tts_optimizations.md- Qwen3-TTS torch.compile setupMODEL_DOWNLOAD_SOURCES.md- All HF repo links (auto-generated)MODEL_LAYOUTS.md- Folder structures (auto-generated)AUX_MODEL_SOURCES.md,AUX_MODEL_LAYOUTS.md- Auxiliary helper-model registries (auto-generated)ENGINE_COMPARISON.md,LANGUAGE_SUPPORT.md,FEATURE_COMPARISON.md- Auto-generated tables
Dev Docs (docs/Dev reports/)
tts_audio_suite_engines.yaml- Source of truth for all engine metadatatts_audio_suite_aux_models.yaml- Source of truth for helper/post-process model metadataSRT_IMPLEMENTATION.md- SRT timing technical detailsISOLATED_RUNTIMES_PLAN.md- original runtime isolation plan and scopeTRANSFORMERS_5_QWEN3_TTS_REPORT.md- why Qwen3-TTS moved to shared legacy T4 runtimeTRANSFORMERS_5_HIGGS_AUDIO_REPORT.md- why Higgs Audio 2 moved to shared legacy T4 runtime
New Engine Guides (docs/New Engines Guides/)
README.md- Start-here friendly workflow for users guiding LLMs through new engine integrations01_FIRST_ASK_THE_LLM_TO_RESEARCH_THE_OFFICIAL_MODEL.md- Required official model capability audit before coding02_CHECK_EXISTING_COMFYUI_IMPLEMENTATIONS.md- How to use existing ComfyUI implementations as references, not source of truth03_DECIDE_ENGINE_SCOPE.md- Decide whether the engine needs TTS, Voice Changer, ASR, or special nodes; TTS implies SRT support04_IMPLEMENTATION_ORDER_FOR_LLM.md- Step-by-step implementation order with Qwen3-TTS and Step Audio EditX reference rules05_REQUIRED_PARITY_CHECKLIST.md- Must-pass architecture, lifecycle, cache, tag, SRT, docs, and UX checklist06_USER_PROMPTS_TO_COPY_PASTE.md- Ready prompts for users instructing an LLM07_PR_REVIEW_CHECKLIST.md- Maintainer/contributor checklist before merge
Core Files
__init__.py - ComfyUI entry point
nodes.py - Central node discovery and registration
install.py - Dependency installer with smart skip guards
Node Implementations
Unified Interface
nodes/unified/tts_text_node.py- Universal TTS text nodenodes/unified/tts_srt_node.py- Universal SRT nodenodes/unified/voice_changer_node.py- Universal voice conversionnodes/unified/asr_transcribe_node.py- Universal ASR node
Shared / Special Nodes
nodes/shared/character_voices_node.py- Character voice management (NARRATOR_VOICE output)nodes/shared/unified_voice_designer_node.py- Unified Qwen VoiceDesign, MOSS VoiceGenerator, and reference-free OmniVoice designnodes/shared/save_character_voice_node.py- Explicit output node for saving any NARRATOR_VOICE into the established voice librarynodes/omnivoice/omnivoice_instruction_builder_node.py- OmniVoice voice-design instruction helper with custom visual builder UInodes/text/phoneme_text_normalizer_node.py- Multilingual text preprocessingnodes/text/asr_punctuation_truecase_node.py- Standalone punctuation / truecase cleanup for raw ASR textnodes/subtitles/text_to_srt_builder_node.py- Build SRT from transcript text plus timing data, or estimate timings from plain textnodes/subtitles/srt_advanced_options_node.py- Subtitle readability / segmentation policy optionsnodes/text/tts_tag_editor_node.py- 🏷️ Multiline TTS Tag Editor: rich text editor with character/language/parameter dropdowns, preset system, syntax highlighting, undo/redo — pairs withweb/string_multiline_tag_editor.jsnodes/step_audio_editx_special/step_audio_editx_audio_editor_node.py- 🎨 Audio Editor: post-process ANY engine's audio with Step Audio EditX (14 emotions, 32 styles, paralinguistic effects like<Laughter>, speed control) — universal, not just for Step Audio EditX enginenodes/engines/index_tts_emotion_options_node.py- IndexTTS-2 emotion radar chart
Audio / Video Nodes
nodes/audio/analyzer_node.py- Audio Wave Analyzernodes/audio/vocal_removal_node.py- Vocal/instrumental separationnodes/audio/recorder_node.py- Microphone recordingnodes/audio/merge_audio_node.py- Audio mixingnodes/video/mouth_movement_analyzer_node.py- Silent speech timing extractornodes/models/load_rvc_model_node.py- RVC model loader
Utility Systems
Model Management (utils/models/)
unified_model_interface.py- Universal factory pattern for all enginesengine_registry.py- Engine capability definitionsfactory_config.py- standardized model load config, runtime mode/profile normalizationmanager.py- Model discovery and cachingcomfyui_model_wrapper/- ComfyUI native model management integrationextra_paths.py- extra_model_paths.yaml support
Isolated Runtimes (utils/runtimes/)
profiles.py- named runtime profiles (vibevoice_transformers4_shared, dedicated variants, etc.)launcher.py- runtime bootstrap, venv creation, Windows toolchain env setupsession.py,protocol.py- JSONL worker transport and message protocolbootstrap.py- shared runtime bootstrap helpersvibevoice_proxy.py,qwen3_tts_proxy.py,qwen3_asr_proxy.py,higgs_audio_proxy.py- parent-process proxiesworkers/- worker subprocess entrypoints for VibeVoice, Qwen3-TTS, Qwen3-ASR/aligner, Higgs Audio- Current shared legacy T4 runtime profile is reused by:
- VibeVoice / Kugel
- Qwen3-TTS
- Qwen3-ASR and Granite's optional Qwen forced aligner
- Higgs Audio 2
Audio (utils/audio/)
processing.py- Tensor manipulation, normalization, format conversioncache.py- Unified TTS caching systemchunk_combiner.py- Smart chunk combination (auto/concatenate/crossfade/silence_padding)chunk_timing.py- Standardized chunk timing info across enginesaudio_hash.py- Content-based cache key hashinganalysis.py- Waveform analysis, silence detection, timing extractionedit_post_processor.py- Batch inline edit tag post-processing
Text (utils/text/)
character_parser.py- [CharacterName] tag parsingchunking.py- Sentence-boundary-aware text splittingpause_processor.py- [pause:Ns] tag parsing and silence generationsegment_parameters.py- Per-segment parameter parsing ([seed:42|temp:0.5])step_audio_editx_special_tags.py- Inline edit tag systemcosyvoice_special_tags.py- CosyVoice3 native tagsphonemizer_utils.py- F5-TTS multilingual phonemization
Timing / SRT (utils/timing/)
engine.py- SRT timing engineassembly.py- Audio segment assembly (multiple timing modes)parser.py- SRT parsing and validationreporting.py- Timing report generation
Other Utils
utils/voice/discovery.py- Voice discovery, user-voice priority, and multi-path fallbackutils/voice/designers.py- Whitelisted voice-designer provider registryutils/voice/character_saver.py- Shared.wav/.reference.txt/.txtcharacter persistenceutils/voice/character_logging.py- Shared resolved voice labels and boxed prompt previewsutils/downloads/unified_downloader.py- Centralized HF download systemutils/compatibility/transformers_patches.py- transformers version compatibility patchesutils/compatibility/numba_compat.py- Numba/Librosa Python 3.13+ compatibilityutils/ffmpeg_utils.py- FFmpeg with graceful fallbackutils/asr/- ASR types, adapter registry, pipeline
Web Interface
TTS Tag Editor (modular JS)
web/string_multiline_tag_editor.js + widget-*.js, editor-state.js, tag-utilities.js, syntax-highlighter.js, font-controls.js
Audio Analyzer
web/audio_analyzer_*.js (core, ui, visualization, regions, controls, widgets, drawing, events, layout, node_integration)
Other Web Files
web/chatterbox_voice_capture.js- Microphone recording UIweb/index_tts_emotion_radar.js+emotion_radar_canvas_widget.js- IndexTTS-2 radar chartweb/qwen3_tts_widgets.js- Qwen model-specific widget enablement and legacy workflow migrationweb/asr_srt_preset_widgets.js- ASR SRT preset locking
Scripts & Config
scripts/bump_version_enhanced.py- Version bump with changelog (usepatch/minor/major)scripts/generate_engine_tables.py- Regenerate all docs from YAML (--readmeflag for README too)requirements.txt,pyproject.toml- Dependencies and project metadata