Project structure (in progress)
pyinstaller-demo/
├── scripts/
│ ├── 00_install_git.sh
│ ├── 01_install_miniconda.sh
│ ├── 02_create_conda_env.sh
│ ├── 03_install_uv.sh
│ ├── 04_git_init_project.sh
│ ├── 05_uv_sync.sh
│ ├── 06_run_active_learning_demo.sh
│ ├── 07_build_binary.sh
│ └── util_detect_os.sh
├── pyproject.toml
├── uv.lock # generated by uv
├── config/
│ └── extra-packages.txt # future add‑on packages (one per line, with optional ==version)
├── src/
│ ├── __main__.py
│ ├── active_learning.py
│ ├── data_utils.py
│ └── model_utils.py
├── app.spec # PyInstaller spec (generated by the build script)
├── README.md
└── .gitignore
The active-learn command runs an uncertainty sampling loop and fine-tunes
syvai/speaker-diarization-3.1 as new segments are labeled. Example:
python -m src.__main__ active-learn --iterations 5 --query_k 3 \
--lr 3e-5 --batch_size 2 --ft_epochs 2 \
--ls_token YOUR_TOKEN --project_id 1 \
--model_id syvai/speaker-diarization-3.1--ls_token and --project_id configure the Label Studio project used for
human-in-the-loop annotation. If omitted, a simple CLI simulator is used.
--ls_url controls the Label Studio server address.
During each iteration the script fine-tunes syvai/speaker-diarization-3.1
on all labeled segments using mini‑batch updates. Use --batch_size, --lr
and --ft_epochs to control this process.
--model_id can override the base model (defaults to syvai/speaker-diarization-3.1).
Execute scripts/04_run_demos.sh to run the uncertainty-sampling loop over a small audio pool and save the model checkpoint.