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 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( await self._speak_sentence(
sentence, sentence,
fade_in_ms=fade_in_ms, fade_in_ms=0,
fade_out_ms=8, fade_out_ms=8,
) )
spoken_sentence_count += 1 spoken_sentence_count += 1
@@ -585,10 +583,9 @@ class DuplexPipeline:
) )
}) })
first_audio_sent = True first_audio_sent = True
fade_in_ms = 2 if spoken_sentence_count == 0 else 1
await self._speak_sentence( await self._speak_sentence(
remaining_text, remaining_text,
fade_in_ms=fade_in_ms, fade_in_ms=0,
fade_out_ms=8, fade_out_ms=8,
) )
@@ -683,7 +680,7 @@ class DuplexPipeline:
return False 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. Synthesize and send a single sentence.
@@ -744,7 +741,7 @@ class DuplexPipeline:
sample_rate: int, sample_rate: int,
fade_in: bool = False, fade_in: bool = False,
fade_out: bool = False, fade_out: bool = False,
fade_in_ms: int = 2, fade_in_ms: int = 0,
fade_out_ms: int = 8, fade_out_ms: int = 8,
) -> bytes: ) -> bytes:
"""Apply short edge fades to reduce click/pop at sentence boundaries.""" """Apply short edge fades to reduce click/pop at sentence boundaries."""
@@ -756,7 +753,7 @@ class DuplexPipeline:
if samples.size == 0: if samples.size == 0:
return pcm_bytes 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 = int(sample_rate * (fade_in_ms / 1000.0))
fade_in_samples = max(1, min(fade_in_samples, samples.size)) 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) samples[:fade_in_samples] *= np.linspace(0.0, 1.0, fade_in_samples, endpoint=True)