mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 13:40:27 +02:00
Merge upstream/main into main
Resolved conflicts:
- CHANGELOG.md: Kept Unreleased section + upstream version history
- README.md: Kept web-first documentation rewrite
- abogen/Dockerfile: Removed (replaced by webui/Dockerfile)
- abogen/{book_handler,conversion,gui,queue_manager_gui,voice_formula_gui}.py: Kept stubs (implementations in pyqt/)
- abogen/main.py: Kept web UI launcher
- abogen/utils.py: Kept version with optional chardet imports
- pyproject.toml: Merged dependencies (kept Flask, gpustat, httpx for web UI + pip from upstream)
This commit is contained in:
@@ -0,0 +1 @@
|
||||
3.12
|
||||
+21
-14
@@ -19,11 +19,16 @@
|
||||
|
||||
# 1.2.4
|
||||
- **Subtitle generation is now available for all languages!** Abogen now supports subtitle generation for non-English languages using audio duration-based timing. Available modes include `Line`, `Sentence`, and `Sentence + Comma`. (Note: Word-level subtitle modes remain English-only due to Kokoro's timestamp token limitations.)
|
||||
- New option: **"Use spaCy for sentence segmentation"** You can now use [spaCy](https://spacy.io/) to automatically detect sentence boundaries and produce cleaner, more readable subtitles.
|
||||
- New option: **Pre-download models and voices for offline use** You can now pre-download all required Kokoro models, voices, and spaCy language models.
|
||||
- New option: **"Use spaCy for sentence segmentation"** You can now use [spaCy](https://spacy.io/) to automatically detect sentence boundaries and produce cleaner, more readable subtitles. Quick summary:
|
||||
- **What it does:** Splits text into natural sentences so subtitle entries read better and align more naturally with speech.
|
||||
- **Why this helps:** The previous punctuation-based splitting could break sentences incorrectly at common abbreviations (e.g. "Mr.", "Dr.", "Prof.") or initials, producing wrong subtitle breaks. spaCy avoids those false splits by using linguistic rules to detect real sentence boundaries.
|
||||
- **For Non-English:** spaCy runs **before** audio generation to create better sentence chunks for TTS.
|
||||
- **For English:** spaCy runs **during** subtitle generation to find accurate sentence breaks after TTS.
|
||||
- **Note:** spaCy segmentation is only applied when subtitle mode is `Sentence` or `Sentence + Comma`. When turned off, it falls back to simple punctuation-based splitting.
|
||||
- New option: **Pre-download models and voices for offline use** You can now pre-download all required Kokoro models, voices, and spaCy language models using this option in the settings menu. Allowing you to use Abogen completely offline without any internet connection.
|
||||
- Added support for `.` separator in timestamps (e.g. `HH:MM:SS.ms`) for timestamp-based text files.
|
||||
- Optimized regex compilation and eliminated busy-wait loops.
|
||||
- Possibly fixed `Silent truncation of long paragraphs` issue mentioned in #91 by @xklzlxr.
|
||||
- Possibly fixed `Silent truncation of long paragraphs` issue mentioned in [#91](https://github.com/denizsafak/abogen/issues/91) by [@xklzlxr](https://github.com/xklzlxr)
|
||||
- Fixed unused regex patterns and variable naming conventions.
|
||||
- Improvements in code and documentation.
|
||||
|
||||
@@ -31,18 +36,20 @@
|
||||
- Same as 1.2.2, re-released to fix an issue with subtitle timing when using timestamp-based text files.
|
||||
|
||||
# 1.2.2
|
||||
- **You can now voice your subtitle files!** Simply add `.srt`, `.ass` or `.vtt` files to generate timed audio.
|
||||
- New option: **"Use silent gaps between subtitles"**: Prevents unnecessary audio speed-up by letting speech continue into the silent gaps between subtitles.
|
||||
- New option: **"Subtitle speed adjustment method"**: Choose how to speed up audio when needed (TTS Regeneration or FFmpeg Time-stretch).
|
||||
- Added support for embedding cover images in M4B files.
|
||||
- Fixed `[WinError 1114] A dynamic link library (DLL) initialization routine failed` error on Windows.
|
||||
- Potential fix for `CUDA GPU is not available` issue.
|
||||
- **You can now voice your subtitle files!** Simply add `.srt`, `.ass` or `.vtt` files to generate timed audio. Alternatively, add a text file with timestamps in `HH:MM:SS` or `HH:MM:SS,ms` format to generate audio that matches the timestamps. See [here](https://github.com/denizsafak/abogen?tab=readme-ov-file#about-timestamp-based-text-files) for detailed instructions.
|
||||
- New option: **"Use silent gaps between subtitles"**: Prevents unnecessary audio speed-up by letting speech continue into the silent gaps between subtitles.
|
||||
- New option: **"Subtitle speed adjustment method"**: Choose how to speed up audio when needed:
|
||||
- **TTS Regeneration (better quality):** Re-generates the audio at a faster speed for more natural sound.
|
||||
- **FFmpeg Time-stretch (better speed):** Quickly speeds up the generated audio.
|
||||
- Added support for embedding cover images in M4B files. Abogen now automatically extracts cover images from EPUB and PDF files. You can also manually specify a cover image using the `<<METADATA_COVER_PATH:path>>` tag in your text file. (To prevent MPV from showing the cover image, you can add `audio-display=no` to your MPV config file.)
|
||||
- Fixed `[WinError 1114] A dynamic link library (DLL) initialization routine failed` error on Windows, pre-loading PyTorch DLLs before initializing PyQt6 to avoid DLL initialization errors, mentioned in #98 by @ephr0n.
|
||||
- Potential fix for `CUDA GPU is not available` issue, by ensuring PyTorch is installed correctly with CUDA support on Windows using the installer script.
|
||||
- Improvements in code and documentation.
|
||||
|
||||
# 1.2.1
|
||||
- Upgraded Abogen's interface from PyQt5 to PyQt6 for better compatibility and long-term support.
|
||||
- Added tooltip indicators in queue manager to display book handler options.
|
||||
- Added `Open processed file` and `Open input file` options for items in the queue manager.
|
||||
- Added tooltip indicators in queue manager to display book handler options (`Save chapters separately` and `Merge chapters at the end`) for queued items.
|
||||
- Added `Open processed file` and `Open input file` options for items in the queue manager, instead of just `Open file` option.
|
||||
- Added loading gif animation to book handler window.
|
||||
- Fixed light theme slider colors in voice mixer for better visibility (for non-Windows users).
|
||||
- Fixed subtitle word-count splitting logic for more accurate segmentation.
|
||||
@@ -52,9 +59,9 @@
|
||||
- Added `Line` option to subtitle generation modes, allowing subtitles to be generated based on line breaks in the text, by @mleg in #94.
|
||||
- Added a loading indicator to the book handler window for better user experience during book preprocessing.
|
||||
- Fixed `cannot access local variable 'is_narrow'` error when subtitle format `SRT` was selected, mentioned by @Kinasa0096 in #88.
|
||||
- Fixed folder and filename sanitization to properly handle OS-specific illegal characters.
|
||||
- Fixed folder and filename sanitization to properly handle OS-specific illegal characters (Windows, Linux, macOS), ensuring compatibility across all platforms when creating chapter folders and files.
|
||||
- Fixed `/` and `\` path display by normalizing paths.
|
||||
- Fixed book reprocessing issue where books were being processed every time the chapters window was opened.
|
||||
- Fixed book reprocessing issue where books were being processed every time the chapters window was opened, improving performance when reopening the same book.
|
||||
- Fixed taskbar icon not appearing correctly in Windows.
|
||||
- Fixed "Go to folder" button not opening the chapter output directory when only separate chapters were generated.
|
||||
- Improvements in code and documentation.
|
||||
@@ -185,7 +192,7 @@
|
||||
- Improved invalid profile handling in the voice mixer.
|
||||
|
||||
# v1.0.3
|
||||
- Added voice mixing, allowing multiple voices to be combined into a single “Mixed Voice”, a feature mentioned by @PulsarFTW in #1. Special thanks to @jborza for making this possible through his contributions in #5.
|
||||
- Added voice mixing, allowing multiple voices to be combined into a single "Mixed Voice", a feature mentioned by @PulsarFTW in #1. Special thanks to @jborza for making this possible through his contributions in #5.
|
||||
- Added profile system to voice mixer, allowing users to create and manage multiple voice profiles.
|
||||
- Improvements in the voice mixer, mostly for organizing controls and enhancing user experience.
|
||||
- Added icons for flags and genders in the GUI, making it easier to identify different options.
|
||||
|
||||
+60
-24
@@ -8,9 +8,6 @@ cd /d "%~dp0"
|
||||
:: Japanese: "ja"
|
||||
set MISAKI_LANG=en
|
||||
|
||||
:: Set PyTorch CUDA version
|
||||
set CUDA_VERSION=128
|
||||
|
||||
:::
|
||||
::: _ ____ ___ ____ _____ _ _
|
||||
::: / \ | __ ) / _ \ / ___|| ____| \ | |
|
||||
@@ -23,6 +20,7 @@ set CUDA_VERSION=128
|
||||
for /f "delims=: tokens=*" %%A in ('findstr /b ::: "%~f0"') do @echo(%%A
|
||||
|
||||
set CURRENT_DIR="%CD%"
|
||||
set "UV_CACHE_DIR=%~dp0.uv_cache"
|
||||
set NAME=abogen
|
||||
set PROJECTFOLDER=abogen
|
||||
set RUN=python_embedded\Scripts\abogen.exe
|
||||
@@ -32,6 +30,28 @@ set refrenv=%PROJECTFOLDER%\refrenv.bat
|
||||
set PYTHON_PATH=python_embedded\pythonw.exe
|
||||
set PYTHON_CONSOLE_PATH=python_embedded\python.exe
|
||||
|
||||
:: ---------------------------------------------------------
|
||||
:: Version Selection
|
||||
:: ---------------------------------------------------------
|
||||
echo.
|
||||
echo Select installation version:
|
||||
echo [1] Stable (PyPI) - Safer, recommended for most users.
|
||||
echo [2] Dev (Local) - Install from current folder (may include commits after the latest release).
|
||||
echo.
|
||||
choice /C 12 /M "Your choice"
|
||||
|
||||
if errorlevel 2 (
|
||||
set INSTALL_SOURCE=dev
|
||||
echo.
|
||||
echo Selected: Dev - Local Editable
|
||||
) else (
|
||||
set INSTALL_SOURCE=pypi
|
||||
echo.
|
||||
echo Selected: Stable - PyPI
|
||||
)
|
||||
echo.
|
||||
:: ---------------------------------------------------------
|
||||
|
||||
:: Check for updates
|
||||
echo Checking for updates...
|
||||
set VERSION_FILE=%PROJECTFOLDER%\VERSION
|
||||
@@ -139,10 +159,10 @@ if exist "%VERSION_FILE%" (
|
||||
REM Python embedded download configuration for different architectures
|
||||
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
||||
set PYTHON_EMBEDDED_FILE=%PROJECTFOLDER%\python_embedded_win32.zip
|
||||
set PYTHON_EMBEDDED_URL=https://github.com/wojiushixiaobai/Python-Embed-Win64/releases/download/3.12.8/python-3.12.8-embed-win32.zip
|
||||
set PYTHON_EMBEDDED_URL=https://github.com/wojiushixiaobai/Python-Embed-Win64/releases/download/3.12.12/python-3.12.12-embed-win32.zip
|
||||
) else (
|
||||
set PYTHON_EMBEDDED_FILE=%PROJECTFOLDER%\python_embedded_amd64.zip
|
||||
set PYTHON_EMBEDDED_URL=https://github.com/wojiushixiaobai/Python-Embed-Win64/releases/download/3.12.8/python-3.12.8-embed-amd64.zip
|
||||
set PYTHON_EMBEDDED_URL=https://github.com/wojiushixiaobai/Python-Embed-Win64/releases/download/3.12.12/python-3.12.12-embed-amd64.zip
|
||||
)
|
||||
|
||||
:: Check if Python exists
|
||||
@@ -200,18 +220,19 @@ if not "%~1"=="" (
|
||||
echo Open with: "%~1"
|
||||
)
|
||||
|
||||
:: Update pip
|
||||
echo Updating pip...
|
||||
:: Update pip and install uv
|
||||
echo Updating pip and installing uv...
|
||||
%PYTHON_CONSOLE_PATH% -m pip install --upgrade pip --no-warn-script-location
|
||||
%PYTHON_CONSOLE_PATH% -m pip install uv --no-warn-script-location
|
||||
if errorlevel 1 (
|
||||
echo Failed to update pip.
|
||||
echo Failed to install uv.
|
||||
pause
|
||||
exit /b
|
||||
)
|
||||
|
||||
:: Install docopt's fixed version
|
||||
echo Installing fixed version of docopt...
|
||||
%PYTHON_CONSOLE_PATH% -m pip install --force-reinstall https://github.com/denizsafak/abogen/raw/refs/heads/main/abogen/resources/docopt-0.6.2-py2.py3-none-any.whl --no-warn-script-location
|
||||
%PYTHON_CONSOLE_PATH% -m uv pip install --system --force-reinstall https://github.com/denizsafak/abogen/raw/refs/heads/main/abogen/resources/docopt-0.6.2-py2.py3-none-any.whl
|
||||
if errorlevel 1 (
|
||||
echo Failed to install fixed version of docopt.
|
||||
pause
|
||||
@@ -220,7 +241,7 @@ if errorlevel 1 (
|
||||
|
||||
:: Install progress's fixed version
|
||||
echo Installing fixed version of progress...
|
||||
%PYTHON_CONSOLE_PATH% -m pip install --force-reinstall https://github.com/denizsafak/abogen/raw/refs/heads/main/abogen/resources/progress-1.6-py3-none-any.whl --no-warn-script-location
|
||||
%PYTHON_CONSOLE_PATH% -m uv pip install --system --force-reinstall https://github.com/denizsafak/abogen/raw/refs/heads/main/abogen/resources/progress-1.6-py3-none-any.whl
|
||||
if errorlevel 1 (
|
||||
echo Failed to install fixed version of progress.
|
||||
pause
|
||||
@@ -229,7 +250,7 @@ if errorlevel 1 (
|
||||
|
||||
:: Install setup requirements
|
||||
echo Installing setup requirements...
|
||||
%PYTHON_CONSOLE_PATH% -m pip install --upgrade setuptools setuptools-scm wheel sphinx hatchling editables --no-warn-script-location
|
||||
%PYTHON_CONSOLE_PATH% -m uv pip install --system --upgrade setuptools setuptools-scm wheel sphinx hatchling editables
|
||||
if errorlevel 1 (
|
||||
echo Failed to install setup requirements.
|
||||
pause
|
||||
@@ -238,32 +259,43 @@ if errorlevel 1 (
|
||||
|
||||
:: Install gpustat
|
||||
echo Installing gpustat...
|
||||
%PYTHON_CONSOLE_PATH% -m pip install gpustat --no-warn-script-location
|
||||
%PYTHON_CONSOLE_PATH% -m uv pip install --system gpustat
|
||||
if errorlevel 1 (
|
||||
echo Failed to install gpustat.
|
||||
pause
|
||||
exit /b
|
||||
)
|
||||
|
||||
:: Install project and dependencies from pyproject.toml
|
||||
echo Checking and installing project dependencies...
|
||||
if exist %PYPROJECT_FILE% (
|
||||
echo Installing project from pyproject.toml...
|
||||
%PYTHON_CONSOLE_PATH% -m pip install -e . --no-warn-script-location
|
||||
:: Install project based on user selection
|
||||
if "%INSTALL_SOURCE%"=="pypi" (
|
||||
echo Installing stable version from PyPI...
|
||||
%PYTHON_CONSOLE_PATH% -m uv pip install --system abogen
|
||||
if errorlevel 1 (
|
||||
echo Failed to install abogen from PyPI.
|
||||
pause
|
||||
exit /b
|
||||
)
|
||||
) else (
|
||||
echo Checking and installing project dependencies...
|
||||
if exist %PYPROJECT_FILE% (
|
||||
echo Installing project from pyproject.toml using uv...
|
||||
:: Using uv pip install --system --editable
|
||||
%PYTHON_CONSOLE_PATH% -m uv pip install --system --editable .
|
||||
if errorlevel 1 (
|
||||
echo Failed to install from pyproject.toml.
|
||||
pause
|
||||
exit /b
|
||||
)
|
||||
) else (
|
||||
) else (
|
||||
echo Warning: pyproject.toml not found in current directory.
|
||||
pause
|
||||
)
|
||||
)
|
||||
|
||||
:: Install misaki again if MISAKI_LANG is not set to "en"
|
||||
:: Install misaki again if MISAKI_LANG is not set to "en" via uv
|
||||
if "%MISAKI_LANG%" NEQ "en" (
|
||||
echo Configuring language pack: %MISAKI_LANG%
|
||||
%PYTHON_CONSOLE_PATH% -m pip install misaki[%MISAKI_LANG%] --upgrade --no-warn-script-location
|
||||
%PYTHON_CONSOLE_PATH% -m uv pip install --system misaki[%MISAKI_LANG%] --upgrade
|
||||
if errorlevel 1 (
|
||||
echo Failed to install misaki language pack.
|
||||
pause
|
||||
@@ -281,8 +313,10 @@ if /I "%IS_NVIDIA%"=="true" (
|
||||
for /f %%i in ('%PYTHON_CONSOLE_PATH% -c "from torch.cuda import is_available; print(is_available())"') do set cuda_available=%%i
|
||||
|
||||
if "%cuda_available%"=="False" (
|
||||
echo Installing PyTorch with CUDA %CUDA_VERSION% support...
|
||||
%PYTHON_CONSOLE_PATH% -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu%CUDA_VERSION% --no-warn-script-location
|
||||
echo "Installing PyTorch with CUDA (12.8) support..."
|
||||
:: We need to use an older version of PyTorch (2.8.0) until this issue is fixed: https://github.com/pytorch/pytorch/issues/166628
|
||||
:: Solution mentioned by @mazenemam19 in #99:
|
||||
%PYTHON_CONSOLE_PATH% -m uv pip install --system torch==2.8.0+cu128 torchvision==0.23.0+cu128 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cu128
|
||||
echo.
|
||||
if errorlevel 1 (
|
||||
echo Failed to install PyTorch.
|
||||
@@ -305,8 +339,10 @@ if /I "%IS_NVIDIA%"=="true" (
|
||||
if errorlevel 2 (
|
||||
echo Skipping PyTorch installation.
|
||||
) else (
|
||||
echo Installing PyTorch with CUDA %CUDA_VERSION% support...
|
||||
%PYTHON_CONSOLE_PATH% -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu%CUDA_VERSION% --no-warn-script-location
|
||||
echo "Installing PyTorch with CUDA (12.8) support..."
|
||||
:: We need to use an older version of PyTorch (2.8.0) until this issue is fixed: https://github.com/pytorch/pytorch/issues/166628
|
||||
:: Solution mentioned by @mazenemam19 in #99:
|
||||
%PYTHON_CONSOLE_PATH% -m uv pip install --system torch==2.8.0+cu128 torchvision==0.23.0+cu128 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cu128
|
||||
if errorlevel 1 (
|
||||
echo Failed to install PyTorch.
|
||||
pause
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
1.1.9
|
||||
1.2.5
|
||||
+7
-7
@@ -2,9 +2,7 @@ from abogen.utils import get_version
|
||||
|
||||
# Program Information
|
||||
PROGRAM_NAME = "abogen"
|
||||
PROGRAM_DESCRIPTION = (
|
||||
"Generate audiobooks from EPUBs, PDFs and text with synchronized captions."
|
||||
)
|
||||
PROGRAM_DESCRIPTION = "Generate audiobooks from EPUBs, PDFs, text and subtitles with synchronized captions."
|
||||
GITHUB_URL = "https://github.com/denizsafak/abogen"
|
||||
VERSION = get_version()
|
||||
|
||||
@@ -44,6 +42,7 @@ SUPPORTED_SOUND_FORMATS = [
|
||||
SUPPORTED_SUBTITLE_FORMATS = [
|
||||
"srt",
|
||||
"ass",
|
||||
"vtt",
|
||||
]
|
||||
|
||||
# Supported input formats
|
||||
@@ -51,6 +50,9 @@ SUPPORTED_INPUT_FORMATS = [
|
||||
"epub",
|
||||
"pdf",
|
||||
"txt",
|
||||
"srt",
|
||||
"ass",
|
||||
"vtt",
|
||||
]
|
||||
|
||||
# Supported languages for subtitle generation
|
||||
@@ -59,10 +61,7 @@ SUPPORTED_INPUT_FORMATS = [
|
||||
# Please refer to: https://github.com/hexgrad/kokoro/blob/6d87f4ae7abc2d14dbc4b3ef2e5f19852e861ac2/kokoro/pipeline.py
|
||||
# 383 English processing (unchanged)
|
||||
# 384 if self.lang_code in 'ab':
|
||||
SUPPORTED_LANGUAGES_FOR_SUBTITLE_GENERATION = [
|
||||
"a",
|
||||
"b",
|
||||
]
|
||||
SUPPORTED_LANGUAGES_FOR_SUBTITLE_GENERATION = list(LANGUAGE_DESCRIPTIONS.keys())
|
||||
|
||||
# Voice and sample text constants
|
||||
VOICES_INTERNAL = [
|
||||
@@ -148,6 +147,7 @@ COLORS = {
|
||||
"BLUE_BORDER_HOVER": "#6ab0de",
|
||||
"YELLOW_BACKGROUND": "rgba(255, 221, 51, 0.40)",
|
||||
"GREY_BACKGROUND": "rgba(128, 128, 128, 0.15)",
|
||||
"GREY_BORDER": "#808080",
|
||||
"RED_BACKGROUND": "rgba(232, 78, 60, 0.15)",
|
||||
"RED_BG": "rgba(232, 78, 60, 0.10)",
|
||||
"RED_BG_HOVER": "rgba(232, 78, 60, 0.15)",
|
||||
|
||||
@@ -13,5 +13,9 @@ class QueuedItem:
|
||||
subtitle_mode: str
|
||||
output_format: str
|
||||
total_char_count: int
|
||||
replace_single_newlines: bool = False
|
||||
replace_single_newlines: bool = True
|
||||
use_silent_gaps: bool = False
|
||||
subtitle_speed_method: str = "tts"
|
||||
save_base_path: str = None
|
||||
save_chapters_separately: bool = None
|
||||
merge_chapters_at_end: bool = None
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 63 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 148 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 103 KiB |
+78
-1
@@ -13,12 +13,13 @@ 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",
|
||||
"kokoro>=0.9.4",
|
||||
"misaki[zh]>=0.9.4",
|
||||
"supertonic>=0.1.0",
|
||||
"ebooklib>=0.19",
|
||||
"beautifulsoup4>=4.13.4",
|
||||
"spacy>=3.5,<4.0",
|
||||
"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",
|
||||
@@ -91,3 +92,79 @@ include = [
|
||||
[tool.hatch.version]
|
||||
path = "abogen/VERSION"
|
||||
pattern = "^(?P<version>.+)$"
|
||||
|
||||
# --- 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"]
|
||||
# Development dependencies # uv tool install abogen[dev]
|
||||
dev = ["build"]
|
||||
|
||||
# --- 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
|
||||
|
||||
Reference in New Issue
Block a user