Files
qiming/qiming-mcp-proxy/voice-cli/INDEXTTS_SETUP.md
2026-06-01 13:03:20 +08:00

432 lines
8.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# IndexTTS 安装和配置指南
## 概述
本指南介绍如何安装和配置 IndexTTS 环境,用于 voice-cli 项目的文本转语音功能。IndexTTS 是一个基于 GPT 的高质量文本转语音系统,支持中文和英文。
## 系统要求
- **操作系统**: macOS 或 Linux
- **Python**: 3.10.x (必须使用 3.10 版本)
- **内存**: 至少 8GB RAM
- **存储**: 至少 5GB 可用空间(用于模型文件)
- **网络**: 稳定的互联网连接(用于下载模型)
- **包管理器**: uv (推荐) 或 pip
## 快速安装
### 1. 自动安装(推荐)
运行自动安装脚本:
```bash
cd /path/to/voice-cli
./install_indextts.sh
```
这个脚本会自动处理:
- 系统要求检查
- Python 3.10 安装
- uv 包管理器安装
- 虚拟环境创建
- PyTorch 安装
- IndexTTS 从源码安装
- 模型文件下载
- 参考语音文件创建
- 环境测试
### 2. 手动安装
如果自动安装失败,可以按照以下步骤手动安装:
#### 2.1 安装系统依赖
**macOS:**
```bash
brew install python@3.10 ffmpeg git
```
**Linux (Ubuntu/Debian):**
```bash
sudo apt-get update
sudo apt-get install python3.10 python3.10-venv ffmpeg git
```
#### 2.2 安装 uv 包管理器
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
```
#### 2.3 创建虚拟环境
```bash
cd /path/to/voice-cli
python3.10 -m venv .venv
source .venv/bin/activate
```
#### 2.4 安装 PyTorch
```bash
uv add torch torchaudio --index-url https://download.pytorch.org/whl/cpu
```
#### 2.5 安装 IndexTTS
```bash
git clone https://github.com/index-tts/index-tts.git /tmp/index-tts
cd /tmp/index-tts
pip install -e .
cd /path/to/voice-cli
```
#### 2.6 下载模型
```bash
uv add huggingface-hub
python -c "
from huggingface_hub import snapshot_download
snapshot_download(
repo_id='IndexTeam/IndexTTS-1.5',
local_dir='checkpoints'
)
"
```
#### 2.7 创建参考语音文件
```bash
# macOS
say -v "Alex" "This is a reference voice for IndexTTS" -o reference_voice.aiff
ffmpeg -y -i reference_voice.aiff reference_voice.wav
rm -f reference_voice.aiff
# Linux
# 使用录音工具录制参考语音,或使用现有的 WAV 文件
```
## 配置 voice-cli
### 1. 更新 pyproject.toml
确保 `pyproject.toml` 文件包含以下内容:
```toml
[project]
name = "voice-cli-tts"
version = "0.1.0"
description = "TTS dependencies for voice-cli"
requires-python = ">=3.10,<3.11"
dependencies = [
"torch>=2.8",
"torchaudio>=2.8",
"numpy>=1.19.0,<2.0.0",
"soundfile>=0.12",
"huggingface-hub>=0.34.4",
]
[tool.uv]
dev-dependencies = []
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
```
### 2. 使用 uv 管理依赖
```bash
# 激活虚拟环境
source .venv/bin/activate
# 同步依赖
uv sync
# 添加新依赖
uv add <package_name>
# 移除依赖
uv remove <package_name>
```
### 3. 参考语音文件
IndexTTS 需要一个参考语音文件来生成语音。参考语音文件应该是:
- 格式WAV
- 时长3-30 秒
- 质量:清晰、无噪音
- 内容:任何语音内容
## 测试安装
### 1. 运行测试脚本
```bash
source .venv/bin/activate
python test_indextts.py
```
### 2. 手动测试 IndexTTS
```bash
source .venv/bin/activate
indextts "你好,这是一个测试" \
--voice reference_voice.wav \
--output_path test_output.wav \
--model_dir checkpoints \
--config checkpoints/config.yaml \
--force
```
### 3. 测试 TTS 服务
```bash
source .venv/bin/activate
python tts_service.py "你好世界" --output tts_test.wav
```
### 4. 测试 voice-cli 服务器
```bash
# 重新编译 voice-cli
cargo install --path voice-cli --features=metal
# 启动服务器
voice-cli server run
# 在另一个终端测试 TTS 接口
curl --location --request POST 'http://127.0.0.1:8087/tts/sync' \
--header 'Content-Type: application/json' \
--data-raw '{
"text": "测试成功"
}' --max-time 60
```
## 部署和使用
### 1. 日常使用
```bash
# 激活虚拟环境
source .venv/bin/activate
# 启动服务器
voice-cli server run
# 测试 TTS 接口
curl -X POST 'http://127.0.0.1:8087/tts/sync' \
-H 'Content-Type: application/json' \
-d '{"text": "你好世界"}' \
--max-time 60
```
### 2. 使用 uv 管理环境
```bash
# 更新所有依赖
uv sync
# 清理缓存
uv cache clean
# 查看环境信息
uv pip list
```
### 3. 性能监控
IndexTTS 处理时间通常为 15-30 秒,具体取决于:
- 文本长度
- CPU 性能
- 内存可用性
## 故障排除
### 1. 常见问题
**问题Python 版本不兼容**
```bash
# 解决方案:确保使用 Python 3.10.x
python3.10 --version
# 应该显示 Python 3.10.x
```
**问题:模型文件缺失**
```bash
# 解决方案:手动下载模型文件
source .venv/bin/activate
python -c "
from huggingface_hub import hf_hub_download
hf_hub_download(repo_id='IndexTeam/IndexTTS-1.5', filename='gpt.pth', local_dir='checkpoints')
hf_hub_download(repo_id='IndexTeam/IndexTTS-1.5', filename='bigvgan_generator.pth', local_dir='checkpoints')
"
```
**问题FFmpeg 未安装**
```bash
# 解决方案:
macOS: brew install ffmpeg
Linux: sudo apt-get install ffmpeg
```
**问题uv 命令不存在**
```bash
# 解决方案:重新安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
```
**问题IndexTTS 导入失败**
```bash
# 解决方案:重新安装 IndexTTS
source .venv/bin/activate
cd /tmp/index-tts
git pull
pip install -e .
```
### 2. 日志调试
启用详细日志:
```bash
export RUST_LOG=debug
voice-cli server run
```
检查 Python 环境:
```bash
source .venv/bin/activate
python -c "import indextts; print('IndexTTS 导入成功')"
```
检查模型文件:
```bash
ls -la checkpoints/
# 应该包含config.yaml, gpt.pth, bigvgan_generator.pth, dvae.pth 等
```
### 3. 网络问题
如果下载模型失败,可以:
1. 使用代理:`export HF_ENDPOINT=https://hf-mirror.com`
2. 手动下载文件到 checkpoints 目录
3. 使用 wget 下载:
```bash
wget https://huggingface.co/IndexTeam/IndexTTS-1.5/resolve/main/gpt.pth -P checkpoints
```
### 4. 性能优化
- **CPU 优化**:确保使用最新版本的 PyTorch
- **内存优化**:如果内存不足,关闭其他占用内存的应用
- **并发优化**:调整 voice-cli 配置中的并发设置
## 高级配置
### 1. 使用不同的模型
IndexTTS 提供多个模型版本:
- `IndexTeam/IndexTTS`:基础版本
- `IndexTeam/IndexTTS-1.5`:最新版本(推荐)
### 2. 自定义配置
创建自定义配置文件:
```yaml
# custom_config.yaml
model:
path: "checkpoints/gpt.pth"
device: "cpu" # 或 "cuda" 如果有 GPU
audio:
sample_rate: 22050
format: "wav"
synthesis:
speed: 1.0
pitch: 0.0
volume: 1.0
```
### 3. 批量处理
使用 voice-cli 的异步任务接口进行批量处理:
```bash
curl --location --request POST 'http://127.0.0.1:8087/api/v1/tasks/tts' \
--header 'Content-Type: application/json' \
--data-raw '{
"text": "批量处理文本",
"format": "wav",
"priority": "normal"
}'
```
## 维护和更新
### 1. 定期更新
```bash
# 更新 IndexTTS
source .venv/bin/activate
cd /tmp/index-tts
git pull
pip install -e .
# 更新依赖
uv sync
# 更新模型
python -c "
from huggingface_hub import snapshot_download
snapshot_download(
repo_id='IndexTeam/IndexTTS-1.5',
local_dir='checkpoints',
allow_patterns='*.pth,*.yaml,*.model'
)
"
```
### 2. 清理维护
```bash
# 清理下载缓存
rm -rf ~/.cache/huggingface
uv cache clean
# 清理日志
rm -rf logs/*
# 清理临时文件
rm -rf *.tmp *.temp
```
### 3. 备份重要文件
```bash
# 备份模型文件
tar -czf index_tts_models_backup.tar.gz checkpoints/
# 备份配置文件
cp pyproject.toml pyproject.toml.backup
cp reference_voice.wav reference_voice.wav.backup
```
## 许可证
- IndexTTS遵循其开源许可证
- 模型文件:遵循各自的许可证条款
- voice-cli项目许可证
## 支持
- **IndexTTS 官方文档**https://github.com/index-tts/index-tts
- **uv 包管理器**https://docs.astral.sh/uv/
- **问题反馈**GitHub Issues
- **社区支持**Discord、QQ群
## 最佳实践
1. **环境管理**:始终使用虚拟环境和 uv 管理依赖
2. **模型管理**:定期备份重要的模型文件
3. **性能监控**:关注 TTS 处理时间和内存使用
4. **错误处理**:实现适当的重试机制和错误处理
5. **测试验证**:定期测试 TTS 功能确保正常工作
## 注意事项
- IndexTTS 首次运行可能需要较长时间15-30秒
- 确保有足够的内存和存储空间
- 网络连接对于模型下载很重要
- 建议定期备份模型文件和配置