96 lines
3.1 KiB
Python
Executable File
96 lines
3.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import sys
|
|
import shutil
|
|
import subprocess
|
|
import torch
|
|
import os
|
|
|
|
def check_flatpak():
|
|
return os.path.exists("/.flatpak-info")
|
|
|
|
def run_cmd(cmd_list):
|
|
in_flatpak = check_flatpak()
|
|
if in_flatpak:
|
|
full_cmd = ["flatpak-spawn", "--host"] + cmd_list
|
|
else:
|
|
full_cmd = cmd_list
|
|
|
|
try:
|
|
result = subprocess.run(full_cmd, capture_output=True, text=True)
|
|
return result.returncode == 0, result.stdout.strip(), result.stderr.strip()
|
|
except FileNotFoundError:
|
|
return False, "", "Command not found"
|
|
except Exception as e:
|
|
return False, "", str(e)
|
|
|
|
def main():
|
|
print("========================================")
|
|
print(" AI Transcriber Diagnostic Tool")
|
|
print("========================================")
|
|
|
|
in_flatpak = check_flatpak()
|
|
print(f"Environment: {'Flatpak Sandbox' if in_flatpak else 'Native Host'}")
|
|
print("-" * 40)
|
|
|
|
# 1. GPU Check (PyTorch)
|
|
print("\n[1] GPU Availability (Internal PyTorch)")
|
|
if torch.cuda.is_available():
|
|
print(f"✅ GPU Detected: {torch.cuda.get_device_name(0)}")
|
|
print(f" VRAM: {torch.cuda.get_device_properties(0).total_memory / 1024**3:.2f} GB")
|
|
print(f" CUDA Version: {torch.version.cuda}")
|
|
else:
|
|
print("❌ GPU NOT Detected by PyTorch.")
|
|
print(" Whisper will run on CPU (Slow).")
|
|
|
|
# 2. Nvidia Driver Check (System)
|
|
print("\n[2] Nvidia Driver Check (System)")
|
|
ok, out, err = run_cmd(["nvidia-smi", "--query-gpu=name,driver_version", "--format=csv,noheader"])
|
|
if ok:
|
|
print(f"✅ Driver Active: {out}")
|
|
else:
|
|
print("❌ 'nvidia-smi' failed. Drivers might be missing or inaccessible.")
|
|
if err: print(f" Error: {err}")
|
|
|
|
# 3. FFmpeg Check
|
|
print("\n[3] FFmpeg Check")
|
|
ok, out, err = run_cmd(["ffmpeg", "-version"])
|
|
if ok:
|
|
version_line = out.split('\n')[0]
|
|
print(f"✅ FFmpeg Ready: {version_line}")
|
|
else:
|
|
print("❌ FFmpeg NOT found.")
|
|
print(" On Bazzite, install it with: 'brew install ffmpeg'")
|
|
|
|
# 4. FFprobe Check
|
|
print("\n[4] FFprobe Check (Required for duration checks)")
|
|
ok, out, err = run_cmd(["ffprobe", "-version"])
|
|
if ok:
|
|
version_line = out.split('\n')[0]
|
|
print(f"✅ FFprobe Ready: {version_line}")
|
|
else:
|
|
print("❌ FFprobe NOT found.")
|
|
|
|
# 5. Ollama Check
|
|
print("\n[5] Local LLM (Ollama)")
|
|
ok, out, err = run_cmd(["ollama", "--version"])
|
|
if ok:
|
|
print(f"✅ Ollama Installed: {out}")
|
|
|
|
# Check server
|
|
import socket
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
sock.settimeout(1)
|
|
result = sock.connect_ex(('127.0.0.1', 11434))
|
|
if result == 0:
|
|
print("✅ Ollama Server is RUNNING.")
|
|
else:
|
|
print("⚠️ Ollama Server is NOT running (Scripts will try to auto-start it).")
|
|
else:
|
|
print("❌ Ollama NOT found.")
|
|
print(" Run: ./ai_transcriber_v2/install_local_llm.sh")
|
|
|
|
print("\n========================================")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|