- ✅ 四模型支持: Medium (3B), Small (1B), Tiny (400M), Nano (150M)
- ✅ 三种访问模式: UI 界面 + REST API + MCP 接口
- ✅ 智能 GPU 管理: 自动选择最空闲 GPU,自动释放显存
- ✅ 多语言支持: 中文/英文界面切换
- ✅ 实时监控: GPU 状态实时显示
- ✅ 零配置启动: 一键启动脚本
- Docker & Docker Compose
- NVIDIA GPU + nvidia-docker
- CUDA 12.1+
- 至少 8GB GPU 显存(推荐 16GB+)
./start.sh脚本会自动:
- 检测 NVIDIA 驱动
- 选择最空闲的 GPU
- 检查端口冲突
- 构建并启动容器
启动成功后,访问:
- UI 界面: http://0.0.0.0:8899
- API 文档: http://0.0.0.0:8899/apidocs
- 健康检查: http://0.0.0.0:8899/health
- 打开浏览器访问 http://0.0.0.0:8899
- 输入要转换的文本
- 选择模型和声音
- 调整参数(可选)
- 点击"生成语音"
- 播放或下载生成的音频
UI 特性:
- 现代化深色主题
- 响应式设计(支持移动端)
- 中英文切换
- 实时 GPU 状态监控
- 参数滑块调节
- 音频在线播放
curl -X POST http://0.0.0.0:8899/api/generate \
-H "Content-Type: application/json" \
-d '{
"text": "Hello, this is Orpheus TTS.",
"model": "medium-3b",
"voice": "tara",
"temperature": 0.6,
"top_p": 0.8,
"repetition_penalty": 1.3
}' \
--output output.wavcurl http://0.0.0.0:8899/health# 释放所有模型
curl -X POST http://0.0.0.0:8899/api/offload
# 释放特定模型
curl -X POST "http://0.0.0.0:8899/api/offload?model=medium-3b"访问 http://0.0.0.0:8899/apidocs 查看完整 API 文档和在线测试。
详见 MCP_GUIDE.md
快速示例:
from fastmcp import FastMCP
mcp = FastMCP("orpheus-tts")
# 生成语音
result = await mcp.call_tool(
"generate_speech",
{
"text": "Hello world",
"output_path": "/app/outputs/hello.wav",
"voice": "tara"
}
)| 模型 | 参数量 | 显存需求 | 状态 |
|---|---|---|---|
| medium-3b | 3B | ~8GB | ✅ 可用 |
| small-1b | 1B | ~4GB | 🔜 即将推出 |
| tiny-400m | 400M | ~2GB | 🔜 即将推出 |
| nano-150m | 150M | ~1GB | 🔜 即将推出 |
| 声音 | 特点 | 适用场景 |
|---|---|---|
| tara | 自然、友好 | 通用 |
| leah | 专业、清晰 | 商务 |
| jess | 活泼、年轻 | 娱乐 |
| leo | 男声、沉稳 | 叙述 |
| dan | 男声、友好 | 对话 |
| mia | 温柔、柔和 | 故事 |
| zac | 男声、活力 | 广告 |
| zoe | 清新、明亮 | 教育 |
- temperature (0.1-1.5): 控制随机性,越高越多样化
- top_p (0.1-1.0): 核采样,控制词汇多样性
- repetition_penalty (1.0-2.0): 重复惩罚,>=1.1 推荐
编辑 .env 文件:
# 服务端口
PORT=8899
# GPU 空闲超时(秒)
GPU_IDLE_TIMEOUT=60
# GPU 设备 ID
NVIDIA_VISIBLE_DEVICES=0系统会自动管理 GPU 显存:
- 按需加载: 首次使用时加载模型
- 智能缓存: 常用模型保持在内存中
- 自动释放: 超过
GPU_IDLE_TIMEOUT秒未使用则释放 - 手动控制: 可通过 API/UI 手动释放
# 实时日志
docker-compose logs -f
# 最近 100 行
docker-compose logs --tail=100# 宿主机监控
nvidia-smi -l 1
# 容器内监控
docker exec orpheus-tts nvidia-smidocker-compose downdocker-compose restart错误信息: Bind for 0.0.0.0:8899 failed: port is already allocated
解决方案:
# 修改 .env 中的 PORT
PORT=8900
# 或停止占用端口的服务
lsof -ti:8899 | xargs kill -9错误信息: CUDA error 或 No GPU available
解决方案:
# 检查 NVIDIA 驱动
nvidia-smi
# 检查 nvidia-docker
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
# 重启 Docker
sudo systemctl restart docker错误信息: CUDA out of memory
解决方案:
- 释放其他 GPU 进程
- 使用更小的模型(当可用时)
- 降低
max_model_len参数 - 手动释放显存:访问
/api/offload
解决方案:
# 设置 HuggingFace 镜像
export HF_ENDPOINT=https://hf-mirror.com
# 或预先下载模型
huggingface-cli download canopylabs/orpheus-tts-0.1-finetune-prod错误信息: KV cache error 或 max_model_len property does not exist
解决方案:
# 回退到稳定版本
pip install vllm==0.7.3在 server.py 启动时预加载:
# 在 if __name__ == '__main__' 之前
for model_name in MODEL_CONFIGS.keys():
try:
gpu_manager.get_model(model_name, lambda: load_model(model_name))
except:
pass对于频繁使用的场景,增加 GPU_IDLE_TIMEOUT:
GPU_IDLE_TIMEOUT=600 # 10 分钟参考 Baseten 优化方案
- 生产环境: 添加认证中间件
- 防火墙: 限制访问 IP
- HTTPS: 使用反向代理(Nginx/Caddy)
- 速率限制: 防止滥用
- 原始 README - 项目介绍和训练指南
- MCP 使用指南 - MCP 接口详细文档
- 官方博客 - 模型发布说明
- GitHub Issues - 问题反馈
欢迎提交 Issue 和 Pull Request!
MIT License - 详见 LICENSE