Remove fade-in on sentence beginning
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user