Files
CavinHuang-comfyui-nodes-docs/docs/SaltAudioNoiseReductionSpectralSubtraction.md
2024-07-04 08:39:03 +08:00

1.9 KiB

Documentation

  • Class name: SaltAudioNoiseReductionSpectralSubtraction
  • Category: SALT/Audio/Effect
  • Output node: False

该节点应用基于谱减法的噪声降低技术处理音频输入,有效降低背景噪音并增强音频清晰度。

Input types

Required

  • audio
    • 需要进行降噪处理的原始音频数据。
    • Comfy dtype: AUDIO
    • Python dtype: bytes
  • noise_floor
    • 控制降噪阈值的参数,影响从音频中去除噪音的程度。
    • Comfy dtype: FLOAT
    • Python dtype: float

Output types

  • audio
    • 经过降噪处理后的音频数据。
    • Comfy dtype: AUDIO
    • Python dtype: bytes

Usage tips

  • Infra type: CPU
  • Common nodes: unknown

Source code

class SaltAudioNoiseReductionSpectralSubtraction:
    @classmethod
    def INPUT_TYPES(cls):
        return {
            "required": {
                "audio": ("AUDIO", {}),
                "noise_floor": ("FLOAT", {"default": 0.1, "min": 0.0, "max": 1.0, "step": 0.01}),
            },
        }

    RETURN_TYPES = ("AUDIO",)
    RETURN_NAMES = ("audio",)
    FUNCTION = "reduce_noise_spectral"
    CATEGORY = "SALT/Audio/Effect"

    def reduce_noise_spectral(cls, audio, noise_floor):
        TEMP = folder_paths.get_temp_directory()
        os.makedirs(TEMP, exist_ok=True)

        temp_input_path = tempfile.mktemp(suffix='.wav', dir=TEMP)
        temp_output_path = tempfile.mktemp(suffix='.wav', dir=TEMP)

        with open(temp_input_path, 'wb') as f:
            f.write(audio)

        command = [
            ffmpeg_path, '-y', '-i', temp_input_path,
            '-af', f'afftdn=nr={noise_floor * 100}',
            temp_output_path
        ]

        subprocess.run(command, check=True)

        with open(temp_output_path, 'rb') as f:
            noise_reduced_audio = f.read()

        os.remove(temp_input_path)
        os.remove(temp_output_path)

        return (noise_reduced_audio,)