diff --git a/homeassistant/components/assist_pipeline/audio_enhancer.py b/homeassistant/components/assist_pipeline/audio_enhancer.py index ff2b122187a..c9c60f421b1 100644 --- a/homeassistant/components/assist_pipeline/audio_enhancer.py +++ b/homeassistant/components/assist_pipeline/audio_enhancer.py @@ -5,7 +5,6 @@ from dataclasses import dataclass import logging from pymicro_vad import MicroVad -from pyspeex_noise import AudioProcessor from .const import BYTES_PER_CHUNK @@ -42,8 +41,8 @@ class AudioEnhancer(ABC): """Enhance chunk of PCM audio @ 16Khz with 16-bit mono samples.""" -class MicroVadSpeexEnhancer(AudioEnhancer): - """Audio enhancer that runs microVAD and speex.""" +class MicroVadEnhancer(AudioEnhancer): + """Audio enhancer that just runs microVAD.""" def __init__( self, auto_gain: int, noise_suppression: int, is_vad_enabled: bool @@ -51,24 +50,6 @@ class MicroVadSpeexEnhancer(AudioEnhancer): """Initialize audio enhancer.""" super().__init__(auto_gain, noise_suppression, is_vad_enabled) - self.audio_processor: AudioProcessor | None = None - - # Scale from 0-4 - self.noise_suppression = noise_suppression * -15 - - # Scale from 0-31 - self.auto_gain = auto_gain * 300 - - if (self.auto_gain != 0) or (self.noise_suppression != 0): - self.audio_processor = AudioProcessor( - self.auto_gain, self.noise_suppression - ) - _LOGGER.debug( - "Initialized speex with auto_gain=%s, noise_suppression=%s", - self.auto_gain, - self.noise_suppression, - ) - self.vad: MicroVad | None = None self.threshold = 0.5 @@ -80,17 +61,12 @@ class MicroVadSpeexEnhancer(AudioEnhancer): """Enhance 10ms chunk of PCM audio @ 16Khz with 16-bit mono samples.""" is_speech: bool | None = None - assert len(audio) == BYTES_PER_CHUNK - if self.vad is not None: # Run VAD + assert len(audio) == BYTES_PER_CHUNK speech_prob = self.vad.Process10ms(audio) is_speech = speech_prob > self.threshold - if self.audio_processor is not None: - # Run noise suppression and auto gain - audio = self.audio_processor.Process10ms(audio).audio - return EnhancedAudioChunk( audio=audio, timestamp_ms=timestamp_ms, is_speech=is_speech ) diff --git a/homeassistant/components/assist_pipeline/manifest.json b/homeassistant/components/assist_pipeline/manifest.json index c22b7391d33..00950b138fd 100644 --- a/homeassistant/components/assist_pipeline/manifest.json +++ b/homeassistant/components/assist_pipeline/manifest.json @@ -7,5 +7,5 @@ "integration_type": "system", "iot_class": "local_push", "quality_scale": "internal", - "requirements": ["pymicro-vad==1.0.1", "pyspeex-noise==1.0.0"] + "requirements": ["pymicro-vad==1.0.1"] } diff --git a/homeassistant/components/assist_pipeline/pipeline.py b/homeassistant/components/assist_pipeline/pipeline.py index 342f811c99b..9fada934ca1 100644 --- a/homeassistant/components/assist_pipeline/pipeline.py +++ b/homeassistant/components/assist_pipeline/pipeline.py @@ -49,7 +49,7 @@ from homeassistant.util import ( ) from homeassistant.util.limited_size_dict import LimitedSizeDict -from .audio_enhancer import AudioEnhancer, EnhancedAudioChunk, MicroVadSpeexEnhancer +from .audio_enhancer import AudioEnhancer, EnhancedAudioChunk, MicroVadEnhancer from .const import ( BYTES_PER_CHUNK, CONF_DEBUG_RECORDING_DIR, @@ -589,7 +589,7 @@ class PipelineRun: # Initialize with audio settings if self.audio_settings.needs_processor and (self.audio_enhancer is None): # Default audio enhancer - self.audio_enhancer = MicroVadSpeexEnhancer( + self.audio_enhancer = MicroVadEnhancer( self.audio_settings.auto_gain_dbfs, self.audio_settings.noise_suppression_level, self.audio_settings.is_vad_enabled, diff --git a/homeassistant/components/voip/voip.py b/homeassistant/components/voip/voip.py index be1e58b6eec..161e938a3b6 100644 --- a/homeassistant/components/voip/voip.py +++ b/homeassistant/components/voip/voip.py @@ -33,7 +33,7 @@ from homeassistant.components.assist_pipeline import ( ) from homeassistant.components.assist_pipeline.audio_enhancer import ( AudioEnhancer, - MicroVadSpeexEnhancer, + MicroVadEnhancer, ) from homeassistant.components.assist_pipeline.vad import ( AudioBuffer, @@ -235,7 +235,7 @@ class PipelineRtpDatagramProtocol(RtpDatagramProtocol): try: # Wait for speech before starting pipeline segmenter = VoiceCommandSegmenter(silence_seconds=self.silence_seconds) - audio_enhancer = MicroVadSpeexEnhancer(0, 0, True) + audio_enhancer = MicroVadEnhancer(0, 0, True) chunk_buffer: deque[bytes] = deque( maxlen=self.buffered_chunks_before_speech, ) diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index 5f9b9023718..23d759f270d 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -49,7 +49,6 @@ pymicro-vad==1.0.1 PyNaCl==1.5.0 pyOpenSSL==24.2.1 pyserial==3.5 -pyspeex-noise==1.0.0 python-slugify==8.0.4 PyTurboJPEG==1.7.1 pyudev==0.24.1 diff --git a/requirements_all.txt b/requirements_all.txt index 5d5d5931818..fc626c59c39 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2228,9 +2228,6 @@ pysoma==0.0.12 # homeassistant.components.spc pyspcwebgw==0.7.0 -# homeassistant.components.assist_pipeline -pyspeex-noise==1.0.0 - # homeassistant.components.squeezebox pysqueezebox==0.7.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index ab1d0bc2a1b..858ba6d1197 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1782,9 +1782,6 @@ pysoma==0.0.12 # homeassistant.components.spc pyspcwebgw==0.7.0 -# homeassistant.components.assist_pipeline -pyspeex-noise==1.0.0 - # homeassistant.components.squeezebox pysqueezebox==0.7.1