81 lines
2.3 KiB
Python
81 lines
2.3 KiB
Python
# whisper-dictation.spec
|
|
# -*- mode: python ; coding: utf-8 -*-
|
|
import os, sys
|
|
|
|
import importlib, site
|
|
def _pkg_path(pkg):
|
|
mod = importlib.import_module(pkg)
|
|
if mod.__file__:
|
|
return os.path.dirname(mod.__file__)
|
|
# namespace package — resolve via site-packages
|
|
sp = site.getsitepackages()[0]
|
|
return os.path.join(sp, *pkg.split('.'))
|
|
|
|
_is_windows = sys.platform == 'win32'
|
|
_platform_tag = 'windows' if _is_windows else 'linux'
|
|
|
|
# ── Platform-specific binaries ────────────────────────────────────────────────
|
|
_binaries = []
|
|
_sp = next(p for p in site.getsitepackages() if p.endswith('site-packages'))
|
|
_nvidia = os.path.join(_sp, 'nvidia')
|
|
if _is_windows:
|
|
_binaries = [
|
|
(os.path.join(_nvidia, 'cublas', 'bin', '*.dll'), '.'),
|
|
(os.path.join(_nvidia, 'cudnn', 'bin', '*.dll'), '.'),
|
|
]
|
|
else:
|
|
_binaries = [
|
|
(os.path.join(_nvidia, 'cublas', 'lib', 'libcublas.so*'), '.'),
|
|
(os.path.join(_nvidia, 'cudnn', 'lib', 'libcudnn.so*'), '.'),
|
|
]
|
|
|
|
# ── Platform-specific hidden imports ──────────────────────────────────────────
|
|
_hiddenimports = [
|
|
'ctranslate2',
|
|
'faster_whisper',
|
|
'sounddevice',
|
|
'language_tool_python',
|
|
]
|
|
if _is_windows:
|
|
_hiddenimports.append('pynput.keyboard._win32')
|
|
else:
|
|
_hiddenimports += ['pynput.keyboard._xorg', 'pynput.keyboard._uinput']
|
|
|
|
a = Analysis(
|
|
['main.py'],
|
|
pathex=[],
|
|
binaries=_binaries,
|
|
datas=[
|
|
(os.path.join(_pkg_path('faster_whisper'), 'assets', '*.onnx'), 'faster_whisper/assets'),
|
|
],
|
|
hiddenimports=_hiddenimports,
|
|
hookspath=[],
|
|
hooksconfig={},
|
|
runtime_hooks=[],
|
|
excludes=[],
|
|
noarchive=False,
|
|
)
|
|
pyz = PYZ(a.pure)
|
|
exe = EXE(
|
|
pyz,
|
|
a.scripts,
|
|
[],
|
|
exclude_binaries=True,
|
|
name='whisper-dictation',
|
|
debug=False,
|
|
bootloader_ignore_signals=False,
|
|
strip=False,
|
|
upx=True,
|
|
console=not _is_windows,
|
|
icon='icon.ico' if _is_windows else None,
|
|
)
|
|
coll = COLLECT(
|
|
exe,
|
|
a.binaries,
|
|
a.datas,
|
|
strip=False,
|
|
upx=True,
|
|
upx_exclude=[],
|
|
name='whisper-dictation-' + _platform_tag,
|
|
)
|