103 lines
4.4 KiB
Python
103 lines
4.4 KiB
Python
"""
|
|
@title: IndexTTS for ComfyUI
|
|
@author: ComfyUI-Index-TTS
|
|
@description: ComfyUI接口的工业级零样本文本到语音合成系统
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
|
|
# # 确保当前目录在导入路径中
|
|
# current_dir = os.path.dirname(os.path.abspath(__file__))
|
|
# if current_dir not in sys.path:
|
|
# sys.path.append(current_dir)
|
|
|
|
# 导入节点定义
|
|
from .nodes import IndexTTSNode
|
|
from .audio_enhancement import AudioCleanupNode
|
|
from .timbre_audio_loader import TimbreAudioLoader
|
|
from .novel_text_parser import NovelTextStructureNode # 导入小说文本结构化节点
|
|
from .index_tts_pro import IndexTTSProNode # 导入增强版TTS节点
|
|
# 移除旧版 TTS2 节点,改用新四分节点
|
|
from .index_tts2_mode_nodes import (
|
|
IndexTTS2BaseNode,
|
|
IndexTTS2EmotionAudioNode,
|
|
IndexTTS2EmotionVectorNode,
|
|
IndexTTS2EmotionTextNode,
|
|
)
|
|
from .index_tts2_cache_nodes import IndexTTS2CacheControlNode
|
|
from .index_tts2_pro import IndexTTS2ProNode # 导入TTS2多角色小说朗读节点
|
|
# IndexTTS-2.5 节点(多语言 / 语速控制 / 发音标注 / 情感控制)
|
|
from .index_tts2_5_nodes import (
|
|
IndexTTS25BaseNode,
|
|
IndexTTS25EmotionAudioNode,
|
|
IndexTTS25EmotionVectorNode,
|
|
IndexTTS25EmotionTextNode,
|
|
IndexTTS25CacheControlNode,
|
|
)
|
|
# IndexTTS-2.5 持久化音色 conditioning 节点
|
|
from .index_tts2_5_voice_nodes import (
|
|
IndexTTS25ExtractVoiceNode,
|
|
IndexTTS25SaveVoiceNode,
|
|
IndexTTS25LoadVoiceNode,
|
|
IndexTTS25VoiceBaseNode,
|
|
)
|
|
|
|
# 注册ComfyUI节点
|
|
NODE_CLASS_MAPPINGS = {
|
|
"IndexTTSNode": IndexTTSNode,
|
|
"AudioCleanupNode": AudioCleanupNode,
|
|
"TimbreAudioLoader": TimbreAudioLoader,
|
|
"NovelTextStructureNode": NovelTextStructureNode, # 添加小说文本结构化节点
|
|
"IndexTTSProNode": IndexTTSProNode, # 添加增强版TTS节点
|
|
# 旧版节点已移除:IndexTTS2Node / IndexTTSEmotionVectorNode
|
|
"IndexTTS2BaseNode": IndexTTS2BaseNode,
|
|
"IndexTTS2EmotionAudioNode": IndexTTS2EmotionAudioNode,
|
|
"IndexTTS2EmotionVectorNode": IndexTTS2EmotionVectorNode,
|
|
"IndexTTS2EmotionTextNode": IndexTTS2EmotionTextNode,
|
|
"IndexTTS2CacheControlNode": IndexTTS2CacheControlNode,
|
|
"IndexTTS2ProNode": IndexTTS2ProNode, # TTS2多角色小说朗读节点
|
|
# IndexTTS-2.5 节点
|
|
"IndexTTS25BaseNode": IndexTTS25BaseNode,
|
|
"IndexTTS25EmotionAudioNode": IndexTTS25EmotionAudioNode,
|
|
"IndexTTS25EmotionVectorNode": IndexTTS25EmotionVectorNode,
|
|
"IndexTTS25EmotionTextNode": IndexTTS25EmotionTextNode,
|
|
"IndexTTS25CacheControlNode": IndexTTS25CacheControlNode,
|
|
# IndexTTS-2.5 持久化音色节点
|
|
"IndexTTS25ExtractVoiceNode": IndexTTS25ExtractVoiceNode,
|
|
"IndexTTS25SaveVoiceNode": IndexTTS25SaveVoiceNode,
|
|
"IndexTTS25LoadVoiceNode": IndexTTS25LoadVoiceNode,
|
|
"IndexTTS25VoiceBaseNode": IndexTTS25VoiceBaseNode,
|
|
}
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"IndexTTSNode": "Index TTS",
|
|
"AudioCleanupNode": "Audio Cleaner",
|
|
"TimbreAudioLoader": "Timbre音频加载器",
|
|
"NovelTextStructureNode": "小说文本结构化", # 添加小说文本结构化节点显示名称
|
|
"IndexTTSProNode": "Index TTS Pro", # 添加增强版TTS节点显示名称
|
|
# 旧版显示名移除
|
|
"IndexTTS2BaseNode": "Index TTS 2 - Base",
|
|
"IndexTTS2EmotionAudioNode": "Index TTS 2 - Emotion Audio",
|
|
"IndexTTS2EmotionVectorNode": "Index TTS 2 - Emotion Vector",
|
|
"IndexTTS2EmotionTextNode": "Index TTS 2 - Emotion Text",
|
|
"IndexTTS2CacheControlNode": "Index TTS 2 - Cache Control",
|
|
"IndexTTS2ProNode": "Index TTS 2 Pro (小说多角色)", # TTS2多角色小说朗读节点显示名称
|
|
# IndexTTS-2.5 节点显示名
|
|
"IndexTTS25BaseNode": "Index TTS 2.5 - Base (多语言/语速)",
|
|
"IndexTTS25EmotionAudioNode": "Index TTS 2.5 - Emotion Audio",
|
|
"IndexTTS25EmotionVectorNode": "Index TTS 2.5 - Emotion Vector",
|
|
"IndexTTS25EmotionTextNode": "Index TTS 2.5 - Emotion Text",
|
|
"IndexTTS25CacheControlNode": "Index TTS 2.5 - Cache Control",
|
|
# IndexTTS-2.5 持久化音色节点显示名
|
|
"IndexTTS25ExtractVoiceNode": "Index TTS 2.5 - Extract Voice",
|
|
"IndexTTS25SaveVoiceNode": "Index TTS 2.5 - Save Voice",
|
|
"IndexTTS25LoadVoiceNode": "Index TTS 2.5 - Load Voice",
|
|
"IndexTTS25VoiceBaseNode": "Index TTS 2.5 - Voice Base",
|
|
}
|
|
|
|
# 前端扩展:为 Load Voice 提供 .pt 文件选择/上传和动态刷新。
|
|
WEB_DIRECTORY = "./web"
|
|
|
|
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS', 'WEB_DIRECTORY']
|