| """ |
| Voice Dialogue PyInstaller Hook |
| 用于配置 Voice Dialogue 应用程序的 PyInstaller 打包规则 |
| """ |
|
|
| import pathlib |
|
|
| from PyInstaller.utils.hooks import ( |
| collect_submodules, |
| collect_data_files, |
| collect_system_data_files, |
| collect_dynamic_libs |
| ) |
|
|
| |
| |
| |
| PROJECT_ROOT = pathlib.Path(__file__).parent.parent.parent.parent |
| ASSETS_ROOT = PROJECT_ROOT / "assets" |
|
|
| |
| |
| |
| |
| hiddenimports = collect_submodules('voice_dialogue') |
| datas = collect_data_files('moyoyo_tts', include_py_files=True) |
| |
| datas += collect_system_data_files(ASSETS_ROOT.as_posix(), "assets") |
|
|
| |
| |
| |
|
|
| |
| ML_DEPENDENCIES = [ |
| "llama_cpp", |
| "torch", |
| "transformers", |
| "pytorch_lightning", |
| "huggingface_hub", |
| "einops", |
| ] |
|
|
| |
| AUDIO_DEPENDENCIES = [ |
| "librosa", |
| "soundfile", |
| "funasr_onnx", |
| "pywhispercpp", |
| "kokoro_onnx", |
| "playsound", |
| "pyaudio", |
| "silero_vad" |
| ] |
|
|
| |
| TEXT_PROCESSING_DEPENDENCIES = [ |
| "jieba", |
| "jieba_fast", |
| "cn2an", |
| "g2p_en", |
| "pypinyin", |
| "misaki", |
| "opencc", |
| "wordsegment", |
| "LangSegment", |
| "en_core_web_sm", |
| "spacy", |
| "spacy_curated_transformers", |
| ] |
|
|
| |
| WEB_DEPENDENCIES = [ |
| "fastapi", |
| "uvicorn", |
| "websockets", |
| "langchain", |
| "langchain_community", |
| ] |
|
|
| |
| SYSTEM_DEPENDENCIES = [ |
| "AppKit", |
| "Foundation", |
| "ffmpeg", |
| ] |
|
|
| |
| OTHER_DEPENDENCIES = [ |
| 'loguru' |
| ] |
|
|
| |
| hiddenimports.extend( |
| ML_DEPENDENCIES + |
| AUDIO_DEPENDENCIES + |
| TEXT_PROCESSING_DEPENDENCIES + |
| WEB_DEPENDENCIES + |
| SYSTEM_DEPENDENCIES + |
| OTHER_DEPENDENCIES |
| ) |
|
|
| |
| |
| |
|
|
| |
| DATA_PACKAGES = [ |
| ("jieba_fast", {}), |
| ("kokoro_onnx", {}), |
| ("language_tags", {}), |
| ("py3langid", {}), |
| ("inflect", {"include_py_files": True}), |
| ("g2p_en", {}), |
| ("wordsegment", {}), |
| ("espeakng_loader", {}), |
| ("spacy", {"include_py_files": True}), |
| ("misaki", {}), |
| ("silero_vad", {}), |
| ] |
|
|
| |
| for package_name, kwargs in DATA_PACKAGES: |
| try: |
| datas += collect_data_files(package_name, **kwargs) |
| except Exception as e: |
| print(f"警告:无法收集包 {package_name} 的数据文件: {e}") |
|
|
| |
| |
| |
|
|
| |
| BINARY_PACKAGES = [ |
| "llama_cpp", |
| "pyaudio" |
| ] |
|
|
| binaries = [] |
| for package_name in BINARY_PACKAGES: |
| try: |
| binaries += collect_dynamic_libs(package_name) |
| except Exception as e: |
| print(f"警告:无法收集包 {package_name} 的动态库: {e}") |
|
|