import os import asyncio import edge_tts from uuid import uuid4 class MentallicoTTS: def __init__(self, output_dir="./temp_audio"): self.output_dir = output_dir os.makedirs(self.output_dir, exist_ok=True) # يمكنك تغيير الصوت. AriaNeural صوت نسائي هادئ ومتعاطف مناسب للصحة النفسية self.voice = "en-US-AriaNeural" async def _generate_audio_async(self, text: str, file_path: str): communicate = edge_tts.Communicate(text, self.voice) await communicate.save(file_path) def generate_audio_sync(self, text: str) -> str: """يولد ملف الصوت ويرجع مساره""" file_name = f"response_{uuid4().hex}.mp3" file_path = os.path.join(self.output_dir, file_name) # تشغيل الـ async في بيئة sync loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) loop.run_until_complete(self._generate_audio_async(text, file_path)) return file_path # Singleton instance _tts_instance = None def get_tts(): global _tts_instance if _tts_instance is None: _tts_instance = MentallicoTTS() return _tts_instance