Spaces:
Running
Running
| from __future__ import annotations | |
| import subprocess | |
| from dataclasses import dataclass | |
| from modules.service_control import restart | |
| class AudioRepairResult: | |
| ok: bool | |
| message: str = "" | |
| def reset_audio_stack() -> AudioRepairResult: | |
| """Best-effort audio 'driver fix'. | |
| What we can safely do in Python without vendor tooling: | |
| 1) Restart Windows audio services (Audiosrv + AudioEndpointBuilder). | |
| 2) Ask Windows to re-enumerate audio endpoints (PnP rescan). | |
| """ | |
| r1 = restart("Audiosrv") | |
| r2 = restart("AudioEndpointBuilder") | |
| if not (r1.ok and r2.ok): | |
| msg = "; ".join([m for m in (r1.message, r2.message) if m]) | |
| return AudioRepairResult(False, msg or "Audio service restart failed.") | |
| try: | |
| # Trigger a PnP device rescan (doesn't require admin on many systems; harmless if it fails). | |
| subprocess.run( | |
| ["powershell", "-NoProfile", "-ExecutionPolicy", "Bypass", "-Command", "pnputil /scan-devices"], | |
| capture_output=True, | |
| text=True, | |
| timeout=20, | |
| shell=False, | |
| ) | |
| except Exception: | |
| pass | |
| return AudioRepairResult(True, "Audio services restarted.") | |