Этап 5: окно настроек и сборка exe
- Окно настроек: модель и провайдер (со списком моделей с сервера), озвучка,
голосовой ввод, слово активации, автозапуск с Windows
- Сохранение в config.yaml через ruamel.yaml с комментариями и ссылками ${VAR},
проверка значений до записи; переключатели трея тоже сохраняются
- Настройки LLM и переключатели применяются на лету, для остального — перезапуск
- Один экземпляр приложения, лог в файл, аргументы --config и --wait-pid, русские диалоги Qt
- Сборка PyInstaller (onedir) с библиотеками CUDA, иконка приложения
- Тесты сохранения настроек и окна настроек
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
a719980d74
commit
20a666e0d4
@@ -0,0 +1,44 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
# Сборка: uv run pyinstaller agr-assistent.spec --noconfirm
|
||||
# Результат: dist/agr-assistent/agr-assistent.exe (папка целиком переносима)
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import nvidia
|
||||
from PyInstaller.utils.hooks import collect_data_files, collect_dynamic_libs, collect_submodules
|
||||
|
||||
datas = [("src/agr_assistent/default_config.yaml", "agr_assistent")]
|
||||
datas += collect_data_files("silero_vad")
|
||||
datas += collect_data_files("faster_whisper")
|
||||
|
||||
binaries = collect_dynamic_libs("vosk") + collect_dynamic_libs("ctranslate2")
|
||||
# cuBLAS и cuDNN для распознавания на видеокарте; путь к ним добавляет stt/whisper.py
|
||||
for package_dir in nvidia.__path__:
|
||||
for dll in Path(package_dir).glob("*/bin/*.dll"):
|
||||
binaries.append((str(dll), f"nvidia/{dll.parent.parent.name}/bin"))
|
||||
|
||||
# num2words подключает языковые модули динамически
|
||||
hiddenimports = collect_submodules("num2words")
|
||||
|
||||
a = Analysis(
|
||||
["packaging/launcher.py"],
|
||||
pathex=["src"],
|
||||
binaries=binaries,
|
||||
datas=datas,
|
||||
hiddenimports=hiddenimports,
|
||||
excludes=["tkinter", "matplotlib", "IPython", "pytest"],
|
||||
noarchive=False,
|
||||
)
|
||||
pyz = PYZ(a.pure)
|
||||
|
||||
exe = EXE(
|
||||
pyz,
|
||||
a.scripts,
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
name="agr-assistent",
|
||||
icon="packaging/icon.ico",
|
||||
console=False,
|
||||
upx=False,
|
||||
)
|
||||
coll = COLLECT(exe, a.binaries, a.datas, name="agr-assistent", upx=False)
|
||||
Reference in New Issue
Block a user