[build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" [tool.uv] index-strategy = "unsafe-best-match" required-environments = [ "sys_platform == 'win32' and platform_machine == 'AMD64'", "sys_platform == 'linux' and platform_machine == 'x86_64'", "sys_platform == 'darwin' and platform_machine == 'arm64'", ] override-dependencies = [ "nvidia-nccl-cu12; sys_platform == 'linux'", ] # uv mặc định cài nhóm `dev`; đặt rỗng để `uv sync` chỉ cài core torch-free. # Muốn dev/test: `uv sync --group dev`. Muốn GPU: `uv sync --group gpu` hoặc `--extra gpu`. default-groups = [] [[tool.uv.index]] name = "pytorch" url = "https://download.pytorch.org/whl/cu128" explicit = true [[tool.uv.index]] name = "pypi" url = "https://pypi.org/simple" [[tool.uv.index]] name = "llama-cpp-metal" url = "https://abetlen.github.io/llama-cpp-python/whl/metal/" explicit = true [project] name = "vieneu" version = "3.0.5" description = "Advanced on-device Vietnamese TTS with instant voice cloning" readme = "README_PYPI.md" license = { file = "LICENSE" } classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Multimedia :: Sound/Audio :: Speech", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Operating System :: OS Independent", ] keywords = [ "text-to-speech", "tts", "vietnamese", "voice-cloning", "speech-synthesis", "real-time", "on-device" ] authors = [ { name = "Phạm Nguyễn Ngọc Bảo", email = "pnnbao@gmail.com" } ] requires-python = ">=3.10" # Minimal, TORCH-FREE core. `pip install vieneu` runs VieNeu-TTS v3 Turbo on CPU # via ONNX Runtime. GPU / older backends (torch, transformers, llama-cpp, lmdeploy, # librosa) live in the optional [gpu] extra. dependencies = [ "sea-g2p>=0.7.6", # phonemizer (Rust, torch-free) — needs punc_norm (>=0.7.6) "onnxruntime>=1.20.0", # runs the v3 transformers + MOSS codec "numpy", "soundfile", # audio I/O "soxr", # lightweight resampling for voice cloning "tokenizers>=0.20", # phoneme tokenizer (torch-free) "huggingface_hub", # fetch ONNX / config / tokenizer / voices "PyYAML", # gradio config.yaml "gradio>=5.49.1", # web UI (vieneu-web) "perth>=0.2.0", # optional audio watermark (skipped gracefully if absent) "google-generativeai>=0.8.6", "google-genai>=2.9.0", ] [project.urls] "Homepage" = "https://github.com/pnnbao97/VieNeu-TTS" "Repository" = "https://github.com/pnnbao97/VieNeu-TTS" "Bug Tracker" = "https://github.com/pnnbao97/VieNeu-TTS/issues" "Documentation" = "https://github.com/pnnbao97/VieNeu-TTS/blob/main/README.md" "Source Code" = "https://github.com/pnnbao97/VieNeu-TTS" "Changelog" = "https://github.com/pnnbao97/VieNeu-TTS/releases" [project.optional-dependencies] # GPU + older backends (v1/v2 PyTorch & GGUF, v3 Turbo on GPU). Adds the heavy deps # that the minimal/ONNX install deliberately omits. gpu = [ "torch", "torchaudio", "transformers", "librosa>=0.11.0", "neucodec>=0.0.4", "lmdeploy; sys_platform != 'darwin'", "triton-windows; sys_platform == 'win32'", "triton; sys_platform == 'linux'", "accelerate; sys_platform == 'darwin'", "llama-cpp-python==0.3.16", ] [dependency-groups] dev = [ "pytest", "pytest-asyncio", # Test-only deps for the GPU/standard/xpu backend tests (NOT in the runtime # install — `pip install vieneu` stays minimal/torch-free). CI installs the dev # group, so these tests can import librosa/transformers/neucodec-based engines. "librosa>=0.11.0", "transformers", "neucodec>=0.0.4", ] gpu = [ "neucodec>=0.0.4", "torch==2.8.0", "torchaudio==2.8.0", "datasets>=3.2.0", "perth>=0.2.0", "lmdeploy; sys_platform != 'darwin'", "triton-windows; sys_platform == 'win32'", "triton; sys_platform == 'linux'", "transformers; sys_platform == 'darwin'", "accelerate; sys_platform == 'darwin'", "trafilatura>=2.0.0", "llama-cpp-python==0.3.16", ] [tool.pytest.ini_options] pythonpath = ["src"] [project.scripts] vieneu-web = "apps.gradio_main:main" vieneu-stream = "apps.web_stream:main" [tool.setuptools] package-dir = {"" = "src", "apps" = "apps", "examples" = "examples"} [tool.setuptools.packages.find] where = ["src", "."] include = ["vieneu*", "vieneu_utils*", "apps*", "examples*"] [tool.setuptools.package-data] vieneu = ["assets/*.json", "assets/samples/*"] [tool.uv.sources] torch = [ { index = "pytorch", marker = "sys_platform != 'darwin'" }, { index = "pypi", marker = "sys_platform == 'darwin'" } ] torchaudio = [ { index = "pytorch", marker = "sys_platform != 'darwin'" }, { index = "pypi", marker = "sys_platform == 'darwin'" } ] lmdeploy = [ { url = "https://github.com/InternLM/lmdeploy/releases/download/v0.11.0/lmdeploy-0.11.0+cu128-cp312-cp312-win_amd64.whl", marker = "sys_platform == 'win32' and python_version == '3.12'" }, { url = "https://github.com/InternLM/lmdeploy/releases/download/v0.11.0/lmdeploy-0.11.0+cu128-cp312-cp312-manylinux2014_x86_64.whl", marker = "sys_platform == 'linux' and python_version == '3.12'" }, { index = "pypi", marker = "sys_platform == 'darwin'" } ] llama-cpp-python = [ { url = "https://github.com/pnnbao97/VieNeu-TTS/releases/download/wheels-v0.3.16/llama_cpp_python-0.3.16-cp312-cp312-win_amd64.whl", marker = "sys_platform == 'win32' and python_version == '3.12'" }, { index = "llama-cpp-metal", marker = "sys_platform == 'darwin'" }, { index = "pypi", marker = "sys_platform != 'win32' and sys_platform != 'darwin'" } ]