Files
2026-02-28 12:43:46 -08:00

104 lines
2.2 KiB
TOML

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "zen-dub-live"
version = "0.1.0"
description = "Real-Time Speech-to-Speech Translation and Lip-Synchronized Video Dubbing"
readme = "README.md"
license = "Apache-2.0"
requires-python = ">=3.14"
authors = [
{ name = "Hanzo AI", email = "[email protected]" }
]
keywords = [
"ai",
"speech-to-speech",
"translation",
"lip-sync",
"dubbing",
"real-time",
"streaming",
"zen-omni",
"zen-dub"
]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Multimedia :: Video",
"Topic :: Multimedia :: Sound/Audio :: Speech",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
]
dependencies = [
"numpy>=1.24.0",
"torch>=2.0.0",
"transformers>=4.40.0",
"sounddevice>=0.4.6",
"soundfile>=0.12.0",
"opencv-python>=4.8.0",
]
[project.optional-dependencies]
all = [
"zen-dub-live[audio,video,ml,broadcast]",
]
audio = [
"librosa>=0.10.0",
"silero-vad>=0.4.0",
]
video = [
"mediapipe>=0.10.0",
]
ml = [
"accelerate>=0.25.0",
"bitsandbytes>=0.41.0",
]
broadcast = [
"av>=11.0.0",
]
dev = [
"pytest>=7.4.0",
"pytest-asyncio>=0.21.0",
"black>=23.0.0",
"ruff>=0.1.0",
]
[project.scripts]
zen-dub-live = "zen_dub_live.cli:main"
[project.urls]
Homepage = "https://zenlm.org"
Repository = "https://github.com/zenlm/zen-dub-live"
Documentation = "https://zenlm.org/docs/zen-dub-live"
Issues = "https://github.com/zenlm/zen-dub-live/issues"
[tool.hatch.build.targets.wheel]
packages = ["src/zen_dub_live"]
[tool.hatch.build.targets.sdist]
include = [
"/src",
"/paper",
"/docs",
]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
[tool.black]
line-length = 88
target-version = ["py310", "py311", "py312"]
[tool.ruff]
line-length = 88
select = ["E", "F", "I", "N", "W"]
ignore = ["E501"]