audio info

This commit is contained in:
ryanontheinstide
2024-11-19 11:08:24 -05:00
parent 01605158b2
commit e69490f6bf
4 changed files with 45 additions and 1 deletions
+2
View File
@@ -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,
+40
View File
@@ -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
View File
@@ -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"]
+2
View File
@@ -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