import pyaudio import threading class AudioManager: _instance = None _lock = threading.Lock() def __new__(cls): with cls._lock: if cls._instance is None: cls._instance = super(AudioManager, cls).__new__(cls) cls._instance.pa = pyaudio.PyAudio() print("🔊 AudioManager: PyAudio initialized (Global)") return cls._instance def get_pyaudio(self): return self.pa def cleanup(self): if self.pa: self.pa.terminate() self.pa = None def get_audio_manager(): return AudioManager()