import os import subprocess import sys import urllib.request import zipfile import shutil # Katalog nadrzędny względem projektu BASE_DIR = os.path.abspath(os.path.join(os.getcwd(), os.pardir)) VENV_DIR = os.path.join(BASE_DIR, "venv") REQUIREMENTS_SRC = os.path.join(os.getcwd(), "requirements.txt") REQUIREMENTS_DEST = os.path.join(VENV_DIR, "requirements.txt") MODEL_URL = "https://alphacephei.com/vosk/models/vosk-model-small-pl-0.22.zip" MODEL_ZIP = os.path.join(VENV_DIR, "vosk-model-small-pl-0.22.zip") MODEL_DIR = os.path.join(VENV_DIR, "vosk-model-small-pl-0.22") VOSKPL_SRC = os.path.join(os.getcwd(), "voskpl.py") VOSKPL_DEST = os.path.join(VENV_DIR, "voskpl.py") def copy_voskpl(): print("[+] Kopiowanie voskpl.py do venv...") shutil.copy(VOSKPL_SRC, VOSKPL_DEST) def create_virtualenv(): print(f"[+] Tworzenie środowiska wirtualnego w: {VENV_DIR}") subprocess.check_call([sys.executable, "-m", "venv", VENV_DIR]) def copy_requirements(): print("[+] Kopiowanie requirements.txt do venv...") shutil.copy(REQUIREMENTS_SRC, REQUIREMENTS_DEST) def install_requirements(): print("[+] Instalacja pakietów z requirements.txt...") pip_path = ( os.path.join(VENV_DIR, "bin", "pip") if os.name != "nt" else os.path.join(VENV_DIR, "Scripts", "pip.exe") ) subprocess.check_call([pip_path, "install", "-r", REQUIREMENTS_DEST]) def download_model(): if os.path.exists(MODEL_DIR): print("[i] Model już istnieje w venv, pomijam pobieranie.") return print(f"[+] Pobieranie modelu do: {MODEL_ZIP}") urllib.request.urlretrieve(MODEL_URL, MODEL_ZIP) print("[+] Rozpakowywanie modelu...") with zipfile.ZipFile(MODEL_ZIP, "r") as zip_ref: zip_ref.extractall(VENV_DIR) print("[+] Usuwanie archiwum ZIP...") os.remove(MODEL_ZIP) def main(): create_virtualenv() copy_requirements() install_requirements() download_model() copy_voskpl() print("[✓] Gotowe!") if __name__ == "__main__": main()