From a89acd3713d390aeff4d3ed0003afb8be8fa11ff Mon Sep 17 00:00:00 2001 From: Terry Jia Date: Wed, 25 Jun 2025 19:57:54 -0400 Subject: [PATCH 1/2] record audio node --- comfy_extras/nodes_audio.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/comfy_extras/nodes_audio.py b/comfy_extras/nodes_audio.py index 49af1eae43aa..6d36b22b3f6d 100644 --- a/comfy_extras/nodes_audio.py +++ b/comfy_extras/nodes_audio.py @@ -321,6 +321,26 @@ def VALIDATE_INPUTS(s, audio): return "Invalid audio file: {}".format(audio) return True +class RecordAudio: + @classmethod + def INPUT_TYPES(s): + input_dir = folder_paths.get_input_directory() + files = folder_paths.filter_files_content_types(os.listdir(input_dir), ["audio", "video"]) + return {"required": {"audio": ("AUDIO_RECORD", {})}} + + CATEGORY = "audio" + + RETURN_TYPES = ("AUDIO", ) + FUNCTION = "load" + + def load(self, audio): + audio_path = folder_paths.get_annotated_filepath(audio) + + waveform, sample_rate = torchaudio.load(audio_path) + audio = {"waveform": waveform.unsqueeze(0), "sample_rate": sample_rate} + return (audio, ) + + NODE_CLASS_MAPPINGS = { "EmptyLatentAudio": EmptyLatentAudio, "VAEEncodeAudio": VAEEncodeAudio, @@ -331,6 +351,7 @@ def VALIDATE_INPUTS(s, audio): "LoadAudio": LoadAudio, "PreviewAudio": PreviewAudio, "ConditioningStableAudio": ConditioningStableAudio, + "RecordAudio": RecordAudio, } NODE_DISPLAY_NAME_MAPPINGS = { @@ -342,4 +363,5 @@ def VALIDATE_INPUTS(s, audio): "SaveAudio": "Save Audio (FLAC)", "SaveAudioMP3": "Save Audio (MP3)", "SaveAudioOpus": "Save Audio (Opus)", + "RecordAudio": "Record Audio", } From 236050c14843b25ea0cceec461b1a8de388ae589 Mon Sep 17 00:00:00 2001 From: Terry Jia Date: Sat, 28 Jun 2025 09:11:40 -0400 Subject: [PATCH 2/2] sf --- comfy_extras/nodes_audio.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/comfy_extras/nodes_audio.py b/comfy_extras/nodes_audio.py index 6d36b22b3f6d..8e8dfd1f6107 100644 --- a/comfy_extras/nodes_audio.py +++ b/comfy_extras/nodes_audio.py @@ -324,8 +324,6 @@ def VALIDATE_INPUTS(s, audio): class RecordAudio: @classmethod def INPUT_TYPES(s): - input_dir = folder_paths.get_input_directory() - files = folder_paths.filter_files_content_types(os.listdir(input_dir), ["audio", "video"]) return {"required": {"audio": ("AUDIO_RECORD", {})}} CATEGORY = "audio"