Skip to content

Commit 6380978

Browse files
authored
convert nodes_audio_encoder.py to V3 schema (comfyanonymous#10123)
1 parent c4a8cf6 commit 6380978

File tree

2 files changed

+44
-25
lines changed

2 files changed

+44
-25
lines changed

comfy_api/latest/_io.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1605,6 +1605,7 @@ class _IO:
16051605
Model = Model
16061606
ClipVision = ClipVision
16071607
ClipVisionOutput = ClipVisionOutput
1608+
AudioEncoder = AudioEncoder
16081609
AudioEncoderOutput = AudioEncoderOutput
16091610
StyleModel = StyleModel
16101611
Gligen = Gligen
Lines changed: 43 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,62 @@
11
import folder_paths
22
import comfy.audio_encoders.audio_encoders
33
import comfy.utils
4+
from typing_extensions import override
5+
from comfy_api.latest import ComfyExtension, io
46

57

6-
class AudioEncoderLoader:
8+
class AudioEncoderLoader(io.ComfyNode):
79
@classmethod
8-
def INPUT_TYPES(s):
9-
return {"required": { "audio_encoder_name": (folder_paths.get_filename_list("audio_encoders"), ),
10-
}}
11-
RETURN_TYPES = ("AUDIO_ENCODER",)
12-
FUNCTION = "load_model"
10+
def define_schema(cls) -> io.Schema:
11+
return io.Schema(
12+
node_id="AudioEncoderLoader",
13+
category="loaders",
14+
inputs=[
15+
io.Combo.Input(
16+
"audio_encoder_name",
17+
options=folder_paths.get_filename_list("audio_encoders"),
18+
),
19+
],
20+
outputs=[io.AudioEncoder.Output()],
21+
)
1322

14-
CATEGORY = "loaders"
15-
16-
def load_model(self, audio_encoder_name):
23+
@classmethod
24+
def execute(cls, audio_encoder_name) -> io.NodeOutput:
1725
audio_encoder_name = folder_paths.get_full_path_or_raise("audio_encoders", audio_encoder_name)
1826
sd = comfy.utils.load_torch_file(audio_encoder_name, safe_load=True)
1927
audio_encoder = comfy.audio_encoders.audio_encoders.load_audio_encoder_from_sd(sd)
2028
if audio_encoder is None:
2129
raise RuntimeError("ERROR: audio encoder file is invalid and does not contain a valid model.")
22-
return (audio_encoder,)
30+
return io.NodeOutput(audio_encoder)
2331

2432

25-
class AudioEncoderEncode:
33+
class AudioEncoderEncode(io.ComfyNode):
2634
@classmethod
27-
def INPUT_TYPES(s):
28-
return {"required": { "audio_encoder": ("AUDIO_ENCODER",),
29-
"audio": ("AUDIO",),
30-
}}
31-
RETURN_TYPES = ("AUDIO_ENCODER_OUTPUT",)
32-
FUNCTION = "encode"
33-
34-
CATEGORY = "conditioning"
35+
def define_schema(cls) -> io.Schema:
36+
return io.Schema(
37+
node_id="AudioEncoderEncode",
38+
category="conditioning",
39+
inputs=[
40+
io.AudioEncoder.Input("audio_encoder"),
41+
io.Audio.Input("audio"),
42+
],
43+
outputs=[io.AudioEncoderOutput.Output()],
44+
)
3545

36-
def encode(self, audio_encoder, audio):
46+
@classmethod
47+
def execute(cls, audio_encoder, audio) -> io.NodeOutput:
3748
output = audio_encoder.encode_audio(audio["waveform"], audio["sample_rate"])
38-
return (output,)
49+
return io.NodeOutput(output)
50+
51+
52+
class AudioEncoder(ComfyExtension):
53+
@override
54+
async def get_node_list(self) -> list[type[io.ComfyNode]]:
55+
return [
56+
AudioEncoderLoader,
57+
AudioEncoderEncode,
58+
]
3959

4060

41-
NODE_CLASS_MAPPINGS = {
42-
"AudioEncoderLoader": AudioEncoderLoader,
43-
"AudioEncoderEncode": AudioEncoderEncode,
44-
}
61+
async def comfy_entrypoint() -> AudioEncoder:
62+
return AudioEncoder()

0 commit comments

Comments
 (0)