File size: 4,311 Bytes
7e9192a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# 官方配置对齐说明

## 📋 概述

本部署配置基于 [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)