Files
diodiogod-TTS-Audio-Suite/__init__.py
T
diodiogod 95d3b691a4 feat: Add viseme detection (vowel classification) to mouth movement analyzer
- Enhanced geometric feature extraction for comprehensive mouth shape analysis
- Implemented vowel classification (A, E, I, O, U) based on lip geometry
- Added new SRT format option to display detected viseme sequences
- New toggle for enabling/disabling viseme detection
- Caching system supports viseme detection state
- Viseme sequences grouped for readability (A3-E2-I-O4)

Technical implementation:
- Extract 8 geometric features: lip width/height, mouth area, roundedness, curvature
- Rule-based vowel classification with confidence scoring
- Frame-by-frame viseme detection integrated with existing movement analysis
- ~20% performance impact when enabled, fully cached for repeated analysis
2025-08-15 01:06:41 -03:00

84 lines
3.5 KiB
Python

"""
TTS Audio Suite - Universal multi-engine TTS extension for ComfyUI
Unified architecture supporting ChatterBox, F5-TTS, and future engines like RVC:
• 🎤 TTS Text (unified text-to-speech)
• 📺 TTS SRT (unified SRT subtitle timing)
• 🔄 Voice Changer (unified voice conversion)
• ⚙️ Engine nodes (ChatterBox, F5-TTS)
• 🎭 Character Voices (voice reference management)
"""
# Import from the main nodes.py file which handles the new unified architecture
import importlib.util
import os
import sys
# Check for old ChatterBox extension conflict
def check_old_extension_conflict():
"""Check if the old ComfyUI_ChatterBox_SRT_Voice extension is installed"""
try:
import folder_paths
custom_nodes_path = folder_paths.get_folder_paths("custom_nodes")[0]
old_extension_path = os.path.join(custom_nodes_path, "ComfyUI_ChatterBox_SRT_Voice")
if os.path.exists(old_extension_path):
print("\n" + "="*80)
print("⚠️ EXTENSION CONFLICT DETECTED ⚠️")
print("="*80)
print("❌ OLD EXTENSION FOUND: ComfyUI_ChatterBox_SRT_Voice")
print("🆕 CURRENT EXTENSION: ComfyUI_TTS_Audio_Suite")
print("")
print("The old 'ComfyUI_ChatterBox_SRT_Voice' extension conflicts with this")
print("new 'ComfyUI_TTS_Audio_Suite' extension and MUST be removed.")
print("")
print("REQUIRED ACTION:")
print(f"1. Delete the old extension folder: {old_extension_path}")
print("2. Restart ComfyUI")
print("")
print("The TTS Audio Suite is the evolved version with:")
print("• Unified architecture supporting multiple TTS engines")
print("• Better performance and stability")
print("• All features from the old extension plus new capabilities")
print("")
print("Your workflows will be compatible - just update node names.")
print("="*80)
print("")
return True
except Exception as e:
# Silently continue if we can't check (e.g., folder_paths not available yet)
pass
return False
# Perform conflict check
OLD_EXTENSION_CONFLICT = check_old_extension_conflict()
# Get the path to the nodes.py file
nodes_py_path = os.path.join(os.path.dirname(__file__), "nodes.py")
# Load nodes.py as a module
spec = importlib.util.spec_from_file_location("nodes_main", nodes_py_path)
nodes_module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(nodes_module)
# Import constants and utilities
IS_DEV = nodes_module.IS_DEV
VERSION = nodes_module.VERSION
SEPARATOR = nodes_module.SEPARATOR
VERSION_DISPLAY = nodes_module.VERSION_DISPLAY
# The new unified architecture handles all node registration in nodes.py
# Just import the mappings that nodes.py creates
NODE_CLASS_MAPPINGS = nodes_module.NODE_CLASS_MAPPINGS
NODE_DISPLAY_NAME_MAPPINGS = nodes_module.NODE_DISPLAY_NAME_MAPPINGS
# Extension info
__version__ = VERSION_DISPLAY
__author__ = "TTS Audio Suite"
__description__ = "Universal multi-engine TTS extension for ComfyUI with unified architecture supporting ChatterBox, F5-TTS, and future engines like RVC"
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS"]
# Define web directory for JavaScript files
WEB_DIRECTORY = "./web"
# nodes.py already handles all the startup output and status reporting