74 lines
2.0 KiB
Python
74 lines
2.0 KiB
Python
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()
|