32 lines
1.7 KiB
Python
32 lines
1.7 KiB
Python
"""Explicit offline ASR build inputs; never package user recordings or caches."""
|
|
from pathlib import Path
|
|
|
|
|
|
def asr_build_inputs(project_root):
|
|
from voice_transcription import _verified_model_directory
|
|
from PyInstaller.utils.hooks import (
|
|
collect_data_files, collect_dynamic_libs, collect_submodules,
|
|
collect_delvewheel_libs_directory, copy_metadata,
|
|
)
|
|
model = _verified_model_directory(Path(project_root) / "assets/asr/faster-whisper-base")
|
|
names = ("config.json", "model.bin", "tokenizer.json", "vocabulary.txt",
|
|
"README.md", "LICENSE.whisper.txt", "manifest.json")
|
|
datas = []
|
|
for name in names:
|
|
path = model / name
|
|
if not path.is_file():
|
|
raise FileNotFoundError("Offline ASR build file missing: " + name)
|
|
datas.append((str(path), "assets/asr/faster-whisper-base"))
|
|
# The VAD ONNX file must accompany faster_whisper.vad's __file__-based lookup.
|
|
datas += collect_data_files("faster_whisper")
|
|
binaries = collect_dynamic_libs("ctranslate2")
|
|
datas, binaries = collect_delvewheel_libs_directory("av", datas=datas, binaries=binaries)
|
|
hidden = ["voice_transcription", "pysilk.backends.cython._silk"]
|
|
hidden += collect_submodules("faster_whisper") + collect_submodules("av")
|
|
hidden += collect_submodules("pysilk", filter=lambda name: ".cffi" not in name)
|
|
hidden += collect_submodules("ctranslate2", filter=lambda name: not name.startswith(
|
|
("ctranslate2.converters", "ctranslate2.specs")))
|
|
for package in ("faster-whisper", "silk-python", "ctranslate2", "av", "tokenizers", "huggingface-hub"):
|
|
datas += copy_metadata(package)
|
|
return datas, binaries, sorted(set(hidden))
|