diff --git a/main.py b/main.py index a97e78e..fafd44d 100644 --- a/main.py +++ b/main.py @@ -10,6 +10,7 @@ optional multi-user server synchronization. import sys import multiprocessing from pathlib import Path +import os # CRITICAL: Must be called before anything else with PyInstaller # This prevents the infinite spawning loop when the frozen executable runs @@ -24,6 +25,21 @@ if __name__ == "__main__": except RuntimeError: pass # Already set, ignore +# Fix for Windows PyInstaller builds with console=False +# When console is hidden, subprocess/multiprocessing can't write to stdout/stderr +# This causes RealtimeSTT and other libraries to fail silently +if getattr(sys, 'frozen', False) and sys.platform == 'win32': + # Redirect stdout/stderr to null device on Windows when frozen + # Only if they're not already valid (console=False builds) + try: + sys.stdout.flush() + sys.stderr.flush() + except (AttributeError, OSError): + # stdout/stderr are not available, redirect to null + import io + sys.stdout = io.StringIO() + sys.stderr = io.StringIO() + # Add project root to Python path project_root = Path(__file__).parent sys.path.insert(0, str(project_root))