File size: 1,433 Bytes
18d028b
 
 
 
f81dbc6
9dc2f54
 
 
 
 
18d028b
 
 
 
 
54cd35c
18d028b
 
 
 
55a07df
18d028b
 
 
 
 
 
2ce7b16
 
 
 
18d028b
 
 
 
f90fef2
f117b17
 
 
 
 
 
 
18d028b
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Pinned to versions that are known to work together on HF Spaces (sdk_version 4.44.1).
gradio==4.44.1
gradio-client==1.3.0
pydantic>=2.9,<2.10
huggingface_hub>=0.26,<0.30
# Pin starlette to a version where TemplateResponse(name, context) still
# works — starlette 0.41+ swapped the signature to (request, name, context)
# which breaks gradio 4.44.1's jinja2 cache key (TypeError: unhashable dict).
starlette>=0.36,<0.41
jinja2>=3.1,<3.2

# Backend / IO
fastapi>=0.115
uvicorn[standard]>=0.32
httpx>=0.27
websockets>=10.4,<13
python-multipart>=0.0.12
python-dotenv>=1.0

# Imaging
pillow>=10.4,<11.0
numpy>=2.0,<3.0
opencv-python-headless>=4.10

# Inference clients
openai>=1.54

# Audio: gTTS = primary (free, fast, ~tiny dep, real audio).
# Coqui XTTS-v2 would be higher quality but is 2GB and slow on basic CPU.
gtts>=2.5
# soundfile is the silent-stub fallback when even gTTS fails.
soundfile>=0.12

# Vision pipeline (MediaPipe Holistic for the pose-debug overlay)
# Optional at runtime — landmarks.py lazy-imports it.
mediapipe>=0.10.18
# Sign classifier (MLP for fingerspelling — runs on Space CPU).
torch>=2.4

# Note: transformers, TTS (Coqui), and librosa are NOT in the Space
# requirements. Composer (Qwen3-8B) and TTS (XTTS-v2) are served from
# AMD Developer Cloud. The local TTS path falls back to a silent-stub
# WAV when soundfile is the only audio dep available.
# Dev / test
pytest>=8.3
ruff>=0.7
mypy>=1.13