whisper-dictation/whisper-dictation.spec

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,
)