# Core
pyyaml>=6.0
ruamel.yaml>=0.18      # comment-preserving config.yaml writes from the GUI
loguru>=0.7
httpx>=0.27
numpy>=1.24,<2.0
pydantic>=2.5

# Audio I/O
sounddevice>=0.4.6
soundfile>=0.12
scipy>=1.11

# Wake word + VAD
silero-vad>=5.1
openwakeword>=0.6.0
onnxruntime>=1.17

# STT
# BatchedInferencePipeline (4× GPU speedup) requires >=1.1; Silero-VAD v6 in >=1.2.1
faster-whisper>=1.1

# HuggingFace – hf_xet enables fast Xet-storage downloads (avoids HTTP fallback warning)
hf_xet>=1.0

# Speaker identification
speechbrain>=1.0

# TTS — Piper VITS (CPU ONNX inference, fast and low-overhead)
# piper-tts 2.x requires Python >=3.11; 1.7.0 has the same API surface
piper-tts>=1.7.0,<2.0
# For voice training only (not needed for inference):
#   pip install piper-train
#   pip install onnx "numpy<2"   (ONNX export; keep numpy<2 — newer onnx deps pull numpy 2)
# espeak-ng is required for training (German phonemisation):
#   https://github.com/espeak-ng/espeak-ng/releases  — install the Windows binary and add to PATH

# MCP
mcp>=1.2,<3

# Slave-device API server (javis-slave companion app)
fastapi>=0.110
uvicorn>=0.29
python-multipart>=0.0.9

# Optional: F5-TTS voice cloning backend (pip install f5-tts)
# Requires CC-BY-NC model weights downloaded from Hugging Face on first run.
# Switch backend via:  tts.backend: f5  in config.yaml
# f5-tts>=1.1.20

# Optional: DeepFilterNet neural noise reduction (pip install deepfilternet)
# Automatically denoises mic input before STT when installed.
# deepfilternet>=0.5.6

# GUI
PySide6>=6.6
qasync>=0.27

# CUDA (install separately based on driver version)
# CUDA 13.2 (current): pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu132
# CUDA 12.4:           pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu124
# CUDA 12.1:           pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu121
# Or let the app auto-detect: python -m javis --install-deps
#
# NOTE: CTranslate2 (faster-whisper STT) requires cublas64_12.dll at runtime.
# Option A (pip — lightweight, recommended):
#   pip install nvidia-cublas-cu12 nvidia-cudnn-cu12 nvidia-cuda-runtime-cu12
# Option B: install the full CUDA 12 Toolkit from NVIDIA:
#   https://developer.nvidia.com/cuda-12-0-1-download-archive
# Javis auto-discovers option-A DLLs via os.add_dll_directory() at startup.
