[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "abogen" description = "Generate audiobooks from EPUBs, PDFs and text with synchronized captions." authors = [ { name="Deniz Şafak", email="denizsafak98@gmail.com" } ] readme = "README.md" license = "MIT" requires-python = ">=3.10, <3.13" keywords = ["audiobook", "epub", "pdf", "text-to-speech", "subtitle", "tts", "kokoro", "accessibility", "book-converter", "voice-synthesis", "multilingual", "chapter-management", "subtitles", "content-creation", "media-generation"] dependencies = [ "pip", "PyQt6>=6.10.0", "kokoro>=0.9.4", "misaki[zh]>=0.9.4", "ebooklib>=0.19", "beautifulsoup4>=4.13.4", "PyMuPDF>=1.25.5", "platformdirs>=4.3.7", "soundfile>=0.13.1", "pygame>=2.6.1", "charset_normalizer>=3.4.1", "chardet>=5.2.0", "static_ffmpeg>=2.13", "Markdown>=3.9", "spacy>=3.8.7" ] classifiers = [ "Intended Audience :: End Users/Desktop", "Topic :: Multimedia :: Sound/Audio :: Conversion", "Topic :: Multimedia :: Sound/Audio :: Sound Synthesis", "Topic :: Multimedia :: Sound/Audio :: Speech", "Topic :: Text Processing", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Operating System :: OS Independent" ] dynamic = ["version"] [project.urls] Homepage = "https://github.com/denizsafak/abogen" Documentation = "https://github.com/denizsafak/abogen" Repository = "https://github.com/denizsafak/abogen" Issues = "https://github.com/denizsafak/abogen/issues" [project.gui-scripts] abogen = "abogen.main:main" [project.scripts] abogen-cli = "abogen.main:main" [tool.hatch.build.targets.sdist] exclude = [ "/.github", "/demo", "/abogen/resources", "/abogen/assets/create_shortcuts.bat", "WINDOWS_INSTALL.bat", ] [tool.hatch.build.targets.sdist.force-include] "abogen/libs" = "abogen/libs" [tool.hatch.build.targets.wheel] packages = ["abogen"] [tool.hatch.build.targets.wheel.force-include] "abogen/libs" = "abogen/libs" [tool.hatch.version] path = "abogen/VERSION" pattern = "^(?P.+)$" # --- OPTIONAL DEPENDENCIES --- [project.optional-dependencies] # NVIDIA GPU (Windows) (CUDA 12.6) # uv tool install abogen[cuda126] cuda126 = ["torch"] # NVIDIA GPU (Windows) (CUDA 12.8) # uv tool install abogen[cuda] cuda = ["torch"] # NVIDIA GPU (Windows) (CUDA 13.0) # uv tool install abogen[cuda130] cuda130 = ["torch"] # AMD GPU (Linux) (ROCm 6.4) # uv tool install abogen[rocm] rocm = ["torch", "pytorch-triton-rocm"] # --- KOKORO CONFIGURATION (for macOS) --- [tool.uv.sources] kokoro = [ { git = "https://github.com/hexgrad/kokoro.git", marker = "sys_platform == 'darwin'" }, { index = "pypi", marker = "sys_platform != 'darwin'" } ] # --- TORCH CONFIGURATION --- torch = [ # ROCm 6.4 Nightly (AMD) { index = "pytorch-rocm-64-nightly", marker = "extra == 'rocm'" }, # CUDA 13.0 (NVIDIA) { index = "pytorch-cuda-130", marker = "extra == 'cuda130' and extra != 'rocm'" }, # CUDA 12.6 (NVIDIA) { index = "pytorch-cuda-126", marker = "extra == 'cuda126' and extra != 'rocm' and extra != 'cuda130'" }, # CUDA 12.8 (NVIDIA) { index = "pytorch-cuda-128", marker = "extra == 'cuda' and extra != 'rocm' and extra != 'cuda130' and extra != 'cuda126'" } ] # --- TRITON CONFIGURATION --- pytorch-triton-rocm = [ { index = "pytorch-rocm-64-nightly", marker = "extra == 'rocm'" } ] # --- INDEX DEFINITIONS --- # PyPI Index [[tool.uv.index]] name = "pypi" url = "https://pypi.org/simple" default = true # CUDA 12.6 Index [[tool.uv.index]] name = "pytorch-cuda-126" url = "https://download.pytorch.org/whl/cu126" explicit = true # CUDA 12.8 Index [[tool.uv.index]] name = "pytorch-cuda-128" url = "https://download.pytorch.org/whl/cu128" explicit = true # CUDA 13.0 Index [[tool.uv.index]] name = "pytorch-cuda-130" url = "https://download.pytorch.org/whl/cu130" explicit = true # ROCm 6.4 Nightly Index [[tool.uv.index]] name = "pytorch-rocm-64-nightly" url = "https://download.pytorch.org/whl/nightly/rocm6.4" explicit = true