| # 官方配置对齐说明 | |
| ## 📋 概述 | |
| 本部署配置基于 [High-Logic/Genie](https://github.com/High-Logic/Genie) 官方仓库进行对齐,确保与上游项目保持一致性。 | |
| ## 🔍 官方仓库分析 | |
| ### Docker 配置分析 | |
| 从官方 `Docker/Dockerfile` 发现: | |
| ```dockerfile | |
| # Use official Python image | |
| FROM python:3.12-slim | |
| # Install system dependencies needed by PyAudio | |
| RUN apt-get update && apt-get install -y \ | |
| portaudio19-dev \ | |
| python3-dev \ | |
| build-essential \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Install Python dependencies | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| ``` | |
| ### 核心依赖 | |
| 从官方源码分析得出的核心依赖: | |
| - `genie-tts`: 官方包 | |
| - `soundfile`: 音频文件读写 | |
| - `soxr`: 高质量音频重采样 | |
| - `onnxruntime`: ONNX 模型推理 | |
| - `huggingface_hub`: 模型下载 | |
| - `rich`: 日志输出 | |
| - `pyopenjtalk`: 日语文本处理 | |
| ### API 使用方式 | |
| 官方 API 调用方式: | |
| ```python | |
| import genie_tts as genie | |
| # 1. 加载预定义角色 | |
| genie.load_predefined_character('misono_mika') | |
| # 2. TTS 合成 | |
| genie.tts( | |
| character_name='misono_mika', | |
| text='どうしようかな……やっぱりやりたいかも……!', | |
| play=True, | |
| split_sentence=True, | |
| save_path="output.wav" | |
| ) | |
| ``` | |
| ### 环境变量配置 | |
| 官方推荐的环境变量: | |
| ```python | |
| # HuBERT 模型路径(可选) | |
| os.environ['HUBERT_MODEL_PATH'] = r"C:\path\to\chinese-hubert-base.onnx" | |
| # Open JTalk 字典路径(可选) | |
| os.environ['OPEN_JTALK_DICT_DIR'] = r"C:\path\to\open_jtalk_dic_utf_8-1.11" | |
| # 缓存配置(可选) | |
| os.environ['Max_Cached_Character_Models'] = '3' | |
| os.environ['Max_Cached_Reference_Audio'] = '10' | |
| ``` | |
| ## 🔄 我们的对齐方案 | |
| ### 1. 依赖配置对齐 | |
| **更新前(问题):** | |
| - 包含了非必需的 `torch`, `torchaudio` | |
| - 缺少 `soxr` 高质量音频处理库 | |
| - 缺少官方核心包 `genie-tts` | |
| **更新后(对齐):** | |
| ```txt | |
| # 核心TTS引擎 - 官方Genie包 | |
| genie-tts>=1.0.0 | |
| # 音频处理库(来自官方源码) | |
| soundfile>=0.12.0 | |
| soxr>=0.3.0 | |
| scipy>=1.9.0 | |
| librosa>=0.10.0 | |
| # ONNX运行时(与官方对齐) | |
| onnxruntime>=1.16.0 | |
| # 日语文本处理(官方要求) | |
| pyopenjtalk | |
| # 日志输出(与官方对齐) | |
| rich>=12.0.0 | |
| ``` | |
| ### 2. API 调用对齐 | |
| **更新前:** | |
| - 复杂的模型管理逻辑 | |
| - 自定义缓存处理 | |
| **更新后:** | |
| ```python | |
| # 直接使用官方API | |
| genie.load_predefined_character(character_name) | |
| genie.tts( | |
| character_name=character_name, | |
| text=processed_text, | |
| play=False, | |
| split_sentence=True, | |
| save_path=output_path | |
| ) | |
| ``` | |
| ### 3. 环境变量对齐 | |
| ```python | |
| # 基于官方文档设置环境变量 | |
| os.environ["HF_HUB_ENABLE_PROGRESS_BAR"] = "1" | |
| os.environ["TOKENIZERS_PARALLELISM"] = "false" | |
| # 可选的官方配置(注释形式) | |
| # os.environ['HUBERT_MODEL_PATH'] = r"path/to/chinese-hubert-base.onnx" | |
| # os.environ['OPEN_JTALK_DICT_DIR'] = r"path/to/open_jtalk_dic_utf_8-1.11" | |
| # os.environ['Max_Cached_Character_Models'] = '3' | |
| # os.environ['Max_Cached_Reference_Audio'] = '10' | |
| ``` | |
| ## 🚀 PyAudio 问题解决 | |
| ### 官方 Docker 处理方式 | |
| 官方 Docker 通过系统级依赖解决: | |
| ```dockerfile | |
| RUN apt-get install -y portaudio19-dev python3-dev build-essential | |
| ``` | |
| ### Hugging Face Spaces 适配 | |
| 由于 HF Spaces 限制,我们采用: | |
| 1. **移除 PyAudio**:避免编译错误 | |
| 2. **Web 音频播放**:通过 Gradio 界面播放 | |
| 3. **备注说明**:清楚标注处理方式 | |
| ```txt | |
| # Note: PyAudio is excluded for Hugging Face Spaces compatibility | |
| # Audio playback is handled via web interface instead of local system audio | |
| ``` | |
| ## ✅ 验证清单 | |
| - [x] 使用官方 `genie-tts` 包 | |
| - [x] 包含所有官方核心依赖(soundfile, soxr, onnxruntime) | |
| - [x] API 调用方式与官方一致 | |
| - [x] 环境变量设置参考官方文档 | |
| - [x] 错误处理机制完善 | |
| - [x] 文档说明完整 | |
| ## 🔗 参考资料 | |
| - [Official GitHub Repository](https://github.com/High-Logic/Genie) | |
| - [Official Documentation](https://github.com/High-Logic/Genie/tree/main/README.md) | |
| - [Docker Configuration](https://github.com/High-Logic/Genie/tree/main/Docker) | |
| - [API Tutorial](https://github.com/High-Logic/Genie/tree/main/Tutorial) | |
| - [Official Examples](https://github.com/High-Logic/Genie/tree/main/Tutorial/English) |