Files
kefu/wechat_rpa/packaging_asr.py
T
2026-09-21 10:34:06 +08:00

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