audio info
This commit is contained in:
@@ -87,6 +87,7 @@ from .nodes.audio.audio_nodes_utility import (
|
||||
AudioSubtract,
|
||||
AudioConcatenate,
|
||||
AudioDither,
|
||||
AudioInfo,
|
||||
)
|
||||
|
||||
from .nodes.flex.feature_extractors import(
|
||||
@@ -372,6 +373,7 @@ NODE_CLASS_MAPPINGS = {
|
||||
"AudioPitchShift": AudioPitchShift,
|
||||
"AudioTimeStretch": AudioTimeStretch,
|
||||
"AudioDither": AudioDither,
|
||||
"AudioInfo": AudioInfo,
|
||||
"AudioGain": AudioGain,
|
||||
"AudioFade": AudioFade,
|
||||
"AudioPad": AudioPad,
|
||||
|
||||
@@ -189,6 +189,46 @@ class AudioSubtract(AudioUtility):
|
||||
subtracted_waveform = waveform1 - waveform2
|
||||
return ({"waveform": subtracted_waveform, "sample_rate": sample_rate},)
|
||||
|
||||
class AudioInfo(AudioUtility):
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
return {
|
||||
"required": {
|
||||
"audio": ("AUDIO",),
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("FLOAT", "INT", "INT", "INT", "FLOAT", "FLOAT", "FLOAT", "STRING")
|
||||
RETURN_NAMES = ("duration_seconds", "sample_rate", "num_channels", "num_samples",
|
||||
"max_amplitude", "mean_amplitude", "rms_amplitude", "bit_depth")
|
||||
FUNCTION = "get_audio_info"
|
||||
|
||||
def get_audio_info(self, audio):
|
||||
waveform, sample_rate = audio['waveform'], audio['sample_rate']
|
||||
|
||||
# Calculate basic properties
|
||||
num_channels = waveform.shape[1]
|
||||
num_samples = waveform.shape[2]
|
||||
duration_seconds = num_samples / sample_rate
|
||||
|
||||
# Calculate amplitude statistics
|
||||
max_amplitude = float(torch.max(torch.abs(waveform)))
|
||||
mean_amplitude = float(torch.mean(torch.abs(waveform)))
|
||||
rms_amplitude = float(torch.sqrt(torch.mean(waveform ** 2)))
|
||||
|
||||
# Get bit depth from dtype
|
||||
bit_depth = str(waveform.dtype)
|
||||
|
||||
return (
|
||||
duration_seconds,
|
||||
sample_rate,
|
||||
num_channels,
|
||||
num_samples,
|
||||
max_amplitude,
|
||||
mean_amplitude,
|
||||
rms_amplitude,
|
||||
bit_depth
|
||||
)
|
||||
|
||||
class AudioDither(AudioUtility):
|
||||
@classmethod
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
[project]
|
||||
name = "comfyui_ryanonyheinside"
|
||||
description = "Custom nodes introducing particle simulations, optical flow, audio manipulation & reactivity, and temporal masks"
|
||||
version = "1.11.0"
|
||||
version = "1.12.0"
|
||||
license = {file = "LICENSE"}
|
||||
dependencies = ["pygame","opencv-python==4.10.0","scipy","torchaudio", "pillow","librosa==0.10.2","pymunk==6.8.1","matplotlib","openunmix","mido"]
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
|
||||
<details>
|
||||
<summary><h3>🆕 Recent Updates:</h3></summary>
|
||||
|
||||
- 11/19/24 - **AudioInfo**: Added a node that returns audio information, including duration, sample rate, number of channels, number of samples, max amplitude, mean amplitude, and RMS amplitude.
|
||||
- 11/8/24 - **DOOM**: Will it run DOOM? Yes. Yes it will.
|
||||
- 11/6/24 - **Some cleanup in prep for v2**: Control CogVideo by converting features to spline data
|
||||
- 11/1/24 - **Feature to Spline Data**: Control CogVideo by convert features to spline data
|
||||
|
||||
Reference in New Issue
Block a user