Desmond-Dong commited on
Commit
b713cda
·
1 Parent(s): e2a702a

Fix: Move _is_streaming_audio init to early in __init__ before entity setup

Browse files
reachy_mini_ha_voice/satellite.py CHANGED
@@ -67,6 +67,15 @@ class VoiceSatelliteProtocol(APIServer):
67
  self.state.satellite = self
68
  self.camera_server = camera_server
69
 
 
 
 
 
 
 
 
 
 
70
  # Initialize Reachy controller
71
  self.reachy_controller = ReachyController(state.reachy_mini)
72
 
@@ -106,13 +115,6 @@ class VoiceSatelliteProtocol(APIServer):
106
  # Find and store references to DOA entities
107
  self._entity_registry.find_entity_references(self.state.entities)
108
 
109
- self._is_streaming_audio = False
110
- self._tts_url: Optional[str] = None
111
- self._tts_played = False
112
- self._continue_conversation = False
113
- self._timer_finished = False
114
- self._external_wake_words: Dict[str, VoiceAssistantExternalWakeWord] = {}
115
-
116
  def handle_voice_event(
117
  self, event_type: VoiceAssistantEventType, data: Dict[str, str]
118
  ) -> None:
 
67
  self.state.satellite = self
68
  self.camera_server = camera_server
69
 
70
+ # Initialize streaming state early (before entity setup)
71
+ # This is needed because audio processing thread checks this attribute
72
+ self._is_streaming_audio = False
73
+ self._tts_url: Optional[str] = None
74
+ self._tts_played = False
75
+ self._continue_conversation = False
76
+ self._timer_finished = False
77
+ self._external_wake_words: Dict[str, VoiceAssistantExternalWakeWord] = {}
78
+
79
  # Initialize Reachy controller
80
  self.reachy_controller = ReachyController(state.reachy_mini)
81
 
 
115
  # Find and store references to DOA entities
116
  self._entity_registry.find_entity_references(self.state.entities)
117
 
 
 
 
 
 
 
 
118
  def handle_voice_event(
119
  self, event_type: VoiceAssistantEventType, data: Dict[str, str]
120
  ) -> None:
reachy_mini_ha_voice/voice_assistant.py CHANGED
@@ -478,10 +478,6 @@ class VoiceAssistantService:
478
  if self._state is None or self._state.satellite is None:
479
  time.sleep(0.1)
480
  return False
481
- # Check if satellite is fully initialized
482
- if not hasattr(self._state.satellite, '_is_streaming_audio'):
483
- time.sleep(0.1)
484
- return False
485
  return True
486
 
487
  def _update_wake_words_list(self, ctx: AudioProcessingContext) -> None:
 
478
  if self._state is None or self._state.satellite is None:
479
  time.sleep(0.1)
480
  return False
 
 
 
 
481
  return True
482
 
483
  def _update_wake_words_list(self, ctx: AudioProcessingContext) -> None: