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