SuperAPI AI 工具集

epub_to_audiobook

epub_to_audiobook 是一个将 EPUB 电子书转换为有声书的命令行工具,并包含 WebUI 界面。它支持 Microsoft Azure 文本转语音 API、Edge TTS、OpenAI 文本转语音 API 以及 Piper TTS 来为电子书的每一章生成音频。生成的音频文件针对 Audiobookshelf 进行了优化,每一章会转换为独立的 MP3 文件,并提取章节标题作为元数据。项目需要 Python 3.10+ 或 Docker 环境。使用 Azure TTS 需要 Microsoft Azure 账户及认知服务语音服务访问权限;使用 OpenAI TTS 需要 OpenAI API Key;使用 Edge TTS 无需 API Key;使用 Piper TTS 需要可执行文件和模型。WebUI 基于 Gradio 构建,提供文件上传、TTS 提供商选择、语音配置、高级设置、实时日志、预览模式以及搜索替换等功能。该项目还提供了 Docker 镜像和 docker-compose 配置,方便部署。

访问官网

工具介绍

用途

epub_to_audiobook 是一个将 EPUB 格式电子书转换为有声书的工具。它通过文本转语音(TTS)技术为电子书的每一章生成音频文件,输出结果针对 Audiobookshelf 进行了优化,方便用户在有声书管理平台中导入和收听。

主要能力

  • 支持多种 TTS 提供商:Microsoft Azure 文本转语音 API、Edge TTS、OpenAI 文本转语音 API 以及 Piper TTS。
  • 将 EPUB 文件中的每一章转换为独立的 MP3 文件,并提取章节标题作为元数据。
  • 提供命令行界面和基于 Gradio 的 WebUI 图形界面。
  • WebUI 功能包括:文件上传(拖拽)、TTS 提供商选择、语音配置(语言、声音、输出格式)、高级设置、实时日志、预览模式、搜索替换(用于修正发音或扩展缩写)。
  • 支持通过环境变量配置 API 凭据。
  • 提供 Docker 镜像和 docker-compose 配置,简化部署。
  • 支持预览模式,可在转换前查看各章节的字符数统计。
  • 支持搜索替换文件,每行包含一个正则搜索和替换,用 '==' 分隔。

使用方式

安装

  1. 克隆仓库:git clone https://github.com/p0n1/epub_to_audiobook.git 然后 cd epub_to_audiobook。
  2. 创建并激活虚拟环境:python3 -m venv venv 然后 source venv/bin/activate。
  3. 安装依赖:pip install -r requirements.txt。注意:Python 3.14 需要仓库中更新的依赖集;旧版本固定了 gradio==5.33.1,可能导致 pydantic-core 源码构建失败并出现 PyO3 兼容性错误。
  4. 设置环境变量:
    • Azure:export MS_TTS_KEY=<your_subscription_key> 和 export MS_TTS_REGION=<your_region>
    • OpenAI:export OPENAI_API_KEY=<your_openai_api_key>
    • 使用 Kokoro TTS 时,无需官方 OpenAI 密钥,但需要在环境变量中设置一个占位值(例如 export OPENAI_API_KEY='fake'),除非使用 docker compose 文件。

命令行使用

基本命令格式:python3 main.py "path/to/book.epub" "path/to/output/folder" --tts <provider>

示例:

  • Azure 基本转换:python3 main.py "path/to/book.epub" "path/to/output/folder" --tts azure
  • Azure 自定义语言和声音:python3 main.py "path/to/book.epub" "path/to/output/folder" --tts azure --language zh-CN --voice_name "zh-CN-YunyeNeural" --log DEBUG
  • Azure 章节范围和段落间隔:python3 main.py "path/to/book.epub" "path/to/output/folder" --tts azure --chapter_start 5 --chapter_end 10 --break_duration "1500"
  • OpenAI 基本转换:python3 main.py "path/to/book.epub" "path/to/output/folder" --tts openai
  • OpenAI HD 模型和特定声音:python3 main.py "path/to/book.epub" "path/to/output/folder" --tts openai --model_name "tts-1-hd" --voice_name "fable"
  • OpenAI 预览和文本输出:python3 main.py "path/to/book.epub" "path/to/output/folder" --tts openai --preview --output_text

可以使用 --preview 选项在转换前获取每章的摘要(字符数统计)。

WebUI 使用

启动 WebUI:运行相应命令后,默认访问地址为 http://127.0.0.1:7860,可自定义主机和端口。

WebUI 操作步骤:

  1. 上传 EPUB 文件。
  2. 从选项卡中选择 TTS 提供商(OpenAI、Azure、Edge 或 Piper)。
  3. 配置提供商特定设置:
    • OpenAI:选择模型、声音、速度和格式。
    • Azure:选择语言、声音、格式和间隔时长。
    • Edge:设置语言、声音、速率、音量和音调。
    • Piper:配置本地或 Docker 部署及声音选项。
  4. 设置输出目录或使用默认的时间戳文件夹。
  5. 根据需要调整高级选项(章节范围、文本处理等)。
  6. 点击 Start 开始转换。
  7. 通过集成的日志查看器监控进度。

可以选取几章预览音频后再开始完整转换。

Docker 使用

可以使用提供的 docker-compose.webui.yml 文件运行 WebUI。确保编辑文件填入 TTS 提供商的 API 密钥。WebUI 可通过 http://localhost:7860 或 http://127.0.0.1:7860 访问。

也可以直接使用 Docker 镜像:从 GitHub Container Registry 拉取镜像,然后运行命令。例如 OpenAI:docker run ...(具体命令参考仓库)。-v ./:/app 选项将当前目录挂载到容器中的 /app 目录,以便读写文件。-i 和 -t 选项用于启用交互模式和分配伪终端。

适用场景

  • 将个人收藏的 EPUB 电子书转换为有声书,便于在 Audiobookshelf 中管理和收听。
  • 需要批量转换电子书章节并保留章节标题元数据的用户。
  • 希望通过图形界面(WebUI)操作而非命令行的用户。
  • 熟悉 Docker 并希望快速部署的用户。
  • 需要自定义语音、语言、章节范围等参数的高级用户。

限制

  • 需要 Python 3.10+ 或 Docker 环境。
  • 使用 Azure TTS 需要 Microsoft Azure 账户和认知服务语音服务访问权限。
  • 使用 OpenAI TTS 需要 OpenAI API Key(Kokoro TTS 除外,但需设置占位值)。
  • 使用 Piper TTS 需要可执行文件和模型。
  • 章节标题提取方法基于解析 HTML 中的 title 标签,对于格式复杂或不寻常的 EPUB 文件可能不完美,会使用章节文本前几个词作为回退标题。
  • WebUI 是本地运行的 Web 应用,没有授权机制,不应暴露在公网,否则可能导致 TTS 提供商被未授权访问。
  • Edge TTS 基于 Edge 朗读功能,无需 API Key,但参数受限(如自定义 SSML)。
  • 使用 OpenAI 兼容服务(如 matatonic/openedai-speech)时需要设置相应配置。
  • 具体价格和收费信息暂未提供。