convert nodes_audio_encoder.py to V3 schema (#10123)

This commit is contained in:
Alexander Piskun 2025-10-01 09:00:22 +03:00 committed by GitHub
parent c4a8cf60ab
commit 638097829d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 44 additions and 25 deletions

View File

@ -1605,6 +1605,7 @@ class _IO:
Model = Model Model = Model
ClipVision = ClipVision ClipVision = ClipVision
ClipVisionOutput = ClipVisionOutput ClipVisionOutput = ClipVisionOutput
AudioEncoder = AudioEncoder
AudioEncoderOutput = AudioEncoderOutput AudioEncoderOutput = AudioEncoderOutput
StyleModel = StyleModel StyleModel = StyleModel
Gligen = Gligen Gligen = Gligen

View File

@ -1,44 +1,62 @@
import folder_paths import folder_paths
import comfy.audio_encoders.audio_encoders import comfy.audio_encoders.audio_encoders
import comfy.utils import comfy.utils
from typing_extensions import override
from comfy_api.latest import ComfyExtension, io
class AudioEncoderLoader: class AudioEncoderLoader(io.ComfyNode):
@classmethod @classmethod
def INPUT_TYPES(s): def define_schema(cls) -> io.Schema:
return {"required": { "audio_encoder_name": (folder_paths.get_filename_list("audio_encoders"), ), return io.Schema(
}} node_id="AudioEncoderLoader",
RETURN_TYPES = ("AUDIO_ENCODER",) category="loaders",
FUNCTION = "load_model" inputs=[
io.Combo.Input(
"audio_encoder_name",
options=folder_paths.get_filename_list("audio_encoders"),
),
],
outputs=[io.AudioEncoder.Output()],
)
CATEGORY = "loaders" @classmethod
def execute(cls, audio_encoder_name) -> io.NodeOutput:
def load_model(self, audio_encoder_name):
audio_encoder_name = folder_paths.get_full_path_or_raise("audio_encoders", audio_encoder_name) audio_encoder_name = folder_paths.get_full_path_or_raise("audio_encoders", audio_encoder_name)
sd = comfy.utils.load_torch_file(audio_encoder_name, safe_load=True) sd = comfy.utils.load_torch_file(audio_encoder_name, safe_load=True)
audio_encoder = comfy.audio_encoders.audio_encoders.load_audio_encoder_from_sd(sd) audio_encoder = comfy.audio_encoders.audio_encoders.load_audio_encoder_from_sd(sd)
if audio_encoder is None: if audio_encoder is None:
raise RuntimeError("ERROR: audio encoder file is invalid and does not contain a valid model.") raise RuntimeError("ERROR: audio encoder file is invalid and does not contain a valid model.")
return (audio_encoder,) return io.NodeOutput(audio_encoder)
class AudioEncoderEncode: class AudioEncoderEncode(io.ComfyNode):
@classmethod @classmethod
def INPUT_TYPES(s): def define_schema(cls) -> io.Schema:
return {"required": { "audio_encoder": ("AUDIO_ENCODER",), return io.Schema(
"audio": ("AUDIO",), node_id="AudioEncoderEncode",
}} category="conditioning",
RETURN_TYPES = ("AUDIO_ENCODER_OUTPUT",) inputs=[
FUNCTION = "encode" io.AudioEncoder.Input("audio_encoder"),
io.Audio.Input("audio"),
],
outputs=[io.AudioEncoderOutput.Output()],
)
CATEGORY = "conditioning" @classmethod
def execute(cls, audio_encoder, audio) -> io.NodeOutput:
def encode(self, audio_encoder, audio):
output = audio_encoder.encode_audio(audio["waveform"], audio["sample_rate"]) output = audio_encoder.encode_audio(audio["waveform"], audio["sample_rate"])
return (output,) return io.NodeOutput(output)
NODE_CLASS_MAPPINGS = { class AudioEncoder(ComfyExtension):
"AudioEncoderLoader": AudioEncoderLoader, @override
"AudioEncoderEncode": AudioEncoderEncode, async def get_node_list(self) -> list[type[io.ComfyNode]]:
} return [
AudioEncoderLoader,
AudioEncoderEncode,
]
async def comfy_entrypoint() -> AudioEncoder:
return AudioEncoder()