/// Interface abstraite pour la détection de wake word. /// Implémentations disponibles : /// - PorcupineWakeWordEngine (on-device, Picovoice — payant prod) /// - SpeechToTextWakeWordEngine (speech_to_text — gratuit, moins précis) abstract class WakeWordEngine { /// Démarre l'écoute continue. /// [onDetected] — callback minimal, appelé sans commande. /// [onDetectedWithCommand] — callback enrichi : texte après le keyword /// dans le même énoncé ("visite qu'est-ce que c'est" → "qu'est-ce que c'est"). /// Si vide, l'orchestrateur lance un cycle STT séparé. Future start({ required void Function() onDetected, void Function(String command)? onDetectedWithCommand, }); Future stop(); }