mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 04:07:08 +00:00
Delay import of webrtc to avoid blocking start up if package is missing (#102594)
* Delay import of webrtc to avoid blocking start up if package is missing * Update homeassistant/components/assist_pipeline/pipeline.py Co-authored-by: Paulus Schoutsen <balloob@gmail.com> * Update homeassistant/components/assist_pipeline/vad.py Co-authored-by: Paulus Schoutsen <balloob@gmail.com> --------- Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
This commit is contained in:
parent
c481fdb7d0
commit
a78e3f7b0f
@ -12,11 +12,13 @@ from pathlib import Path
|
|||||||
from queue import Queue
|
from queue import Queue
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
import time
|
import time
|
||||||
from typing import Any, Final, cast
|
from typing import TYPE_CHECKING, Any, Final, cast
|
||||||
import wave
|
import wave
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
from webrtc_noise_gain import AudioProcessor
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from webrtc_noise_gain import AudioProcessor
|
||||||
|
|
||||||
from homeassistant.components import (
|
from homeassistant.components import (
|
||||||
conversation,
|
conversation,
|
||||||
@ -522,6 +524,12 @@ class PipelineRun:
|
|||||||
# Initialize with audio settings
|
# Initialize with audio settings
|
||||||
self.audio_processor_buffer = AudioBuffer(AUDIO_PROCESSOR_BYTES)
|
self.audio_processor_buffer = AudioBuffer(AUDIO_PROCESSOR_BYTES)
|
||||||
if self.audio_settings.needs_processor:
|
if self.audio_settings.needs_processor:
|
||||||
|
# Delay import of webrtc so HA start up is not crashing
|
||||||
|
# on older architectures (armhf).
|
||||||
|
#
|
||||||
|
# pylint: disable=import-outside-toplevel
|
||||||
|
from webrtc_noise_gain import AudioProcessor
|
||||||
|
|
||||||
self.audio_processor = AudioProcessor(
|
self.audio_processor = AudioProcessor(
|
||||||
self.audio_settings.auto_gain_dbfs,
|
self.audio_settings.auto_gain_dbfs,
|
||||||
self.audio_settings.noise_suppression_level,
|
self.audio_settings.noise_suppression_level,
|
||||||
|
@ -7,8 +7,6 @@ from dataclasses import dataclass
|
|||||||
from enum import StrEnum
|
from enum import StrEnum
|
||||||
from typing import Final, cast
|
from typing import Final, cast
|
||||||
|
|
||||||
from webrtc_noise_gain import AudioProcessor
|
|
||||||
|
|
||||||
_SAMPLE_RATE: Final = 16000 # Hz
|
_SAMPLE_RATE: Final = 16000 # Hz
|
||||||
_SAMPLE_WIDTH: Final = 2 # bytes
|
_SAMPLE_WIDTH: Final = 2 # bytes
|
||||||
|
|
||||||
@ -51,6 +49,12 @@ class WebRtcVad(VoiceActivityDetector):
|
|||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
"""Initialize webrtcvad."""
|
"""Initialize webrtcvad."""
|
||||||
|
# Delay import of webrtc so HA start up is not crashing
|
||||||
|
# on older architectures (armhf).
|
||||||
|
#
|
||||||
|
# pylint: disable=import-outside-toplevel
|
||||||
|
from webrtc_noise_gain import AudioProcessor
|
||||||
|
|
||||||
# Just VAD: no noise suppression or auto gain
|
# Just VAD: no noise suppression or auto gain
|
||||||
self._audio_processor = AudioProcessor(0, 0)
|
self._audio_processor = AudioProcessor(0, 0)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user