Files
ryanontheinside-ComfyUI_Rea…/controls/audio_stream_adapter.py
T
2025-01-30 07:56:28 -05:00

48 lines
1.7 KiB
Python

from ..base.stream_base import StreamProcessorRegistry
from ..processors.audio_processor import AudioProcessor
import numpy as np
class AudioStreamAdapter:
"""Adapter node that connects ComfyStream audio to our processor"""
CATEGORY = "real-time/control/audio"
RETURN_TYPES = ("AUDIO",)
FUNCTION = "update"
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"audio": ("AUDIO",),
"buffer_size_ms": ("FLOAT", {
"default": 500.0,
"min": 20.0, # Minimum one frame
"max": 2000.0, # 2 seconds max
"step": 20.0,
"tooltip": "Audio buffer size in milliseconds"
})
}
}
def __init__(self):
self.processor = None
def update(self, audio: np.ndarray, buffer_size_ms: float):
# Initialize processor if needed or if buffer size changed
if (self.processor is None or
self.processor.buffer_size_samples != int(buffer_size_ms * 48)):
self.processor = AudioProcessor(
sample_rate=48000,
buffer_size_ms=buffer_size_ms
)
# Register/update the processor
StreamProcessorRegistry.register_processor("audio", self.processor)
# Process the audio buffer
if audio is not None:
features = self.processor.process_buffer(audio)
# Update the global feature cache
StreamProcessorRegistry.update_features("audio", features)
# Pass through the audio buffer
return (audio,)