From bd40cbcb2153f11acb0efd0359e0b626d10d66bd Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Tue, 26 Sep 2023 16:19:57 +0200 Subject: [PATCH] Tweak pipeline.multiply_volume (#100905) --- .../components/assist_pipeline/pipeline.py | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/assist_pipeline/pipeline.py b/homeassistant/components/assist_pipeline/pipeline.py index b047a09912a..a66408a01de 100644 --- a/homeassistant/components/assist_pipeline/pipeline.py +++ b/homeassistant/components/assist_pipeline/pipeline.py @@ -1126,21 +1126,14 @@ class PipelineRun: def _multiply_volume(chunk: bytes, volume_multiplier: float) -> bytes: """Multiplies 16-bit PCM samples by a constant.""" + + def _clamp(val: float) -> float: + """Clamp to signed 16-bit.""" + return max(-32768, min(32767, val)) + return array.array( "h", - [ - int( - # Clamp to signed 16-bit range - max( - -32767, - min( - 32767, - value * volume_multiplier, - ), - ) - ) - for value in array.array("h", chunk) - ], + (int(_clamp(value * volume_multiplier)) for value in array.array("h", chunk)), ).tobytes()