feat: Implement conversion service with job management and logging

- Added `ConversionService` class to handle job queuing, processing, and cancellation.
- Introduced `Job`, `JobLog`, and `JobResult` data classes to manage job details and results.
- Implemented job status tracking with enums for better state management.
- Created a web interface with HTML templates for job submission and monitoring.
- Developed CSS styles for a modern UI layout and responsive design.
- Added functionality for voice profile management in the voice mixer.
- Implemented a Docker Compose configuration for GPU support.
- Wrote unit tests for the conversion service to ensure job processing works as expected.
This commit is contained in:
JB
2025-10-05 15:53:33 -07:00
parent 033c809b95
commit 338ff104e8
18 changed files with 2353 additions and 436 deletions
+14 -4
View File
@@ -13,7 +13,6 @@ 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 = [
"PyQt5>=5.15.11",
"kokoro>=0.9.4",
"misaki[zh]>=0.9.4",
"ebooklib>=0.19",
@@ -25,7 +24,10 @@ dependencies = [
"charset_normalizer>=3.4.1",
"chardet>=5.2.0",
"static_ffmpeg>=2.13",
"Markdown>=3.9"
"Markdown>=3.9",
"Flask>=3.0.3",
"numpy>=1.24.0",
"gpustat>=1.1.1"
]
classifiers = [
@@ -48,11 +50,13 @@ 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"
abogen = "abogen.web.app:main"
[project.scripts]
abogen-cli = "abogen.main:main"
abogen-cli = "abogen.web.app:main"
abogen-web = "abogen.web.app:main"
[tool.hatch.build.targets.sdist]
exclude = [
@@ -66,6 +70,12 @@ exclude = [
[tool.hatch.build.targets.wheel]
packages = ["abogen"]
[tool.hatch.build]
include = [
"abogen/web/templates/**",
"abogen/web/static/**",
]
[tool.hatch.version]
path = "abogen/VERSION"
pattern = "^(?P<version>.+)$"