9.7 KiB
Dependency Management Guide
TTS Audio Suite - Complete dependency compatibility documentation
This document tracks all package dependencies, conflicts, solutions, and constraints implemented in the install script for universal compatibility across Python versions and platforms.
Quick Reference
| Package | Version Constraint | Reason | Solution |
|---|---|---|---|
torch |
>=2.6.0 for security |
CVE-2025-32434 (Higgs Audio) | Smart CUDA detection + upgrade |
numpy |
>=2.2.0,<2.3.0 |
Numba compatibility | Version constraints |
numba |
>=0.61.2 |
NumPy 2.2+ support | Auto-upgrade from 0.61.0 |
librosa |
--no-deps | Forces NumPy downgrade | Isolated installation |
descript-audiotools |
--no-deps | Protobuf 3.19 conflict | Isolated installation |
faiss-cpu |
>=1.7.4 |
Cross-platform compatibility | Linux: try GPU, Windows: CPU |
Critical Dependencies & Conflicts
Python 3.13 Audio-Separator + Resampy Issue
Problem: Audio-Separator v0.36.1 claims Python 3.13 support, but dependency resampy 0.4.3 fails
- Audio-Separator loads successfully ✅
- resampy compilation fails with numba in Python 3.13 ❌
NUMBA_DISABLE_JIT=1doesn't prevent resampy from attempting compilation
Impact: Certain UVR models fail with Audio-Separator, force RVC fallback
Failed in nopython mode pipeline (step: nopython frontend)
Untyped global name '_resample_loop_s': Cannot determine Numba type of <class 'function'>
Root Cause: resampy 0.4.3 has incomplete Python 3.13 + numba support despite Audio-Separator's claims
Current Solution:
- Audio-Separator fails → RVC fallback works for compatible models (UVR v2/v3 architecture)
- Some models (e.g., UVR-DeNoise.pth) incompatible with both engines
- Clean error messages implemented to avoid confusion
Model Compatibility:
- ✅ Working Models: UVR-DeEcho-DeReverb.pth, 6_HP-Karaoke-UVR.pth (via RVC fallback)
- ❌ Broken Models: UVR-DeNoise.pth, models requiring Audio-Separator-specific architectures
Future Fix: Wait for resampy or Audio-Separator to fix Python 3.13 numba compilation
1. NumPy + Numba Compatibility Crisis
Problem: Different numba versions support different NumPy ranges
numba 0.61.0: Supports NumPy ≤ 2.1.x ❌numba 0.61.2+: Supports NumPy 2.2.x ✅
Impact: Core engine loading failures
❌ ChatterboxTTS not available: Numba needs NumPy 2.1 or less. Got NumPy 2.2.
❌ F5-TTS not available: Numba needs NumPy 2.1 or less. Got NumPy 2.2.
Solution: Smart version detection and upgrade
# Detect numba version and upgrade if needed
if numba_version == "0.61.0" or numba_version == "0.61.1":
pip install --upgrade "numba>=0.61.2"
Constraint: numpy>=2.2.0,<2.3.0 + numba>=0.61.2
2. PyTorch Security Vulnerability (CVE-2025-32434)
Problem: Higgs Audio engine requires PyTorch 2.6+ for security
- PyTorch < 2.6: transformers blocks torch.load() due to CVE
- PyTorch 2.6+: Security issue resolved
Impact: Higgs Audio fails to load models
ValueError: Due to a serious vulnerability issue in torch.load...
Solution: Smart CUDA detection and upgrade
- Detect system CUDA version (12.8 → cu124)
- Install PyTorch 2.6+ with correct CUDA support
- Force reinstall if switching CPU↔CUDA variants
Constraint: torch>=2.6.0 with appropriate CUDA index
3. Librosa Dependency Hell
Problem: librosa forces NumPy downgrades
- librosa dependencies conflict with our NumPy constraints
- Causes cascade of package downgrades
Impact: Breaks carefully balanced dependency tree
Solution: --no-deps installation
pip install librosa --no-deps
# Then manually install librosa's actual dependencies
Dependencies manually installed:
lazy_loader>=0.1,msgpack>=1.0,pooch>=1.1soxr>=0.3.2,decorator>=4.3.0,joblib>=1.0scikit-learn>=1.1.0,audioread>=2.1.9
4. descript-audiotools Protobuf Conflict
Problem: Forces protobuf downgrade 6.x → 3.19.x
- Breaks other packages expecting modern protobuf
- Cascading compatibility issues
Solution: --no-deps installation with manual dependencies
pip install descript-audiotools --no-deps
Dependencies manually installed:
flatten-dict,ffmpy,importlib-resourcesrandomname,markdown2,pyloudnormpystoi,torch-stoi,ipython,tensorboard
5. FAISS Platform Compatibility
Problem: faiss-gpu availability varies by platform
- Linux:
faiss-gpu-cu12,faiss-gpu-cu11available ✅ - Windows: No GPU version available via pip ❌
Solution: Platform-specific installation
if not is_windows and cuda_detected:
try:
pip install faiss-gpu-cu12 # Linux + CUDA
except:
pip install faiss-cpu # Fallback
else:
pip install faiss-cpu # Windows/CPU-only
Python Version Compatibility
Python 3.13 Specific Issues
| Package | Issue | Solution | Status |
|---|---|---|---|
MediaPipe |
Binary incompatible | OpenSeeFace fallback | ✅ Working |
numba |
JIT compilation issues | Disable JIT in Python 3.13 | ✅ Working |
audioop packages |
Not available | Remove from dependencies | ✅ Fixed |
resampy |
Numba compilation fails in Audio-Separator | RVC fallback works for compatible models | ⚠️ Partial |
Python 3.12 Compatibility
| Package | Issue | Solution | Status |
|---|---|---|---|
| All engines | NumPy/numba mismatch | Smart version detection | ✅ Working |
| PyTorch CUDA | CPU vs CUDA variants | Force reinstall detection | ✅ Working |
Install Script Logic Flow
1. Environment Detection
- Python version (3.12, 3.13+)
- Platform (Windows, Linux, macOS)
- CUDA availability (nvidia-smi detection)
- CUDA version (12.8 → cu124, 11.8 → cu118)
2. PyTorch Installation
- Check existing version and CUDA support
- Upgrade if needed (security + compatibility)
- Platform-specific CUDA index selection
3. Core Dependencies
- Smart package checking (skip if satisfied)
- Safe packages installed normally
- Sub-dependencies for --no-deps packages
4. NumPy + Numba Resolution
- Detect numba version compatibility
- Upgrade numba if needed (0.61.0 → 0.61.2+)
- Install constrained NumPy (>=2.2.0,<2.3.0)
5. Problematic Package Isolation
- Install with --no-deps to prevent conflicts
- Manually install required sub-dependencies
- Maintain compatibility with main dependency tree
Package Categories
✅ SAFE Packages (Normal installation)
transformers>=4.46.3,accelerate,datasetssoundfile>=0.12.0,sounddevice>=0.4.0jieba,pypinyin,unidecodeconformer>=0.3.2,x-transformers,vocoss3tokenizer>=0.1.7,resemble-perth
⚠️ PROBLEMATIC Packages (--no-deps required)
librosa- Forces NumPy downgradedescript-audiotools- Protobuf conflictsdescript-audio-codec- Dependency conflictscached-path- Forces package downgradestorchcrepe- Conflicts via librosaonnxruntime- Forces NumPy 2.3.x (Python 3.13 only)
🎯 VERSION-CRITICAL Packages
torch>=2.6.0- Security requirementnumpy>=2.2.0,<2.3.0- Numba compatibilitynumba>=0.61.2- NumPy 2.2+ supporttransformers>=4.46.3- Higgs Audio compatibility
Testing Matrix
Verified Working Combinations
| Python | Platform | PyTorch | NumPy | Numba | Status |
|---|---|---|---|---|---|
| 3.12.6 | Windows | 2.7.1+cu126 | 2.2.6 | 0.61.2 | ✅ All engines |
| 3.13.x | Windows | 2.8.0+cpu | 2.2.6 | 0.61.2 | ✅ All engines |
| 3.12.6 | Linux | 2.6.0+cu121 | 2.2.6 | 0.61.2 | ✅ All engines |
Known Broken Combinations
| Python | Platform | PyTorch | NumPy | Numba | Issue |
|---|---|---|---|---|---|
| 3.12.6 | Windows | Any | 2.2.6 | 0.61.0 | ❌ Engine loading |
| Any | Any | <2.6.0 | Any | Any | ❌ Higgs Audio CVE |
Troubleshooting Guide
Engine Loading Failures
❌ ChatterboxTTS not available: Numba needs NumPy 2.1 or less
Cause: numba 0.61.0 with NumPy 2.2+
Fix: Run install script to upgrade numba to 0.61.2+
Higgs Audio Model Loading
❌ CVE-2025-32434 vulnerability error
Cause: PyTorch < 2.6.0
Fix: Run install script to upgrade PyTorch 2.6+
Windows CUDA Issues
AssertionError: Torch not compiled with CUDA enabled
Cause: CPU PyTorch on CUDA system
Fix: Install script detects and reinstalls CUDA PyTorch
Maintenance Notes
When Adding New Dependencies
- Check conflicts with existing constraints
- Test with problematic packages (librosa, descript-*)
- Update this documentation
- Add to appropriate category (Safe/Problematic/Critical)
When Supporting New Python Versions
- Test numba compatibility with NumPy constraints
- Check for binary package availability
- Update compatibility matrix
- Add version-specific workarounds if needed
When Updating Major Dependencies
- Review cascade effects on sub-dependencies
- Test with --no-deps packages
- Update version constraints
- Verify cross-platform compatibility
Last updated: Version 4.8.19 - Python 3.13 Audio-Separator + resampy compatibility issues documented