2026-03-20 21:33:43 -07:00
|
|
|
# -*- mode: python ; coding: utf-8 -*-
|
|
|
|
|
"""PyInstaller spec for the Voice to Notes sidecar binary."""
|
|
|
|
|
|
|
|
|
|
from PyInstaller.utils.hooks import collect_all
|
|
|
|
|
|
|
|
|
|
block_cipher = None
|
|
|
|
|
|
|
|
|
|
# Collect all files for packages that have shared libraries / data files
|
|
|
|
|
# PyInstaller often misses these for ML packages
|
|
|
|
|
ctranslate2_datas, ctranslate2_binaries, ctranslate2_hiddenimports = collect_all("ctranslate2")
|
|
|
|
|
faster_whisper_datas, faster_whisper_binaries, faster_whisper_hiddenimports = collect_all(
|
|
|
|
|
"faster_whisper"
|
|
|
|
|
)
|
|
|
|
|
pyannote_datas, pyannote_binaries, pyannote_hiddenimports = collect_all("pyannote")
|
|
|
|
|
|
|
|
|
|
a = Analysis(
|
|
|
|
|
["voice_to_notes/main.py"],
|
|
|
|
|
pathex=[],
|
|
|
|
|
binaries=ctranslate2_binaries + faster_whisper_binaries + pyannote_binaries,
|
|
|
|
|
datas=ctranslate2_datas + faster_whisper_datas + pyannote_datas,
|
|
|
|
|
hiddenimports=[
|
|
|
|
|
"torch",
|
|
|
|
|
"torchaudio",
|
|
|
|
|
"huggingface_hub",
|
|
|
|
|
"pysubs2",
|
|
|
|
|
"openai",
|
|
|
|
|
"anthropic",
|
|
|
|
|
"litellm",
|
|
|
|
|
]
|
|
|
|
|
+ ctranslate2_hiddenimports
|
|
|
|
|
+ faster_whisper_hiddenimports
|
|
|
|
|
+ pyannote_hiddenimports,
|
|
|
|
|
hookspath=[],
|
|
|
|
|
hooksconfig={},
|
|
|
|
|
runtime_hooks=[],
|
2026-03-21 20:22:46 -07:00
|
|
|
excludes=[
|
2026-03-21 20:47:59 -07:00
|
|
|
"tkinter", "test", "pip", "setuptools",
|
2026-03-21 20:22:46 -07:00
|
|
|
# ctranslate2.converters imports torch at module level and causes
|
|
|
|
|
# circular import crashes under PyInstaller. These modules are only
|
|
|
|
|
# needed for model format conversion, never for inference.
|
|
|
|
|
"ctranslate2.converters",
|
|
|
|
|
],
|
2026-03-20 21:33:43 -07:00
|
|
|
win_no_prefer_redirects=False,
|
|
|
|
|
win_private_assemblies=False,
|
|
|
|
|
cipher=block_cipher,
|
|
|
|
|
noarchive=False,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
|
|
|
|
|
|
|
|
|
|
exe = EXE(
|
|
|
|
|
pyz,
|
|
|
|
|
a.scripts,
|
|
|
|
|
[],
|
|
|
|
|
exclude_binaries=True,
|
|
|
|
|
name="voice-to-notes-sidecar",
|
|
|
|
|
debug=False,
|
|
|
|
|
bootloader_ignore_signals=False,
|
|
|
|
|
strip=False,
|
|
|
|
|
upx=True,
|
|
|
|
|
console=True,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
coll = COLLECT(
|
|
|
|
|
exe,
|
|
|
|
|
a.binaries,
|
|
|
|
|
a.zipfiles,
|
|
|
|
|
a.datas,
|
|
|
|
|
strip=False,
|
|
|
|
|
upx=True,
|
|
|
|
|
upx_exclude=[],
|
|
|
|
|
name="voice-to-notes-sidecar",
|
|
|
|
|
)
|