一、背景与痛点:为什么需要源码安装?
在初次尝试时,遇到了几个典型问题:
- CUDA 版本地狱:直接 pip 安装的预编译包,其依赖的 PyTorch 等库可能与环境中的 CUDA 版本不匹配,导致无法使用 GPU 加速。
- 依赖项冲突:TTS 依赖的库版本可能与项目中其他组件的依赖产生冲突,pip 安装难以灵活控制。
- 推理延迟不理想:使用默认方式加载模型和推理,首次调用延迟高,连续合成的吞吐量达不到生产要求。
- 定制化需求:有时可能需要针对特定硬件(如不同架构的 GPU)进行编译优化,或者修改少量源码以适应业务逻辑,pip 安装的包无法满足。
这些问题促使转向更具控制力的源码编译安装路线。
二、技术选型:源码编译 vs Pip 安装
- Pip 安装:优点是极其简单。缺点是'黑盒化',无法优化底层计算、可能存在环境冲突、难以调试和定制。
- 源码编译:优点是完全掌控环境,可以针对本地 CUDA 和硬件进行优化,便于调试和深度定制。缺点是流程稍复杂。
对于追求部署效率、推理性能和生产稳定性的场景,源码编译是更优的选择。
三、实战:Ubuntu 环境下源码安装与优化
实验环境为 Ubuntu 20.04,CUDA 11.8,RTX 4090。以下步骤具有普适性。
1. 前置环境准备
首先,确保系统基础编译环境和 GPU 驱动就绪。
# 更新系统包
sudo apt-get update && sudo apt-get upgrade -y
# 安装编译依赖
sudo apt-get install -y build-essential cmake git wget
sudo apt-get install -y libopenblas-dev libsndfile1-dev libssl-dev
# 验证 CUDA 和 cuDNN
nvidia-smi
# 查看驱动和 CUDA 版本
# 确保 CUDA 版本与后续 PyTorch 编译要求一致
2. 创建并激活独立的 Python 虚拟环境
强烈建议使用虚拟环境,实现依赖隔离。
# 使用 conda 或 venv,这里以 conda 为例
conda create -n tts_env python=3.9 -y
conda activate tts_env
# 在虚拟环境中安装 PyTorch,严格匹配本地 CUDA 版本
# 从 https://pytorch.org/get-started/locally/ 获取对应命令
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
3. 克隆源码与编译安装
这是核心步骤,通过设置环境变量来指导编译过程。
# 克隆 TTS 仓库
git clone https://github.com/coqui-ai/TTS.git
cd TTS
# 关键步骤:设置编译优化参数
# 启用 CUDA,并指定你的 GPU 计算架构(如 RTX 4090 为 Ada Lovelace,架构代号 sm_89)
CUDA_HOME=/usr/local/cuda-11.8
TORCH_CUDA_ARCH_LIST=
USE_CUDA=1
pip install -e .



