64 lines
2.1 KiB
Markdown
64 lines
2.1 KiB
Markdown
|
|
# Documentation
|
|
- Class name: SaltAudioMixer
|
|
- Category: SALT/Audio/Process
|
|
- Output node: False
|
|
|
|
SaltAudioMixer节点旨在将两个音频输入混合成单一输出,通过在指定的混音时间将一个音频片段叠加到另一个上。这一功能对于在多媒体项目中从多个音源创建合成音轨至关重要,允许进行动态音频混合。
|
|
|
|
# Input types
|
|
## Required
|
|
- audio_a
|
|
- 第一个要混合的音频输入。它作为基础层,第二个音频输入将叠加其上。
|
|
- Comfy dtype: AUDIO
|
|
- Python dtype: bytes
|
|
- audio_b
|
|
- 第二个要混合的音频输入。这段音频将在指定的混音时间叠加到第一个输入上,共同构成合成输出。
|
|
- Comfy dtype: AUDIO
|
|
- Python dtype: bytes
|
|
- mix_time_seconds
|
|
- 指定第二个音频输入(audio_b)将叠加到第一个(audio_a)上的时间偏移量,以秒为单位。这个参数允许精确控制音频混合的时机。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
|
|
# Output types
|
|
- mixed_audio
|
|
- 混合两个输入后得到的音频结果。这个输出是一个单一的音轨,结合了两个输入轨道的元素。
|
|
- Comfy dtype: AUDIO
|
|
- Python dtype: bytes
|
|
|
|
|
|
## Usage tips
|
|
- Infra type: `CPU`
|
|
- Common nodes: unknown
|
|
|
|
|
|
## Source code
|
|
```python
|
|
class SaltAudioMixer:
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"audio_a": ("AUDIO", {}),
|
|
"audio_b": ("AUDIO", {}),
|
|
"mix_time_seconds": ("FLOAT", {"min": 0.0, "default": 0.0}),
|
|
},
|
|
}
|
|
|
|
RETURN_TYPES = ("AUDIO",)
|
|
RETURN_NAMES = ("mixed_audio",)
|
|
FUNCTION = "mix_audios"
|
|
CATEGORY = "SALT/Audio/Process"
|
|
|
|
def mix_audios(self, audio_a, audio_b, mix_time_seconds):
|
|
audio_segment_1 = AudioSegment.from_file(io.BytesIO(audio_a), format="wav")
|
|
audio_segment_2 = AudioSegment.from_file(io.BytesIO(audio_b), format="wav")
|
|
|
|
position_ms = int(mix_time_seconds * 1000)
|
|
audio_segment = audio_segment_1.overlay(audio_segment_2, position=position_ms)
|
|
|
|
return (get_buffer(audio_segment), )
|
|
|
|
```
|