Remove fade-in on sentence beginning

This commit is contained in:
Xin Wang
2026-02-09 15:17:13 +08:00
parent 65aab79fb6
commit fe05cf5d74

View File

@@ -555,11 +555,9 @@ class DuplexPipeline:
})
first_audio_sent = True
# Keep very short fade-in for non-first sentence to preserve consonant attack.
fade_in_ms = 2 if spoken_sentence_count == 0 else 1
await self._speak_sentence(
sentence,
fade_in_ms=fade_in_ms,
fade_in_ms=0,
fade_out_ms=8,
)
spoken_sentence_count += 1
@@ -585,10 +583,9 @@ class DuplexPipeline:
)
})
first_audio_sent = True
fade_in_ms = 2 if spoken_sentence_count == 0 else 1
await self._speak_sentence(
remaining_text,
fade_in_ms=fade_in_ms,
fade_in_ms=0,
fade_out_ms=8,
)
@@ -683,7 +680,7 @@ class DuplexPipeline:
return False
async def _speak_sentence(self, text: str, fade_in_ms: int = 2, fade_out_ms: int = 8) -> None:
async def _speak_sentence(self, text: str, fade_in_ms: int = 0, fade_out_ms: int = 8) -> None:
"""
Synthesize and send a single sentence.
@@ -744,7 +741,7 @@ class DuplexPipeline:
sample_rate: int,
fade_in: bool = False,
fade_out: bool = False,
fade_in_ms: int = 2,
fade_in_ms: int = 0,
fade_out_ms: int = 8,
) -> bytes:
"""Apply short edge fades to reduce click/pop at sentence boundaries."""
@@ -756,7 +753,7 @@ class DuplexPipeline:
if samples.size == 0:
return pcm_bytes
if fade_in:
if fade_in and fade_in_ms > 0:
fade_in_samples = int(sample_rate * (fade_in_ms / 1000.0))
fade_in_samples = max(1, min(fade_in_samples, samples.size))
samples[:fade_in_samples] *= np.linspace(0.0, 1.0, fade_in_samples, endpoint=True)