Files
UmbraAudio/pyproject.toml
B.D. Murphy c86e323d7a Initial commit: UmbraAudio audiobook generation program
Quality-first multi-pass audiobook generation from English manuscripts.

Includes:
- umbraaudio/ core package (pipeline, config, voices, web review UI)
- scripts/ CLI utilities + model download script
- tts_server/ remote TTS server
- specs/ design docs, tests/, pyproject.toml + uv.lock
- Qwen3-TTS git submodule (pinned 022e286) with local demo.py UI patch
  saved at scripts/qwen3_tts_demo_umbra_patch.patch
- .env with runtime config/secrets

Excluded (see .gitignore): models/ (downloaded via scripts/download_models.sh),
output/, logs/, .venv, .umbra runtime data, and book projects
(DealHunterShip_*), which are committed separately.
2026-08-30 07:58:24 -07:00

100 lines
1.9 KiB
TOML

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "umbraaudio"
version = "0.1.0"
description = "Quality-first multi-pass audiobook generation from manuscripts"
readme = "README.md"
license = "MIT"
requires-python = ">=3.11"
authors = [{ name = "UmbraAudio" }]
keywords = ["audiobook", "tts", "text-to-speech", "narration"]
classifiers = [
"Development Status :: 3 - Alpha",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Multimedia :: Sound/Audio :: Speech",
]
dependencies = [
# CLI
"click>=8.1",
"rich>=13.0",
# Database
"aiosqlite>=0.19",
# Parsers
"ebooklib>=0.18",
"beautifulsoup4>=4.12",
"PyMuPDF>=1.23",
"python-docx>=1.0",
# NLP / Analysis
"booknlp>=1.0",
# LLM clients
"openai>=1.10",
"httpx>=0.25",
# TTS engines
"qwen-tts>=0.1",
"edge-tts>=6.1",
"torch>=2.6",
"torchaudio>=2.6",
# Audio processing
"librosa>=0.10",
"soundfile>=0.12",
"pydub>=0.25",
# Quality metrics
"speechmos>=0.0.1",
"openai-whisper>=20231117",
"speechbrain>=0.5",
# Web review UI
"fastapi>=0.104",
"uvicorn[standard]>=0.24",
"jinja2>=3.1",
"python-multipart>=0.0.6",
# Utilities
"numpy>=1.24",
"pydantic>=2.5",
"pydantic-settings>=2.1",
]
[project.optional-dependencies]
dev = [
"pytest>=7.4",
"pytest-asyncio>=0.21",
"pytest-cov>=4.1",
"ruff>=0.1",
"mypy>=1.7",
]
[project.scripts]
umbraaudio = "umbraaudio.cli:main"
[tool.hatch.build.targets.wheel]
packages = ["umbraaudio"]
[tool.ruff]
target-version = "py311"
line-length = 100
[tool.ruff.lint]
select = ["E", "F", "I", "N", "W", "UP", "B", "A", "SIM", "TCH"]
[tool.mypy]
python_version = "3.11"
strict = true
plugins = ["pydantic.mypy"]
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"