# text to speech import pyttsx3 class TextToSpeech: def __init__(self, rate: int = 150, volume: float = 1.0): try: self.engine = pyttsx3.init(driverName="espeak") self.engine.setProperty("rate", rate) self.engine.setProperty("volume", volume) except Exception as e: print(f"[Text To Speech] Initialization failed: {e}") self.engine = None def say(self, message: str): """Speak the message if engine is available.""" if self.engine: try: self.engine.say(message) self.engine.runAndWait() except Exception as e: print(f"[Text To Speech] Failed to say message: {e}") def print_and_say(self, message: str, say: bool = True): """Print message and optionally speak it using Text To Speech.""" print(message) if say and self.engine is not None: self.say(message)