abogen 使用指南:将 EPUB、PDF 与文本一键转换为带同步字幕的高质量有声书
【免费下载链接】abogenGenerate audiobooks from EPUBs, PDFs and text with synchronized captions.项目地址: https://gitcode.com/GitHub_Trending/ab/abogen
Abogen(audiobook generator 的缩写)是一款基于 Kokoro-82M 为主线,结合源码(pyproject.toml、abogen/domain、abogen/webui)深入讲解安装部署、桌面端与 Web 端双界面操作、容器化运行、LLM 归一化、Audiobookshelf 集成,以及章节标记、元数据标签、时间戳文本等核心机制,读完即可从零跑通完整的有声书生成流程。
项目概览:一个项目,两套界面
Abogen 提供两套界面,当前功能集有所差异:Web UI 包含更新颖的功能(Supertonic TTS、LLM 归一化、Audiobookshelf 集成等),仍在逐步合并进桌面应用。两套界面各有独立的启动命令:
| 命令 | 界面 | 特性 |
|---|---|---|
abogen | PyQt6 桌面 GUI | 稳定的核心功能 |
abogen-web | Flask Web UI | 核心功能 +Supertonic TTS、LLM Normalization、Audiobookshelf Integration等 |
上述入口命令在 pyproject.toml 中有明确定义:abogen与abogen-pyqt指向abogen.pyqt.main:main,abogen-cli与abogen-web指向abogen.webui.app:main。值得注意的是abogen-cli与abogen-web指向同一个入口——也就是说命令行模式与 Web 服务共用一套后端实现。
项目要求 Python 版本>=3.10, <3.13,核心依赖包括kokoro>=0.9.4、misaki[zh](分词与语音学支持)、spacy(句子切分)、ebooklib(ePub 解析)、PyMuPDF(PDF 解析)、PyQt6(桌面 GUI)、Flask(Web UI)与static_ffmpeg(音频编码)等,详见 pyproject.toml。
安装指南
前置依赖:espeak-ng
无论哪个平台,都需要先安装espeak-ng(Kokoro 的语音学前端依赖):
- Windows:前往 espeak-ng 官方 latest release 页面,下载并运行
*.msi安装包; - Mac:
brew install espeak-ng; - Linux:
sudo apt install espeak-ng(Ubuntu/Debian)、sudo pacman -S espeak-ng(Arch)、sudo dnf install espeak-ng(Fedora)。
Windows 安装
方案一:一键脚本(推荐新手)
- 下载仓库 ZIP 包并解压;
- 双击运行根目录下的 WINDOWS_INSTALL.bat;
- 脚本会自动完成一切——在自包含环境中安装全部依赖(含 CUDA),无需预先安装 Python(脚本会自动安装)。
注意:仍需单独安装 espeak-ng。若丢失快捷方式,程序本体位于
python_embedded/Scripts/abogen.exe,可直接运行。
方案二:使用 uv 安装
# NVIDIA GPU(CUDA 12.8)— 推荐 uv tool install --python 3.12 abogen[cuda] --extra-index-url https://download.pytorch.org/whl/cu128 --index-strategy unsafe-best-match # NVIDIA GPU(CUDA 12.6)— 针对旧驱动 uv tool install --python 3.12 abogen[cuda126] --extra-index-url https://download.pytorch.org/whl/cu126 --index-strategy unsafe-best-match # NVIDIA GPU(CUDA 13.0)— 针对新驱动 uv tool install --python 3.12 abogen[cuda130] --extra-index-url https://download.pytorch.org/whl/cu130 --index-strategy unsafe-best-match # AMD GPU 或无 GPU — AMD 用户需在 Linux 下使用 ROCm 加速(Windows 无 ROCm 支持) uv tool install --python 3.12 abogen方案三:pip 安装(备选)
mkdir abogen && cd abogen python -m venv venv venv\Scripts\activate # NVIDIA GPU:因 PyTorch 上游 issue 需先固定安装 2.8.0 版本 pip install torch==2.8.0+cu128 torchvision==0.23.0+cu128 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cu128 pip install abogen(AMD GPU 暂不支持 Windows,因 ROCm 无 Windows 版本,需使用 Linux。)
这些 CUDA 变体与源码中的可选依赖定义一一对应:查看 pyproject.toml 可看到cuda126/cuda(对应 CUDA 12.8)/cuda130/rocm四个 extra,以及 pyproject.toml 中为每个变体声明的 PyTorch 下载索引(pytorch-cuda-126、pytorch-cuda-128、pytorch-cuda-130、pytorch-rocm-64-nightly)——这正是上述命令中--extra-index-url的来源。
Mac 安装
brew install espeak-ng # Apple Silicon(M1、M2 等) uv tool install --python 3.13 abogen --with "kokoro @ git+https://github.com/hexgrad/kokoro.git,numpy<2" # Intel Mac uv tool install --python 3.12 abogen --with "kokoro @ git+https://github.com/hexgrad/kokoro.git,numpy<2"pip 备选方案:pip3 install abogen,随后对 Apple Silicon 还需安装 Kokoro 的开发版(包含 MPS 支持)pip3 install git+https://github.com/hexgrad/kokoro.git。这也是 pyproject.toml 中[tool.uv.sources]对 darwin 平台从 git 拉取 kokoro 的原因。
Linux 安装
sudo apt install espeak-ng # Ubuntu/Debian # sudo pacman -S espeak-ng # Arch Linux # sudo dnf install espeak-ng # Fedora # NVIDIA GPU 或无 GPU — 无需加 [cuda] 后缀 uv tool install --python 3.12 abogen # AMD GPU(ROCm 6.4) uv tool install --python 3.12 abogen[rocm] --extra-index-url https://download.pytorch.org/whl/nightly/rocm6.4 --index-strategy unsafe-best-matchpip 备选:创建虚拟环境后pip3 install abogen;AMD 用户需先pip3 uninstall torch,再以pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/rocm6.4替换 PyTorch。NVIDIA 用户无需额外安装 CUDA。
桌面应用(PyQt6)
运行与使用流程
安装完成后,终端执行abogen即启动桌面 GUI(若使用WINDOWS_INSTALL.bat安装,桌面上通常已有快捷方式)。使用流程非常直观:
- 拖入任意 ePub、PDF、文本、Markdown 或字幕文件(也可用内置文本编辑器直接编辑);
- 配置参数:语速、音色(或用语音混合器自建音色)、字幕生成风格、输出格式、保存位置;
- 点击Start开始转换。
核心配置选项
| 选项 | 说明 |
|---|---|
| 输入框 | 支持拖放ePub、PDF、.TXT、.MD、.SRT、.ASS、.VTT文件(或使用内置文本编辑器) |
| 队列选项 | 可批量加入多个文件并各自独立配置,详见下文"队列模式" |
| 语速 | 可在0.1x到2.0x之间调整 |
| 选择音色 | 编码规则:第一位字母代表语言(如a美式英语、b英式英语),第二位m代表男声、f代表女声 |
| 语音混合器 | 通过混合多个音色模型创建自定义音色,支持 profile 系统保存 |
| 音色预览 | 处理前先试听所选音色 |
| 生成字幕 | Disabled、Line、Sentence、Sentence + Comma、Sentence + Highlighting、1 word、2 words、3 words等(数字代表每条字幕的字数) |
| 音频输出格式 | .WAV、.FLAC、.MP3、.OPUS(压缩率最佳)和M4B(含章节) |
| 字幕输出格式 | SRT (standard)、ASS (wide)、ASS (narrow)、ASS (centered wide)、ASS (centered narrow) |
| 将单个换行替换为空格 | 将文本中孤立的换行替换为空格,适用于存在"伪换行"的文本 |
| 保存位置 | 保存到输入文件旁、保存到桌面、选择输出文件夹 |
这些选项在源码中有严格的类型约束与默认值管理。例如字幕模式、输出格式与输入格式均定义为枚举类型(见 abogen/domain/enums.py):SubtitleMode支持Disabled / Line / Sentence / Sentence + Comma / Sentence + Highlighting,OutputFormat支持wav / mp3 / flac / opus / m4b(其中WAV、FLAC判定为无损格式),InputFormat将输入区分为"书籍类"(epub/pdf/txt/md)与"字幕类"(srt/ass/vtt)两类,底层转换逻辑据此分流。
书籍处理选项
| 选项 | 说明 |
|---|---|
| 章节控制 | 从 ePUB 或 Markdown 中选择具体章节;PDF 可选择"章节 + 页码" |
| 每章单独保存 | 将电子书每一章保存为独立音频文件 |
| 创建合并版本 | 生成合并全部章节的单一音频文件(若未勾选"每章单独保存",此为默认行为) |
| 保存到带元数据的项目文件夹 | 将转换结果保存到项目文件夹并附带可用元数据文件 |
菜单选项
| 选项 | 说明 |
|---|---|
| 主题 | System/Light/Dark三种主题 |
| 配置每条字幕最大字数 | 设置每条字幕条目的最大单词数 |
| 配置章节间静音时长 | 设置章节之间的静音间隔(秒) |
| 配置日志窗口最大行数 | 设置日志窗口最多显示的行数 |
| 独立章节音频格式 | 独立章节的音频格式:wav/flac/mp3/opus |
| 创建桌面快捷方式 | 一键在桌面创建快捷方式 |
| 打开配置目录 | 打开存放配置文件的目录 |
| 打开缓存目录 | 打开存放已转换文本文件的缓存目录 |
| 清除缓存文件 | 删除转换或预览过程中产生的缓存文件 |
| 字幕间使用静音间隙 | 让语音自然延续到字幕间的静音间隙中,避免不必要的音频加速(针对字幕文件输入);关闭时则加速音频以适配字幕指定的精确时间区间 |
| 字幕速度调整方式 | TTS Regeneration(重生成音频,质量更好)或FFmpeg Time-stretch(快速变速,速度更好),针对字幕文件输入 |
| 使用 spaCy 做句子切分 | 启用后用 spaCy 检测句子边界,比单纯按标点切分更准确(避免把 "Mr." 或 "Dr." 误切)。非英语文本在音频生成前切句;英语文本在字幕生成时切句以改善时机与可读性。仅在字幕模式为Sentence或Sentence + Comma时生效 |
| 预下载模型与音色以离线使用 | 打开窗口展示可用模型与音色,点Download all下载全部所需模型与音色,实现完全离线使用 |
| 禁用 Kokoro 联网 | 阻止 Kokoro 从 HuggingFace Hub 下载模型或音色,适用于离线场景 |
| 启动时检查更新 | 程序启动时自动检查更新 |
| 恢复默认设置 | 将所有设置恢复为默认值 |
spaCy 句子切分与字幕生成的配合在源码中体现为两条路径:非英语文本走spacy_pre_tts_segmentation(在 TTS 前切句,见 abogen/domain/conversion_pipeline.py),英语文本则走_process_spacy_sentences(在字幕生成时基于带时间戳的 token 切句,见 abogen/domain/subtitle_generation.py)。
语音混合器(Voice Mixer)
语音混合器允许你混合多个音色模型创建自定义音色:调整每种音色的权重,并将自定义音色保存为 profile 以备后用。它让你能创建独一无二、个性化的声音。其底层即 README 路线图中提到的"voice formula"功能(混合不同音色模型的公式机制,对应 abogen/domain/voice_utils.py 中的formula_from_kokoro_entry与 abogen/domain/voice_resolution.py 中的 profile 解析逻辑)。
队列模式(Queue Mode)
Abogen 支持队列模式,可一次批量转换多个文件:
- 可直接用队列管理器中的Add files按钮或拖放方式添加文本文件(
.txt)与字幕文件(.srt、.ass、.vtt);PDF、EPUB、Markdown 文件则需在主窗口输入框添加后点击Add to Queue; - 队列中每个文件保留加入时的配置快照——之后修改主窗口配置不会影响已在队列中的文件;
- 勾选Override item settings with current selection可强制所有队列项使用主窗口当前配置,覆盖其保存的设置;
- 悬停文件可查看其配置。
加入队列后,Abogen 会自动依次处理每个条目并按各自配置输出。
Web 应用(WebUI)
启动与使用
abogen-web随后浏览器打开http://localhost:8808,拖入文档即可。任务由后台 worker 执行,浏览器会自动刷新进度。使用流程:
- 上传文档(拖放或点上传按钮);
- 选择音色、语言、语速、字幕风格与输出格式;
- 点击Create job,任务立即出现在队列中;
- 实时查看进度与日志,完成后下载音频/字幕文件;
- 可随时取消或删除任务,并可下载日志用于排障。
多个任务顺序执行,worker 依次处理。
容器镜像部署
从仓库根目录可直接构建轻量容器镜像:
docker build -t abogen . mkdir -p ~/abogen-data/uploads ~/abogen-data/outputs docker run --rm \ -p 8808:8808 \ -v ~/abogen-data:/data \ --name abogen \ abogen访问http://localhost:8808。上传的源文件存放在/data/uploads,生成的音频与字幕出现在/data/outputs。
构建细节可参考 abogen/webui/Dockerfile:镜像基于nvidia/cuda:12.6.3-cudnn-runtime-ubuntu22.04,支持通过TORCH_INDEX_URL/TORCH_VERSION/USE_GPU三个 ARG 控制 PyTorch 版本与 CUDA 索引、是否安装onnxruntime-gpu(Supertonic 使用 ONNX Runtime 做 CUDA 加速),并以非 root 用户(UID 1000)运行。
容器环境变量
| 变量 | 默认值 | 用途 |
|---|---|---|
ABOGEN_HOST | 0.0.0.0 | Flask 服务绑定地址 |
ABOGEN_PORT | 8808 | HTTP 端口 |
ABOGEN_DEBUG | false | 启用 Flask 调试模式 |
ABOGEN_UPLOAD_ROOT | /data/uploads | 上传文件的存储目录 |
ABOGEN_OUTPUT_ROOT | /data/outputs | 生成音频与字幕的目录(ABOGEN_OUTPUT_DIR的旧别名) |
ABOGEN_OUTPUT_DIR | /data/outputs | 容器内渲染音频/字幕的路径 |
ABOGEN_SETTINGS_DIR | /config | 容器内 JSON 设置/配置路径 |
ABOGEN_TEMP_DIR | /data/cache(Docker)或平台缓存目录 | 容器内临时音频工作文件路径 |
ABOGEN_UID | 1000 | 容器运行 UID(对齐宿主机用户) |
ABOGEN_GID | 1000 | 容器运行 GID(对齐宿主机组) |
ABOGEN_LLM_BASE_URL | "" | 用于预填"设置 → LLM"面板的 OpenAI 兼容端点 |
ABOGEN_LLM_API_KEY | "" | 传递给上述端点的 API 密钥 |
ABOGEN_LLM_MODEL | "" | 刷新模型列表时默认选中的模型 |
ABOGEN_LLM_TIMEOUT | 30 | 服务端 LLM 请求超时(秒) |
ABOGEN_LLM_CONTEXT_MODE | sentence | 默认提示上下文窗口(sentence/paragraph/document) |
ABOGEN_LLM_PROMPT | "" | 预填进 UI 的自定义归一化提示模板 |
使用-e VAR=value即可在启动容器时设置这些变量。若要匹配文件权限,可先执行id -u与id -g获取本机 UID/GID 填入ABOGEN_UID/ABOGEN_GID。
Docker Compose(默认启用 GPU)
仓库根目录的 docker-compose.yaml 开箱即支持 GPU 主机(需先安装 NVIDIA Container Toolkit):
docker compose up -d --build关键构建/运行旋钮:
TORCH_VERSION— 固定与驱动匹配的 PyTorch 版本(留空则用所配索引上的最新版);TORCH_INDEX_URL— 更换 PyTorch 下载索引以适配不同 CUDA 构建;ABOGEN_DATA— 存储上传/输出的宿主机路径(默认./data)。
CPU-only 部署:注释掉 compose 文件中的deploy.resources.reservations.devices块(以及可选的runtime: nvidia行)即可。若更偏好传统 CLI:
docker build -f abogen/Dockerfile -t abogen-gpu . docker run --rm \ --gpus all \ -p 8808:8808 \ -v ~/abogen-data:/data \ abogen-gpu使用 Compose 时,在.env中设置ABOGEN_SETTINGS_DIR、ABOGEN_OUTPUT_DIR、ABOGEN_TEMP_DIR为要挂载的宿主机目录,Compose 会分别映射到容器内/config、/data/outputs、/data/cache。非音频类缓存(如 Hugging Face 下载)默认留在容器内部缓存/tmp/abogen-home/.cache,只有转换临时数据会触及挂载的ABOGEN_TEMP_DIR。启动前请确保各宿主机目录存在且对配置的 UID/GID 可写。
LLM 辅助文本归一化
Abogen 可将棘手的撇号与缩写交给 OpenAI 兼容的大语言模型处理,在设置 → LLM中配置:
- 输入端点 base URL(Ollama、OpenAI 代理等)及所需 API 密钥。填服务器根路径(Ollama 为
http://localhost:11434)——Abogen 会自动追加/v1/...,同时也接受已以/v1结尾的输入; - 点击Refresh models加载模型目录,选择默认模型,并调整超时或提示模板;
- 用预览框测试提示词后保存设置。Normalization 面板可用当前配置合成一段简短音频预览。
在 Docker 或 CI 中运行时,可用.env文件中的ABOGEN_LLM_*变量自动预填表单;仓库提供的.env.example内含本地 Ollama 服务器的示例值。
Audiobookshelf 集成
Abogen 可把成品有声书直接推送到 Audiobookshelf。在设置 → 集成 → Audiobookshelf中配置:
- Base URL— Audiobookshelf 服务器的 HTTPS 源(可含路径前缀),例如
https://abs.example.com或https://media.example.com/abs。不要追加/api; - Library ID— 目标 Audiobookshelf 库的标识符(从 ABS 库设置页复制);
- Folder(名称或 ID)— 库内的目标文件夹。可输入与 Audiobookshelf 显示完全一致的文件夹名(Abogen 自动解析为正确 ID),或直接粘贴原始
folderId,也可点Browse folders拉取可用文件夹并填充; - API token— 在 Audiobookshelf 的Account → API tokens中生成的个人访问令牌。
连接成功后,可对后续任务启用自动上传,或从队列对单个任务触发上传。
Nginx Proxy Manager 反向代理检查清单
当 Audiobookshelf 位于 Nginx Proxy Manager(NPM)之后时,需确保 API 路径与请求头原样到达后端:
- 创建指向 ABS 容器/主机的Proxy Host(默认转发端口
13378); - 在SSL标签启用证书,若仅允许 HTTPS 则勾选Force SSL;
- 在Advanced标签追加以下配置片段,保证 bearer token、客户端 IP 与大体积上传能穿越代理:
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header Authorization $http_authorization; client_max_body_size 5g; proxy_read_timeout 300s; proxy_connect_timeout 300s; - 关闭Block Common Exploits(部分 NPM 版本会剥离 Authorization 请求头);
- 在主代理界面启用Websockets Support(Audiobookshelf 的 Web UI 依赖它,同时保持反向代理配置一致性);
- 若 Audiobookshelf 挂在路径前缀下(如
/abs),添加一个Location: /abs/的Custom Location,并把Forward Path设为/。该重写会在流量到达后端前剥离/abs前缀,使外网的/abs/api/...在后端变成/api/...。Abogen 的 "Base URL" 字段填写带前缀的同一 URL。
保存代理配置后,在运行 Abogen 的机器上测试 API:
curl -i "https://abs.example.com/api/libraries" \ -H "Authorization: Bearer YOUR_API_TOKEN"若仍返回Cannot GET /api/...,说明代理在改写路径:复查Custom Locations表(/abs/的Forward Path应为空),并在发起 curl 请求时查看 NPM 的 access/error 日志,确认后端看到的是完整/api/librariesURL。返回 JSON 的 libraries 列表即代表 API 路由正确。随后可在 Abogen 设置中使用Browse folders确认库内容、运行Test connection(校验库并解析文件夹),并在已完成任务上使用 "Send to Audiobookshelf" 按钮。
JSON 端点
需要机器可读的状态更新时,dashboard 使用的辅助端点可直接复用:
GET /api/jobs/<id>— 以 JSON 返回任务元数据、进度与日志行;GET /partials/jobs— 以 HTML 渲染实时任务列表(htmx 轮询用);GET /partials/jobs/<id>/logs— 仅渲染日志窗口。
这些端点对应 abogen/webui/routes 下的路由实现(jobs、main 等模块)。
两套界面共有的核心特性
章节标记(Chapter Markers)
处理 ePUB、PDF 或 Markdown 文件时,Abogen 会先将其转换为缓存目录中的文本文件。点击Edit实际就是在编辑这些转换后的文本文件。这些文本文件中包含如下标记:
<<CHAPTER_MARKER:Chapter Title>>章节标记的作用:
- 允许你按章节将文本拆分为独立音频文件;
- 出错时只需重新处理特定章节,无需重跑整个文件,节省时间。
你也可以手动为纯文本文件添加标记以享受同样收益:
<<CHAPTER_MARKER:Introduction>> This is the beginning of my text... <<CHAPTER_MARKER:Main Content>> Here's another part...处理该文本时,Abogen 会自动识别这些标记,并询问是否每章单独保存、是否创建合并版本。
源码层面的实现见 abogen/domain/text_chapters.py:parse_chapters_from_text使用正则<<CHAPTER_MARKER:(.*?)>>(忽略大小写)切分文本,且保留第一个标记之前的内容并命名为 "Introduction"(若存在)。没有标记的文本则整体作为单一章节处理。
元数据标签(Metadata Tags)
与章节标记类似,可以为M4B文件添加元数据标签,对支持元数据的有声书播放器很有用(可写入标题、作者、年份等信息)。Abogen 处理 ePUB、PDF 或 Markdown 文件时会自动添加这些标签,但也可手动添加到文本文件开头:
<<METADATA_TITLE:Title>> <<METADATA_ARTIST:Author>> <<METADATA_ALBUM:Album Title>> <<METADATA_YEAR:Year>> <<METADATA_ALBUM_ARTIST:Album Artist>> <<METADATA_COMPOSER:Narrator>> <<METADATA_GENRE:Audiobook>> <<METADATA_COVER_PATH:path/to/cover.jpg>>
METADATA_COVER_PATH用于把封面图嵌入生成的 M4B 文件。Abogen 会自动从 EPUB 与 PDF 中提取封面并添加此标签。
底层实现见 abogen/domain/metadata_extraction.py 的extract_metadata_from_text:它按<<METADATA_KEY:value>>模式解析上述全部 8 个字段,并由build_ffmpeg_metadata_args映射为 ffmpeg 元数据参数(注意year映射为 ffmpeg 的date键;未填字段有默认值:标题/专辑回退为文件名、艺术家为 "Unknown"、作曲者为 "Narrator"、流派为 "Audiobook")。此外apply_m4b_chapters_with_mutagen(abogen/domain/audio_helpers.py)负责把章节信息写入 M4B。
基于时间戳的文本文件
与"字幕转音频"类似,Abogen 能自动识别包含HH:MM:SS、HH:MM:SS,ms或HH:MM:SS.ms格式时间戳的文本文件。检测到时间戳后,Abogen 会询问是否用其控制音频时间。这适用于制作需要精确控制每段朗读时机的旁白、脚本或逐字稿。文本格式如下:
00:00:00 This is the first segment of text. 00:00:15 This is the second segment, starting at 15 seconds. 00:00:45 And this is the third segment, starting at 45 seconds.重要说明:
- 时间戳必须为
HH:MM:SS、HH:MM:SS,ms或HH:MM:SS.ms格式(如00:05:30表示 5 分 30 秒,00:05:30.500表示 5 分 30.5 秒); - 毫秒部分可选,精度最高 1/1000 秒;
- 第一个时间戳之前的文本(如有)自动从
00:00:00开始; - 使用时间戳时,字幕生成模式设置将被忽略。
该机制的解析入口是 abogen/domain/subtitle_processor.py 的parse_subtitle_file(is_timestamp_text=True时按时间戳行切分文本段),并且时间戳文本的每条字幕在无明确结束时间时使用is_auto_end逻辑自动推导结束时刻。
支持的语言
Kokoro 目前内置以下语言,音色编码首字母对应:
# 'a' => American English(美式英语) # 'b' => British English(英式英语) # 'e' => Spanish es(西班牙语) # 'f' => French fr-fr(法语) # 'h' => Hindi hi(印地语) # 'i' => Italian it(意大利语) # 'j' => Japanese(日语):pip install misaki[ja] # 'p' => Brazilian Portuguese pt-br(巴西葡萄牙语) # 'z' => Mandarin Chinese(普通话):pip install misaki[zh]日语需额外安装
misaki[ja],中文需misaki[zh](misaki[zh]已是 pyproject.toml 中的默认依赖)。
在源码 abogen/domain/enums.py 的Language枚举中,实际定义了远超上述列表的语言集合(含德语、俄语、韩语、阿拉伯语、土耳其语等三十余种),且每种语言都有display_name与 CJK 判定(is_cjk)。所有语言都支持字幕生成(supports_subtitle_tokens恒为 True),但注意:
Abogen 为所有语言生成字幕;不过词级字幕模式(如 "1 word"、"2 words"、"3 words" 等)仅对英语可用,因为 Kokoro 只为英语文本提供逐词时间戳 token。非英语语言使用基于时长的回退方案,支持句子级与逗号级模式("Line"、"Sentence"、"Sentence + Comma")。
指南与故障排查
MPV 播放配置
官方强烈推荐使用 MPV 播放音频文件,因为它支持无视频轨也能显示字幕。推荐的mpv.conf:
# --- MPV Settings --- save-position-on-quit keep-open=yes audio-display=no # --- Subtitle --- sub-ass-override=no sub-margin-y=50 sub-margin-x=50 # --- Audio Quality --- audio-spdif=ac3,dts,eac3,truehd,dts-hd audio-channels=auto audio-samplerate=48000 volume-max=200用 Abogen 产出制作演示视频
仓库的 demo/README.md 记录了官方演示视频(52 秒仅 736kB)的制作方法:用 Abogen 生成.ass字幕(设置中选ass(centered narrow)字幕格式)与.wav音频,配合一张背景图bg.jpg,再以 FFmpeg 合成。推荐命令(需先安装 FFmpeg):
ffmpeg -loop 1 -framerate 24 -i bg.jpg -i demo.wav -vf "ass=demo.ass" -c:v libx264 -pix_fmt yuv420p -preset slow -crf 18 -c:a aac -b:a 192k -movflags +faststart -shortest demo.mp4若追求更小体积可用 VP9/Opus 的.webm版本。素材示例(bg.jpg、demo.ass、demo.wav)均在仓库 demo 目录下。
命令行排障模式
遇到问题时,可改用命令行模式启动以查看详细错误:
abogen-cli若用 Windows 安装脚本安装,则进入python_embedded/Scripts运行abogen-cli.exe。命令行模式会输出详细错误信息,请携带错误信息与问题描述在项目 Issues 页面提交。
常见问题与解决方案
"CUDA GPU is not available. Using CPU" 警告
该提示意味着 PyTorch 未能使用 GPU 而回退到 CPU。Windows 上 Abogen 仅支持带 CUDA 的 NVIDIA GPU(AMD GPU 在 Windows 不支持,仅在 Linux 配 ROCm 可用)。有兼容 NVIDIA GPU 仍出现该警告时:
# 在包含 python_embedded 的 Abogen 文件夹终端执行 python_embedded\python.exe -m pip install --force-reinstall torch==2.8.0+cu128 torchvision==0.23.0+cu128 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cu128若你的老款 NVIDIA GPU 不支持 CUDA 12.8,可换装 CUDA 12.6 版本(把索引换成cu126、版本号改为2.8.0+cu126)。AMD GPU 用户需使用 Linux 并遵循上面的 Linux/ROCm 指引。uv 安装的用户可直接重装换版本:
uv tool uninstall abogen uv tool install --python 3.12 abogen[cuda126] --extra-index-url https://download.pytorch.org/whl/cu126 --index-strategy unsafe-best-match # 若仍不行,再试 cuda130Linux 下 "The script abogen-cli is installed in '/home/username/.local/bin' which is not on PATH"
echo "export PATH=\"/home/$USER/.local/bin:\$PATH\"" >> ~/.bashrc && source ~/.bashrc"No matching distribution found"
请使用受支持的 Python(3.10 至 3.12),推荐用 uv 安装,Linux 上也可用 pyenv 管理多版本 Python。
"[WinError 1114] A dynamic link library (DLL) initialization routine failed"
常见于无 GPU 支持的虚拟机中运行 Abogen。Windows 安装脚本用户:
python_embedded\python.exe -m pip install --force-reinstall torch==2.8.0+cu128 torchvision==0.23.0+cu128 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cu128pip 安装用户则在虚拟环境终端执行:
pip install torch==2.8.0 torchaudio==2.8.0 torchvision==0.23.0 --index-url https://download.pytorch.org/whl/cu128日语音频不工作
日语可能需要额外配置,疑似与 Kokoro 的日语支持额外依赖有关(参见 issue #56)。
卸载 Abogen
- 从设置菜单进入
Open configuration directory与Open cache directory,删除对应目录; - pip 安装:
pip uninstall abogen+pip cache purge;uv 安装:uv tool uninstall abogen+uv cache clear; - Windows 安装脚本用户直接删除包含 Abogen 的整个文件夹即可(所有内容都在
python_embedded内,不产生其他目录); - espeak-ng 需单独卸载。
开发者贡献与许可证
开发者可在解压仓库后执行以下命令以可编辑模式安装并构建:
pip install -e .[dev] # 可编辑模式安装(含构建依赖) python -m build # (可选)在 dist 目录构建包 abogen # 打开 GUI(uv 用户可改用uv venv --python 3.12+uv pip install -e .+uv build。)注意需使用 Python 3.10 至 3.12。更深入的架构说明可参考 docs/developer-guide.md、docs/tts-plugin-architecture.md 与 docs/testing.md;项目自带覆盖领域层、WebUI 与插件契约的完整测试套件(见 tests)。
项目遵循 MIT 许可证(见 LICENSE);其核心 TTS 引擎 Kokoro 采用 Apache-2.0 许可,允许商业使用、修改、分发与私有使用。关于项目名称:"abogen"是"audiobook generator"的缩写。
结语
从一条uv tool install命令到完整的批量有声书生产线,Abogen 将 ePUB/PDF/文本转语音的复杂度收敛为高度可配置的图形界面与容器化服务:桌面端侧重单机批量与精细控制(章节拆分、音色混合、词级字幕),Web 端则叠加了 LLM 归一化、Supertonic TTS 与 Audiobookshelf 推送等前沿能力。无论你是想快速把手头的电子书变成睡前有声读物,还是搭建一套自动化的内容配音流水线,都可以从本文的安装、配置与故障排查清单出发,结合仓库源码深入定制。
【免费下载链接】abogenGenerate audiobooks from EPUBs, PDFs and text with synchronized captions.项目地址: https://gitcode.com/GitHub_Trending/ab/abogen
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考