diff --git a/aiia_podcast_nodes.py b/aiia_podcast_nodes.py index 435432a..7afba54 100755 --- a/aiia_podcast_nodes.py +++ b/aiia_podcast_nodes.py @@ -344,6 +344,15 @@ class AIIA_Dialogue_TTS: if wav.ndim == 3: wav = wav.squeeze(0) if wav.ndim == 1: wav = wav.unsqueeze(0) + + # AIIA Fix: Apply tiny fade-in/out to prevent clicks at boundaries + fade_len = int(sr * 0.05) # 50ms fade + if wav.shape[-1] > fade_len * 2: + fade_in = torch.linspace(0, 1, fade_len, device=wav.device) + fade_out = torch.linspace(1, 0, fade_len, device=wav.device) + wav[..., :fade_len] *= fade_in + wav[..., -fade_len:] *= fade_out + current_full_wav.append(wav) # --- Timestamp Tracking --- diff --git a/aiia_qwen_nodes.py b/aiia_qwen_nodes.py index 6cd116a..21472ee 100644 --- a/aiia_qwen_nodes.py +++ b/aiia_qwen_nodes.py @@ -756,6 +756,15 @@ class AIIA_Qwen_Dialogue_TTS: wav = torchaudio.transforms.Resample(sr, sample_rate)(wav) wav_data = wav.squeeze(0) # [C, T] + + # AIIA Fix: Apply tiny fade-in/out to prevent clicks at boundaries + fade_len = int(sample_rate * 0.05) # 50ms fade + if wav_data.shape[-1] > fade_len * 2: + fade_in = torch.linspace(0, 1, fade_len, device=wav_data.device) + fade_out = torch.linspace(1, 0, fade_len, device=wav_data.device) + wav_data[..., :fade_len] *= fade_in + wav_data[..., -fade_len:] *= fade_out + full_waveform.append(wav_data) # Timestamp Interpolation