@@ -285,34 +285,90 @@ async def start_wake_word_detection(self, room):
285285 logger .info ("No Porcupine access key found, skipping wake word detection" )
286286 return
287287
288+ logger .info ("🎤 Starting wake word detection initialization..." )
289+ logger .info (f"🔑 Porcupine access key: { '***' + self .porcupine_access_key [- 4 :] if len (self .porcupine_access_key ) > 4 else 'SHORT_KEY' } " )
290+
288291 try :
292+ # Check available audio devices first
293+ logger .info ("🎤 Checking available audio devices..." )
294+ try :
295+ available_devices = PvRecorder .get_available_devices ()
296+ logger .info (f"🎤 Available audio devices: { available_devices } " )
297+ if not available_devices :
298+ logger .warning ("⚠️ No audio devices found!" )
299+ except Exception as device_error :
300+ logger .error (f"❌ Failed to get audio devices: { device_error } " )
301+
289302 # Initialize Porcupine with "hey barista" wake word
290- self .porcupine = pvporcupine .create (
291- access_key = self .porcupine_access_key ,
292- keywords = ["hey barista" ]
293- )
303+ logger .info ("🎤 Initializing Porcupine wake word engine..." )
304+ try :
305+ # Try with a built-in wake word first for testing
306+ # Available built-in keywords: ["alexa", "americano", "blueberry", "bumblebee",
307+ # "computer", "grapefruit", "grasshopper", "hey google", "hey siri", "jarvis",
308+ # "ok google", "picovoice", "porcupine", "terminator"]
309+ self .porcupine = pvporcupine .create (
310+ access_key = self .porcupine_access_key ,
311+ keywords = ["hey barista" ] # Using built-in wake word for testing
312+ )
313+ logger .info ("✅ Porcupine initialized successfully" )
314+ logger .info (f"🎤 Frame length: { self .porcupine .frame_length } " )
315+ logger .info (f"🎤 Sample rate: { self .porcupine .sample_rate } " )
316+ except Exception as porcupine_error :
317+ logger .error (f"❌ Porcupine initialization failed: { porcupine_error } " )
318+ logger .error (f"❌ Error type: { type (porcupine_error ).__name__ } " )
319+ raise
294320
295321 # Initialize recorder
296- self .recorder = PvRecorder (
297- device_index = - 1 , # default device
298- frame_length = self .porcupine .frame_length
299- )
322+ logger .info ("🎤 Initializing audio recorder..." )
323+ try :
324+ self .recorder = PvRecorder (
325+ device_index = - 1 , # default device
326+ frame_length = self .porcupine .frame_length
327+ )
328+ logger .info ("✅ Audio recorder initialized successfully" )
329+ except Exception as recorder_error :
330+ logger .error (f"❌ Audio recorder initialization failed: { recorder_error } " )
331+ logger .error (f"❌ Error type: { type (recorder_error ).__name__ } " )
332+ # Clean up porcupine if recorder fails
333+ if self .porcupine :
334+ self .porcupine .delete ()
335+ self .porcupine = None
336+ raise
300337
301338 self .wake_word_active = True
302339 self .event_loop = asyncio .get_event_loop ()
303340
304341 # Start wake word detection in separate thread
342+ logger .info ("🎤 Starting wake word detection thread..." )
305343 self .wake_word_thread = threading .Thread (
306344 target = self ._wake_word_detection_loop ,
307345 args = (room ,),
308346 daemon = True
309347 )
310348 self .wake_word_thread .start ()
311349
312- logger .info ("Wake word detection started - listening for 'hey barista'" )
350+ logger .info ("✅ Wake word detection started - listening for 'hey barista'" )
313351
314352 except Exception as e :
315- logger .error (f"Failed to start wake word detection: { e } " )
353+ logger .error (f"❌ Failed to start wake word detection: { e } " )
354+ logger .error (f"❌ Error type: { type (e ).__name__ } " )
355+ import traceback
356+ logger .error (f"❌ Full traceback:\n { traceback .format_exc ()} " )
357+
358+ # Clean up any partially initialized resources
359+ if hasattr (self , 'recorder' ) and self .recorder :
360+ try :
361+ self .recorder .delete ()
362+ except :
363+ pass
364+ self .recorder = None
365+
366+ if hasattr (self , 'porcupine' ) and self .porcupine :
367+ try :
368+ self .porcupine .delete ()
369+ except :
370+ pass
371+ self .porcupine = None
316372
317373 def _wake_word_detection_loop (self , room ):
318374 """Wake word detection loop running in separate thread"""
0 commit comments