mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 21:50:28 +02:00
Compare commits
1
Commits
b7026a666d
...
webui
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
de4c418dff |
+1
-2
@@ -1,6 +1,5 @@
|
||||
# Unreleased
|
||||
|
||||
# 1.3.0
|
||||
- Special thanks to [@jeremiahsb](https://github.com/jeremiahsb) for his [massive contribution](https://github.com/denizsafak/abogen/pull/120) (>55k lines!) that brought the Web UI, EPUB 3 pipeline, and core architectural improvements to life.
|
||||
- Added an EPUB 3 packaging pipeline that builds media-overlay EPUBs from generated audio and chunk metadata.
|
||||
- Persisted chunk timing metadata in job artifacts and exercised the exporter with automated tests.
|
||||
- Added Flask-based Web UI (`abogen-web`) for Docker and headless server deployments.
|
||||
|
||||
+61
-51
@@ -5,50 +5,63 @@ 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" }
|
||||
]
|
||||
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"]
|
||||
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",
|
||||
"kokoro>=0.9.4",
|
||||
"misaki[zh]>=0.9.4",
|
||||
"supertonic>=0.1.0",
|
||||
"ebooklib>=0.19",
|
||||
"beautifulsoup4>=4.13.4",
|
||||
"spacy>=3.8.7,<4.0",
|
||||
"en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl",
|
||||
"PyMuPDF>=1.25.5",
|
||||
"platformdirs>=4.3.7",
|
||||
"soundfile>=0.13.1",
|
||||
"mutagen>=1.47.0",
|
||||
"pygame>=2.6.1",
|
||||
"charset_normalizer>=3.4.1",
|
||||
"chardet>=5.2.0",
|
||||
"python-dotenv>=1.0.1",
|
||||
"static_ffmpeg>=2.13",
|
||||
"Markdown>=3.9",
|
||||
"Flask>=3.0.3",
|
||||
"numpy>=1.24.0",
|
||||
"gpustat>=1.1.1",
|
||||
"num2words>=0.5.13",
|
||||
"httpx>=0.27.0",
|
||||
"PyQt6>=6.5.0"
|
||||
"pip",
|
||||
"kokoro>=0.9.4",
|
||||
"misaki[zh]>=0.9.4",
|
||||
"supertonic>=0.1.0",
|
||||
"ebooklib>=0.19",
|
||||
"beautifulsoup4>=4.13.4",
|
||||
"spacy>=3.8.7,<4.0",
|
||||
"PyMuPDF>=1.25.5",
|
||||
"platformdirs>=4.3.7",
|
||||
"soundfile>=0.13.1",
|
||||
"mutagen>=1.47.0",
|
||||
"pygame>=2.6.1",
|
||||
"charset_normalizer>=3.4.1",
|
||||
"chardet>=5.2.0",
|
||||
"python-dotenv>=1.0.1",
|
||||
"static_ffmpeg>=2.13",
|
||||
"Markdown>=3.9",
|
||||
"Flask>=3.0.3",
|
||||
"numpy>=1.24.0",
|
||||
"gpustat>=1.1.1",
|
||||
"num2words>=0.5.13",
|
||||
"httpx>=0.27.0",
|
||||
"PyQt6>=6.5.0",
|
||||
]
|
||||
|
||||
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"
|
||||
"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"]
|
||||
@@ -73,21 +86,18 @@ abogen-pyqt = "abogen.pyqt.main:main"
|
||||
|
||||
[tool.hatch.build.targets.sdist]
|
||||
exclude = [
|
||||
"/.github",
|
||||
"/demo",
|
||||
"/abogen/resources",
|
||||
"/abogen/assets/create_shortcuts.bat",
|
||||
"WINDOWS_INSTALL.bat",
|
||||
"/.github",
|
||||
"/demo",
|
||||
"/abogen/resources",
|
||||
"/abogen/assets/create_shortcuts.bat",
|
||||
"WINDOWS_INSTALL.bat",
|
||||
]
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["abogen"]
|
||||
|
||||
[tool.hatch.build]
|
||||
include = [
|
||||
"abogen/webui/templates/**",
|
||||
"abogen/webui/static/**",
|
||||
]
|
||||
include = ["abogen/webui/templates/**", "abogen/webui/static/**"]
|
||||
|
||||
[tool.hatch.version]
|
||||
path = "abogen/VERSION"
|
||||
@@ -95,8 +105,8 @@ pattern = "^(?P<version>.+)$"
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
filterwarnings = [
|
||||
"ignore:builtin type .* has no __module__ attribute:DeprecationWarning",
|
||||
"ignore:Importing 'parser.split_arg_string' is deprecated:DeprecationWarning"
|
||||
"ignore:builtin type .* has no __module__ attribute:DeprecationWarning",
|
||||
"ignore:Importing 'parser.split_arg_string' is deprecated:DeprecationWarning",
|
||||
]
|
||||
|
||||
# --- OPTIONAL DEPENDENCIES ---
|
||||
@@ -118,7 +128,7 @@ dev = ["build", "pytest"]
|
||||
[tool.uv.sources]
|
||||
kokoro = [
|
||||
{ git = "https://github.com/hexgrad/kokoro.git", marker = "sys_platform == 'darwin'" },
|
||||
{ index = "pypi", marker = "sys_platform != 'darwin'" }
|
||||
{ index = "pypi", marker = "sys_platform != 'darwin'" },
|
||||
]
|
||||
|
||||
# --- TORCH CONFIGURATION ---
|
||||
@@ -134,13 +144,13 @@ torch = [
|
||||
{ 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'" }
|
||||
{ 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 = "pytorch-rocm-64-nightly", marker = "extra == 'rocm'" },
|
||||
]
|
||||
|
||||
# --- INDEX DEFINITIONS ---
|
||||
|
||||
Reference in New Issue
Block a user