File size: 1,943 Bytes
02ad302
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fe88632
 
 
 
 
02ad302
 
 
fe88632
 
 
 
 
02ad302
 
 
 
fe88632
 
 
 
 
02ad302
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
49
50
51
52
53
54
55
56
57
58
59
60
[project]
name = "videovoice"
version = "1.0.0"
description = "AI-powered short video translation with zero-shot voice cloning"
readme = "README.md"
license = "MIT"
requires-python = ">=3.10,<3.13"
dependencies = [
    "openai>=2.30.0",
    "requests>=2.33.0",
    "python-dotenv>=1.2.2",
    "pydub>=0.25.1",
    "ffmpeg-python>=0.2.0",
    "mlx-whisper>=0.4.3",
    "tqdm>=4.67.3",
    "fastapi>=0.135.2",
    "uvicorn[standard]>=0.42.0",
    "python-multipart>=0.0.22",
    "yt-dlp>=2026.3.17",
    "sse-starlette>=3.3.4",
    "soundfile>=0.13.1",
    "deep-translator>=1.11.4",
    "demucs>=4.0.1",
    "boto3>=1.42.82",
    "torch==2.6.0",
    "torchaudio==2.6.0",
    "slowapi>=0.1.9",
    "faster-whisper>=1.2.1",
    "spaces>=0.48.3",
    "openai-whisper>=20240930",
    "gradio>=6.12.0",
    "accelerate>=1.12.0",
    "transformers>=4.57.3",
]

[project.optional-dependencies]
# HF Spaces install from requirements-{cbox,omni}.txt and ignore these.
# Locally: `uv sync --extra chatterbox` installs the PyPI chatterbox-tts
# (we skip-worktree the vendored ./chatterbox/ folder so it doesn't shadow
# the PyPI package). `--extra omnivoice` is heavier and optional.
chatterbox = ["chatterbox-tts>=0.1.7"]
omnivoice = ["omnivoice>=0.1.4"]

[tool.uv]
# Declare chatterbox and omnivoice extras as mutually exclusive so uv
# doesn't try to resolve them into one lockfile view.
conflicts = [
    [{ extra = "chatterbox" }, { extra = "omnivoice" }],
]
override-dependencies = [
    # onnxruntime 1.24.x metadata claims py3.10 support but no 3.10 wheels
    # ship on PyPI — force resolution to the last version that has 3.10 wheels.
    "onnxruntime<1.24",
    # chatterbox-tts==0.1.7 pins gradio==6.8.0, but app.py needs >=6.12.0
    # for gradio.Server. Override so the extras can coexist in a lockfile;
    # gradio is only loaded by app.py (HF), so the local chatterbox install
    # never exercises gradio code.
    "gradio>=6.12.0",
]