abogen
abogen 是一款强大的开源工具,能轻松将 EPUB、PDF、纯文本或 Markdown 文件转化为高质量的有声书,并自动生成完美同步的字幕。它主要解决了传统文字转语音流程繁琐、音画不同步以及难以批量处理文档的痛点,让用户能在几秒钟内获得自然流畅的音频内容。
无论是希望将电子书变为有声读物的普通读者,还是需要为 Instagram、YouTube、TikTok 等平台快速制作配音视频的内容创作者,abogen 都能提供极大的便利。同时,由于其支持命令行调用和灵活的部署方式,开发者和研究人员也能将其集成到自动化工作流中。
abogen 的核心技术亮点在于采用了先进的 Kokoro-82M 语音模型,确保生成的语音听起来自然逼真,而非机械生硬。此外,它在生成音频的同时会自动产出时间轴精准的字幕文件,极大降低了后期制作门槛。工具跨平台支持 Windows、Linux 和 macOS,并提供了一键安装脚本,即使没有深厚的编程背景,用户也能快速上手体验高效的文本转语音服务。
使用场景
一位独立知识博主急需将刚出版的 EPUB 格式行业报告转化为短视频素材,以便在抖音和 YouTube 上快速发布系列解说视频。
没有 abogen 时
- 流程割裂繁琐:需要先用转换器提取文本,再找单独的 TTS 工具生成音频,最后用字幕软件手动对齐时间轴,三个步骤极易出错。
- 音质感差且昂贵:免费语音合成听起来像机器人,缺乏情感;若追求自然拟人效果,往往需付费购买商业 API 或聘请专业配音员。
- 同步耗时巨大:为确保口播内容与画面字幕精准匹配,通常需要人工逐句调整字幕时间点,处理一章内容就要耗费数小时。
- 格式兼容困难:面对 PDF 或 Markdown 源文件,经常遇到排版错乱、公式识别错误等问题,前期清洗数据就让人头疼。
使用 abogen 后
- 一键全自动流转:直接导入 EPUB 或 PDF 文件,abogen 自动完成文本解析、高质量语音生成及字幕同步,全程无需人工干预。
- 拟人化语音输出:内置 Kokoro-82M 模型,生成的音频语调自然、呼吸感强,听感接近真人主播,显著提升观众留存率。
- 字幕完美卡点:生成的音频自带毫秒级精准同步的字幕文件(SRT/VTT),直接导入剪辑软件即可使用,彻底告别手动对齐。
- 多格式无缝支持:原生支持 EPUB、PDF、Markdown 等多种格式,智能保留段落结构,让技术文档也能轻松变身有声书。
abogen 将原本需要半天的人工制作流程压缩至几分钟,让创作者能专注于内容策划而非繁琐的技术实现。
运行环境要求
- Windows
- macOS
- Linux
- 非必需(支持 CPU)
- NVIDIA GPU 支持 CUDA 12.6/12.8/13.0
- AMD GPU 仅在 Linux 上支持 ROCm 6.4
- Windows 不支持 AMD GPU 加速
未说明

快速开始
abogen 
Abogen 是一款强大的文本转语音转换工具,可轻松将 ePub、PDF、文本、Markdown 或字幕文件在几秒钟内转换为高质量音频,并附带同步的字幕。您可以使用它来制作有声读物、为 Instagram、YouTube、TikTok 或任何需要自然语音合成的项目添加旁白,只需借助 Kokoro-82M 即可。

演示
https://github.com/user-attachments/assets/094ba3df-7d66-494a-bc31-0e4b41d0b865
此演示仅用时 5 秒生成,输出约 1 分钟的音频及完美同步的字幕。如需制作类似视频,请参阅 演示指南。
如何安装? 
Windows
前往 espeak-ng 最新版本,下载并运行 *.msi 文件。
选项 1:使用脚本安装
- 下载 仓库
- 解压 ZIP 文件
- 双击运行
WINDOWS_INSTALL.bat
此方法会自动完成所有操作——包括在独立环境中安装所有依赖项(含 CUDA),无需单独安装 Python。(您仍需安装 espeak-ng。)
[!注意] 您无需单独安装 Python,脚本会自动为您安装。
选项 2:使用 uv 安装
首先,如果您尚未安装,请先 安装 uv。
# 适用于 NVIDIA 显卡(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 显卡(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 显卡(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 显卡或无显卡——如果您拥有 AMD 显卡,由于 ROCm 在 Windows 上不可用,您需要使用 Linux 来实现 GPU 加速。
uv tool install --python 3.12 abogen
替代方案:使用 pip 安装(点击展开)
# 创建虚拟环境(可选)
mkdir abogen && cd abogen
python -m venv venv
venv\Scripts\activate
# 对于 NVIDIA 显卡:
# 我们需要使用较旧版本的 PyTorch(2.8.0),直到该问题修复:https://github.com/pytorch/pytorch/issues/166628
pip install torch==2.8.0+cu128 torchvision==0.23.0+cu128 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cu128
# 对于 AMD 显卡:
# 目前尚不支持,因为 ROCm 在 Windows 上不可用。如有 AMD 显卡,请使用 Linux。
# 安装 abogen
pip install abogen
Mac
首先,如果您尚未安装,请先 安装 uv。
# 安装 espeak-ng
brew install espeak-ng
# 对于 Apple Silicon Mac(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 安装(点击展开)
# 安装 espeak-ng
brew install espeak-ng
# 创建虚拟环境(推荐)
mkdir abogen && cd abogen
python3 -m venv venv
source venv/bin/activate
# 安装 abogen
pip3 install abogen
# 对于 Apple Silicon Mac(M1、M2 等)
# 安装 abogen 后,我们需要安装 Kokoro 的开发版,其中包含 MPS 支持。
pip3 install git+https://github.com/hexgrad/kokoro.git
Linux
首先,如果您尚未安装,请先 安装 uv。
# 安装 espeak-ng
sudo apt install espeak-ng # Ubuntu/Debian
sudo pacman -S espeak-ng # Arch Linux
sudo dnf install espeak-ng # Fedora
# 对于 NVIDIA 显卡或无显卡——此处无需加入 [cuda]。
uv tool install --python 3.12 abogen
# 对于 AMD 显卡(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-match
替代方案:使用 pip 安装(点击展开)
# 安装 espeak-ng
sudo apt install espeak-ng # Ubuntu/Debian
sudo pacman -S espeak-ng # Arch Linux
sudo dnf install espeak-ng # Fedora
# 创建虚拟环境(推荐)
mkdir abogen && cd abogen
python3 -m venv venv
source venv/bin/activate
# 安装 abogen
pip3 install abogen
# 对于 NVIDIA 显卡:
# 已经支持,无需单独安装 CUDA。
# 对于 AMD 显卡:
# 安装 abogen 后,我们需要卸载现有的 torch 包
pip3 uninstall torch
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/rocm6.4
界面
Abogen 提供两种界面,但目前它们的功能集有所不同。Web UI 包含一些较新的功能,这些功能仍在逐步集成到桌面应用程序中。
| 命令 | 界面 | 功能 |
|---|---|---|
abogen |
PyQt6 桌面 GUI | 稳定的核心功能 |
abogen-web |
Flask Web UI | 核心功能 + Supertonic TTS、LLM 归一化、Audiobookshelf 集成 等! |
注意: Web UI 目前仍在积极开发中。我们正努力将这些新功能整合到 PyQt 桌面应用中。在此之前,Web UI 提供了功能最丰富的体验。
特别感谢 @jeremiahsb 的付出!我对他巨大的贡献(超过 55,000 行代码!)感到非常惊讶,正是这些代码让整个 Web UI 成为了现实。
🖥️ 桌面应用程序(PyQt)
如何运行?
只需运行以下命令即可启动 Abogen 桌面 GUI:
abogen
[!提示] 如果您使用 Windows 安装程序
(WINDOWS_INSTALL.bat)安装了 Abogen,它应该会在同一文件夹或您的桌面上创建一个快捷方式。您可以直接从那里运行。如果您丢失了快捷方式,Abogen 位于python_embedded/Scripts/abogen.exe。您可以直接从那里运行。
如何使用?
- 将任何 ePub、PDF、文本、Markdown 或字幕文件拖放到界面上(或者使用内置的文本编辑器)
- 配置设置:
- 设置语速
- 选择语音(或使用语音混合器创建自定义语音)
- 选择字幕生成样式(按句子、单词等)
- 选择输出格式
- 选择保存输出的位置
- 点击“开始”
实际操作
这里是 Abogen 的实际操作演示:在这个示例中,它仅用 11 秒就处理了约 3,000 个字符的文本,并将其转换为 3 分 28 秒的音频。而我的设备是一块低端的 RTX 2060 Mobile 笔记本显卡。您的结果可能会因硬件不同而有所差异。
配置
| 选项 | 描述 |
|---|---|
| 输入框 | 拖放 ePub、PDF、.TXT、.MD、.SRT、.ASS 或 .VTT 文件(或使用内置文本编辑器) |
| 队列选项 | 将多个文件添加到队列中并批量处理,每个文件可单独设置。更多详情请参阅 队列模式。 |
| 语速 | 调整语速,范围从 0.1x 到 2.0x |
| 选择语音 | 语言代码的第一个字母表示语言类型(例如,a 表示美式英语,b 表示英式英语等),第二个字母表示性别,m 代表男声,f 代表女声。 |
| 语音混合器 | 通过混合不同的语音模型并结合个人化配置,创建自定义语音。更多详情请参阅 语音混合器。 |
| 语音预览 | 在处理前试听所选语音。 |
| 生成字幕 | 禁用、一行、一句话、一句话+逗号、一句话+高亮、1个词、2个词、3个词 等(表示每条字幕包含的词数) |
| 输出语音格式 | .WAV、.FLAC、.MP3、.OPUS(最佳压缩) 和 M4B(带章节) |
| 输出字幕格式 | 可将字幕格式配置为 SRT(标准)、ASS(宽版)、ASS(窄版)、ASS(居中宽版) 或 ASS(居中窄版)。 |
| 将单个换行符替换为空格 | 将文本中的单个换行符替换为空格。这对于存在人为换行符的文本非常有用。 |
| 保存位置 | 与输入文件同目录保存、保存到桌面 或 选择输出文件夹 |
特别感谢 @brianxiadong 在 PR #75 中添加了 Markdown 支持。
| 图书处理选项 | 描述 |
|---|---|
| 章节控制 | 从 ePUB 或 Markdown 文件中选择特定章节,或从 PDF 文件中选择“章节+页码”。 |
| 分别保存各章节 | 将电子书中的每个章节保存为单独的音频文件。 |
| 创建合并版本 | 创建一个包含所有章节的单个音频文件。(如果未启用“分别保存各章节”,则此选项将成为默认行为。) |
| 以项目文件夹和元数据保存 | 将转换后的文件保存在包含可用元数据文件的项目文件夹中。 |
| 菜单选项 | 描述 |
|---|---|
| 主题 | 使用 系统、浅色 或 深色 选项更改应用程序主题。 |
| 配置每条字幕的最大词数 | 设置每条字幕的最大词数。 |
| 配置章节间的静音时长 | 设置章节间静音的时长(单位:秒)。 |
| 配置日志窗口的最大行数 | 设置日志窗口最多显示的行数。 |
| 分章节音频格式 | 将分章节的音频格式配置为 wav、flac、mp3 或 opus。 |
| 创建桌面快捷方式 | 在桌面上创建快捷方式,方便快速访问。 |
| 打开配置目录 | 打开存储配置文件的目录。 |
| 打开缓存目录 | 打开存储已转换文本文件的缓存目录。 |
| 清除缓存文件 | 删除在转换或预览过程中生成的缓存文件。 |
| 在字幕间使用静音间隔 | 通过让语音延续到字幕条目之间的静音间隔,避免不必要的音频加速。简而言之,它会忽略字幕条目的结束时间,直接利用静音空间直到下一条字幕开始。若关闭此选项,则音频会按照字幕中指定的时间间隔进行加速。(适用于字幕文件) |
| 字幕速度调整方式 | 选择在需要时加速音频的方式:TTS 重新生成(质量更好) 会以更快的速度重新生成音频,而 FFmpeg 时间拉伸(速度更快) 则会快速加速已生成的音频。(适用于字幕文件) |
| 使用 spaCy 进行句子分割 | 启用此选项后,Abogen 将使用 spaCy 更准确地检测句子边界,而不是仅依靠标点符号(如句号、问号等)来分割句子,从而避免错误地截断“Mr.”或“Dr.”等称谓短语。借助 spaCy,句子划分将更加精准。对于非英语文本,spaCy 会在音频生成 之前 运行以创建句子片段;而对于英语文本,则会在字幕生成 期间 运行,以改善时间同步性和可读性。spaCy 仅在字幕模式为 句子 或 句子+逗号 时使用。如果您更倾向于传统的标点符号分割方法,可以关闭此选项。 |
| 预先下载模型和语音以供离线使用 | 打开一个窗口,显示可用的模型和语音。点击 全部下载 按钮即可下载所有必需的模型和语音,使您能够在完全无网络连接的情况下离线使用 Abogen。 |
| 禁用 Kokoro 的互联网访问 | 阻止 Kokoro 从 HuggingFace Hub 下载模型或语音,适合离线使用。 |
| 启动时检查更新 | 程序启动时自动检查更新。 |
| 恢复默认设置 | 将所有设置重置为默认值。 |
特别感谢 @robmckinnon 在 PR #65 中添加了“句子+高亮”功能。
语音混合器
通过语音混合器,您可以混合不同的语音模型来创建自定义语音。您可以调整每种语音的权重,并将自定义语音保存为个人配置,以便日后使用。语音混合器让您能够创造出独特且个性化的语音。
队列模式
Abogen 支持队列模式,允许您将多个文件添加到处理队列中。如果您希望一次性转换多个文件,此功能非常有用。
- 您可以使用队列管理器中的添加文件按钮,或直接将文本文件(
.txt)和字幕文件(.srt、.ass、.vtt)拖放到队列列表中来添加这些文件。要添加 PDF、EPUB 或 Markdown 文件,请使用主窗口中的输入框并单击添加到队列按钮。 - 队列中的每个文件会保留其添加时所使用的配置设置。之后更改主窗口的配置不会影响已加入队列的文件。
- 您可以启用用当前选择覆盖项目设置选项,以强制队列中的所有项目使用主窗口中当前选定的配置,从而覆盖它们保存的设置。
- 您可以通过将鼠标悬停在每个文件上来查看其配置。
Abogen 会自动处理队列中的每个项目,并按照配置保存输出文件。
🌐 Web 应用程序 (WebUI)
如何运行?
运行以下命令启动 Web UI:
abogen-web
然后打开 http://localhost:8808,并将您的文档拖入其中。作业会在后台工作进程中运行,浏览器会自动更新。
使用 Web UI
- 上传文档(拖放或使用上传按钮)。
- 选择语音、语言、语速、字幕样式和输出格式。
- 单击创建作业。该作业会立即出现在队列中。
- 实时查看进度和日志更新。完成时下载音频/字幕文件。
- 随时取消或删除作业。下载日志以进行故障排除。
多个作业可以按顺序运行;工作进程会依次处理它们。
容器镜像
您可以直接从仓库根目录构建一个轻量级容器镜像:
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_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 来设置这些变量。
要查找本地的 UID/GID 以便在容器内匹配文件权限,请运行:
id -u
id -g
使用这些值填充 .env 文件中的 ABOGEN_UID 和 ABOGEN_GID。
通过 Docker 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 对其具有写入权限,然后再启动堆栈。
Docker Compose(默认使用 GPU)
该仓库包含 docker-compose.yaml 文件,默认针对配备 GPU 的主机。安装 NVIDIA Container Toolkit 并运行:
docker compose up -d --build
关键构建/运行参数:
TORCH_VERSION– 锁定与您的驱动程序匹配的特定 PyTorch 版本(留空则使用配置索引中的最新版本)。TORCH_INDEX_URL– 当您使用不同的 CUDA 构建时,可更换 PyTorch 下载索引。ABOGEN_DATA– 存储上传/输出文件的主机路径(默认为./data)。
仅 CPU 部署:注释掉 compose 文件中的 deploy.resources.reservations.devices 块(以及可选的 runtime: nvidia 行)。Compose 将不再请求 GPU。如果您更喜欢经典 CLI:
docker build -f abogen/Dockerfile -t abogen-gpu .
docker run --rm \
--gpus all \
-p 8808:8808 \
-v ~/abogen-data:/data \
abogen-gpu
LLM 辅助文本规范化
Abogen 可以将棘手的撇号和缩略形式交由兼容 OpenAI 的大型语言模型处理。您可以从设置 → LLM 中进行配置:
- 输入您的端点的基本 URL(Ollama、OpenAI 代理等),如果需要,还需提供 API 密钥。使用服务器根路径(对于 Ollama:
http://localhost:11434)——Abogen 会自动附加/v1/...,但也可以接受已经以/v1结尾的输入。 - 单击刷新模型加载目录,选择默认模型,并调整超时时间或提示模板。
- 使用预览框测试提示,然后保存设置。规范化面板可以使用当前配置合成一段简短的音频预览。
当您在 Docker 或 CI 流水线中运行时,可通过 .env 文件中的 ABOGEN_LLM_* 变量自动填充表单。.env.example 文件包含本地 Ollama 服务器的示例值。
Audiobookshelf 集成
Abogen 可以将完成的有声书直接推送至 Audiobookshelf。您可以在 设置 → 集成 → Audiobookshelf 中进行配置,提供以下信息:
- 基础 URL – 您的 Audiobookshelf 服务器可通过 HTTPS 访问的源(以及可选的路径前缀),例如
https://abs.example.com或https://media.example.com/abs。请不要在末尾添加/api。 - 库 ID – 目标 Audiobookshelf 库的标识符(从 ABS 的库设置页面复制)。
- 文件夹(名称或 ID) – 该库内的目标文件夹。请准确输入文件夹名称(Abogen 会自动将其解析为正确的 ID),粘贴原始的
folderId,或点击 浏览文件夹 来获取可用文件夹并填充字段。 - API 令牌 – 在 Audiobookshelf 的 账户 → API 令牌 中生成的个人访问令牌。
连接成功后,您可以为未来的任务启用自动上传,也可以从队列中触发单个上传。
反向代理检查清单(Nginx Proxy Manager)
当 Audiobookshelf 部署在 Nginx Proxy Manager (NPM) 后面时,请确保 API 路径和头部信息能够原封不动地传递到后端:
- 创建一个指向您的 ABS 容器或主机的 代理主机(默认转发端口为
13378)。 - 在 SSL 选项卡中,启用您的证书,并勾选 强制使用 SSL(如果您仅希望使用 HTTPS)。
- 在 高级 选项卡中,添加以下代码片段,以确保承载令牌、客户端 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;
4. 禁用 **阻止常见漏洞** 功能(在某些 NPM 版本中,此功能会剥离 Authorization 头部)。
5. 在主代理界面中启用 **WebSockets 支持**(Audiobookshelf 使用它来提供 Web 界面,并保持反向代理配置的一致性)。
6. 如果您在路径前缀下发布 Audiobookshelf(例如 `/abs`),则需添加一个 **自定义位置**,设置 `Location: /abs/`,并将 **转发路径** 设置为 `/`。这样可以去除 `/abs` 前缀,使互联网上的 `/abs/api/...` 在后端变为 `/api/...`。请在 Abogen 的“基础 URL”字段中使用相同的带前缀的 URL。
保存代理主机后,从运行 Abogen 的机器上测试 API:
```bash
curl -i "https://abs.example.com/api/libraries" \
-H "Authorization: Bearer YOUR_API_TOKEN"
如果仍然收到 Cannot GET /api/... 错误,则说明代理正在重写路径。请再次检查 自定义位置 表格(转发路径 列应为空),并在发出 curl 请求时查看 NPM 的访问日志和错误日志,以确认后端接收到完整的 /api/libraries URL。
如果返回包含库列表的 JSON 响应,则表示代理已正确路由 API 请求。随后,您可以使用 浏览文件夹 功能确认库内容,在 Abogen 的设置中运行 测试连接(验证库并解析文件夹),并在已完成的任务上使用“发送至 Audiobookshelf”按钮。
JSON 端点
需要机器可读的状态更新吗?仪表板会调用一组辅助端点,您可以重复使用:
GET /api/jobs/<id>以 JSON 格式返回作业元数据、进度和日志条目。GET /partials/jobs以 HTML 格式渲染实时作业列表(htmx 使用此功能进行轮询)。GET /partials/jobs/<id>/logs仅渲染日志窗口。
更多自动化钩子正在规划中;如果您需要额外的路由,欢迎贡献代码。
核心功能(两者均适用)
关于章节标记
当您处理 ePUB、PDF 或 Markdown 文件时,Abogen 会将它们转换为文本文件,并存储在您的缓存目录中。点击“编辑”时,您实际上是在修改这些转换后的文本文件。在这些文本文件中,您会看到类似如下的标签:
<<CHAPTER_MARKER:章标题>>
这些就是章节标记。它们会在您处理 ePUB、PDF 或 Markdown 文件时,根据您选择的章节自动添加。它们具有重要作用:
- 允许您将文本按章节分割成单独的音频文件
- 节省时间,当出现错误时,只需重新处理特定章节,而无需重新处理整个文件
您也可以手动将这些标记添加到纯文本文件中,以获得相同的好处。只需在文本中加入如下内容:
<<CHAPTER_MARKER:引言>>
这是我的文本开头……
<<CHAPTER_MARKER:正文>>
这里是另一部分内容……
当您处理该文本文件时,Abogen 会自动检测到这些标记,并询问您是否要分别保存每个章节,同时创建合并版本。

关于元数据标签
与章节标记类似,您也可以为 M4B 文件添加元数据标签。这对于支持元数据的有声书播放器非常有用,可以让您添加标题、作者、年份等信息。Abogen 在处理 ePUB、PDF 或 Markdown 文件时会自动添加这些标签,但您也可以手动将其添加到文本文件中。请在文本文件的开头添加元数据标签,格式如下:
<<METADATA_TITLE:标题>>
<<METADATA_ARTIST:作者>>
<<METADATA_ALBUM:专辑标题>>
<<METADATA_YEAR:年份>>
<<METADATA_ALBUM_ARTIST:专辑艺人>>
<<METADATA_COMPOSER:旁白者>>
<<METADATA_GENRE:有声书>>
<<METADATA_COVER_PATH:封面图片路径.jpg>>
注意:
METADATA_COVER_PATH用于将封面图片嵌入生成的 M4B 文件中。Abogen 会自动从 ePUB 和 PDF 文件中提取封面,并为您添加此标签。
关于基于时间戳的文本文件
与将字幕文件转换为音频类似,Abogen 可以自动检测包含 HH:MM:SS、HH:MM:SS,ms 或 HH:MM:SS.ms 格式时间戳的文本文件。当在您的文本文件中找到时间戳时,Abogen 会询问您是否希望将其用于音频定时。这对于创建需要精确控制每个片段播放时间的旁白、脚本或文字稿非常有用。
请按以下格式编写您的文本文件:
00:00:00
这是第一段文字。
00:00:15
这是第二段文字,从第 15 秒开始。
00:00:45
这是第三段文字,从第 45 秒开始。
重要提示:
- 时间戳必须采用
HH:MM:SS、HH:MM:SS,ms或HH:MM:SS.ms格式(例如,00:05:30表示 5 分 30 秒,00:05:30.500表示 5 分 30.5 秒)。 - 毫秒部分是可选的,可提供精确到千分之一秒的时间精度。
- 第一个时间戳之前的文本内容将自动从
00:00:00开始。 - 使用时间戳时,字幕生成模式设置将被忽略。
支持的语言
# 🇺🇸 'a' => 美式英语,🇬🇧 'b' => 英式英语
# 🇪🇸 'e' => 西班牙语 es
# 🇫🇷 'f' => 法语 fr-fr
# 🇮🇳 'h' => 印地语 hi
# 🇮🇹 'i' => 意大利语 it
# 🇯🇵 'j' => 日语:pip install misaki[ja]
# 🇧🇷 'p' => 巴西葡萄牙语 pt-br
# 🇨🇳 'z' => 普通话:pip install misaki[zh]
有关支持的语言和语音的完整列表,请参阅 Kokoro 的 VOICES.md 文件。如需收听示例音频输出,请查看 SAMPLES.md 文件。
使用指南与故障排除
MPV 配置
我强烈建议使用 MPV 播放您的音频文件,因为它即使没有视频轨道也能显示字幕。以下是我的 mpv.conf 配置:
# --- MPV 设置 ---
save-position-on-quit
keep-open=yes
audio-display=no
# --- 字幕 ---
sub-ass-override=no
sub-margin-y=50
sub-margin-x=50
# --- 音质 ---
audio-spdif=ac3,dts,eac3,truehd,dts-hd
audio-channels=auto
audio-samplerate=48000
volume-max=200
类似项目
Abogen 是一个独立项目,但它受到其他项目的启发,并与之有一些相似之处。以下是一些相关项目:
- audiblez:从电子书生成有声读物。(同时支持命令行和图形界面)
- autiobooks:自动将 EPUB 文件转换为有声读物。
- pdf-narrator:轻松将 PDF 和 EPUB 文件转换为有声读物。
- epub_to_audiobook:EPUB 到有声读物转换工具,专为 Audiobookshelf 优化。
- ebook2audiobook:利用动态 AI 模型和语音克隆技术,将电子书转换为带有章节和元数据的有声读物。
路线图
- 添加使用 docling/Tesseract 对 PDF 文件进行 OCR 扫描的功能。
- 为 .m4a 文件添加章节元数据。(问题 #9,拉取请求 #10)
- 在图形界面上增加对多种语言的支持。
- 添加语音混合功能,允许混合不同的语音模型。(问题 #1,拉取请求 #5)
- 如果有必要,增加对 kokoro-onnx 的支持。
- 添加深色模式。
故障排除
如果您在运行 Abogen 时遇到任何问题,请尝试通过命令行启动:
abogen-cli
如果您是通过 Windows 安装程序 (WINDOWS_INSTALL.bat) 安装的,请前往 python_embedded/Scripts 目录并运行:
abogen-cli.exe
这将以命令行模式启动 Abogen,并显示详细的错误信息。请在 Issues 页面上提交新问题,附上错误信息及您的问题描述。
常见问题与解决方案
关于“abogen”这个名字
名字 "abogen" 来自于 "audiobook generator" 的缩写,而这也是这个项目的初衷。
在项目发布之后,我从 社区反馈 中了解到,“abo” 这个前缀在某些地区(尤其是澳大利亚和新西兰)可能会被误解为种族歧视用语。由于英语并非我的母语,在命名时我并没有意识到这一点。
我想明确的是,这个名字仅仅是为了表达其技术含义而取的,并无任何冒犯之意。感谢那些善意指出这一问题的人,这有助于确保项目对所有人保持尊重和友好。
如何解决“CUDA GPU 不可用。正在使用 CPU”警告?
这条消息表示 PyTorch 无法使用您的 GPU,因此回退到了 CPU。在 Windows 系统上,Abogen 仅支持配备 CUDA 的 NVIDIA 显卡。Windows 上不支持 AMD 显卡(AMD 显卡仅在 Linux 系统上通过 ROCm 支持)。尽管 Abogen 仍然可以在 CPU 上运行,但相比支持的 GPU,处理速度会慢很多。
如果您在 Windows 上拥有兼容的 NVIDIA 显卡,但仍看到此警告: 请在 Abogen 文件夹(包含
python_embedded的文件夹)中打开终端,并输入以下命令: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如果上述方法仍未能解决问题,并且您使用的是不支持 CUDA 12.8 的旧款 NVIDIA 显卡,您可以尝试安装一个支持您显卡的较旧版本的 PyTorch。例如,对于 CUDA 12.6,请运行:
python_embedded\python.exe -m pip install --force-reinstall torch==2.8.0+cu126 torchvision==0.23.0+cu126 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cu126如果您使用的是 AMD 显卡,则需要切换到 Linux 系统并按照 Linux/ROCm 的说明进行操作。如果您希望继续在 CPU 上运行,则无需采取任何措施,只是性能会有所下降。更多详情请参阅 #32。
如果您使用
uv安装了 Abogen,可以先卸载,然后尝试使用另一个 CUDA 版本来重新安装:# 首先卸载 Abogen uv tool uninstall abogen # 对于较旧驱动程序,尝试 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 # 如果仍然不行,再尝试 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
如何修复 Linux 系统中的“WARNING: The script abogen-cli is installed in '/home/username/.local/bin' which is not on PATH”错误?
请运行以下命令将 Abogen 添加到您的 PATH 环境变量中:
echo "export PATH=\"/home/$USER/.local/bin:\$PATH\"" >> ~/.bashrc && source ~/.bashrc
如何解决“No matching distribution found”错误?
请尝试在受支持的 Python 版本(3.10 至 3.12)上安装 Abogen。推荐使用 uv 进行安装。您也可以使用 pyenv 在 Linux 系统上轻松管理多个 Python 版本。观看 NetworkChuck 的这个视频可以获得快速指南。
如何解决“[WinError 1114] 动态链接库 (DLL) 初始化例程失败”错误?
我在尝试在一个没有 GPU 支持的虚拟 Windows 机器上运行 Abogen 时遇到了这个错误。以下是解决方法: 如果您使用 Windows 安装程序
(WINDOWS_INSTALL.bat)安装了 Abogen,请进入 Abogen 的文件夹(包含python_embedded的文件夹),在该目录下打开终端并运行: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如果您使用 pip 安装了 Abogen,请在虚拟环境的终端中运行:
pip install torch==2.8.0 torchaudio==2.8.0 torchvision==0.23.0 --index-url https://download.pytorch.org/whl/cu128
如何解决日语音频无法播放的问题?
日语音频可能需要额外的配置。
我目前还不确定具体的解决方案,但似乎与为 Kokoro 安装支持日语的附加依赖有关。请查看 #56 获取更多信息。
如何卸载 Abogen?
- 从设置菜单中,选择
Open configuration directory并删除该目录。- 从设置菜单中,选择
Open cache directory并删除该目录。- 如果您使用 pip 安装了 Abogen,请输入以下命令:
pip uninstall abogen # 卸载 Abogen pip cache purge # 清除 pip 缓存
- 如果您使用 uv 安装了 Abogen,请输入以下命令:
uv tool uninstall abogen # 卸载 Abogen uv cache clear # 清除 uv 缓存
- 如果您使用 Windows 安装程序
(WINDOWS_INSTALL.bat)安装了 Abogen,只需删除包含 Abogen 的文件夹即可。它会将所有内容安装在python_embedded文件夹内,不会创建其他目录。- 如果您还安装了 espeak-ng,需要单独将其移除。
贡献
我欢迎各位的贡献!如果您有新的功能、改进或 bug 修复的想法,请直接 fork 该项目并提交 pull request。
针对开发者和贡献者
如果您希望修改代码并参与开发,可以下载仓库,解压后运行以下命令来构建或安装软件包:
# 进入您解压后的仓库目录并执行:
pip install -e .[dev] # 以可编辑模式安装软件包,并包含构建依赖
python -m build # 将软件包构建到 dist 文件夹中(可选)
abogen # 打开 GUI
请确保您使用的是 Python 3.10 到 3.12 版本。如有需要,请创建虚拟环境。
替代方案:使用 uv(点击展开)
# 进入您解压后的仓库目录并执行:
uv venv --python 3.12 # 创建一个基于 Python 3.12 的虚拟环境
# 激活虚拟环境后,运行:
uv pip install -e . # 以可编辑模式安装包
uv build # 在 dist 文件夹中构建包(可选)
abogen # 打开 GUI
欢迎探索代码并根据需要进行修改。
致谢
- Web UI 实现由 @jeremiahsb 完成
- Abogen 使用 Kokoro 进行高质量、自然流畅的文本转语音合成。衷心感谢 Kokoro 团队使这一切成为可能。
- 感谢 spaCy 项目提供的句子分割工具,这些工具帮助 Abogen 生成更清晰、更自然的句子分割结果。
- 感谢 @wojiushixiaobai 提供的 Embedded Python 包。这些经过修改的包已预装 pip,使得 Abogen 可以作为独立应用程序运行,而无需用户在 Windows 系统上单独安装 Python。
- 感谢 EbookLib 的开发者,这是一个用于读取和写入 ePub 文件的 Python 库,Abogen 利用它从 ePub 文件中提取文本。
- 特别感谢 PyQt 团队,他们提供了跨平台的 GUI 工具包,为 Abogen 的界面提供了支持。
- 图标:美国、英国、西班牙、法国、印度、意大利、日本、巴西、中国、女性、男性、调整 和 语音 ID 图标均由 Icons8 提供。
许可证
本项目采用 MIT 许可证授权——详情请参阅 LICENSE 文件。
Kokoro 采用 Apache-2.0 许可证,允许商业使用、修改、分发及私人使用。
星标历史
[!注意] Abogen 支持所有语言的字幕生成。然而,单词级字幕模式(例如“1 个词”、“2 个词”、“3 个词”等)仅适用于英语,因为 Kokoro 仅为英语文本提供时间戳标记。对于非英语语言,Abogen 会使用基于时长的回退方案,支持句子级和逗号分隔的字幕模式(“行”、“句子”、“句子 + 逗号”)。如果您需要其他语言的单词级字幕,请在 Kokoro 项目 中提出该功能请求。
标签:有声书、Kokoro、文本转语音、TTS、有声书生成器、有声书、文本转语音、有声书制作工具、有声书创作者、有声书生成软件、语音合成、文本转音频、文本转音频转换器、文本转语音转换器、文本转语音生成器、文本转语音软件、文本转语音应用、ePub 转音频、PDF 转音频、Markdown 转音频、字幕转音频、SRT 转音频、ASS 转音频、VTT 转音频、WebVTT 转音频、内容创作、媒体生成
版本历史
v1.3.12026/02/06v1.2.52025/12/10v1.2.42025/11/28v1.2.32025/11/18v1.2.12025/10/27v1.2.02025/10/20v1.1.92025/09/18v1.1.82025/09/17v1.1.72025/08/25v1.1.62025/07/29v1.1.52025/07/16v1.1.42025/07/16v1.1.32025/07/16v1.1.22025/07/15v1.1.12025/07/11v1.0.92025/05/28v1.0.82025/05/22v1.0.72025/05/09v1.0.62025/05/04v1.0.52025/05/04常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

