ebook2audiobook:开源电子书转有声书工具,支持 1110 + 语言与多模型语音克隆

原创 发布日期:
8

一、ebook2audiobook是什么?

ebook2audiobook是一款开源的电子书转有声书工具,核心功能是将非DRM合法电子书转换为带章节结构与元数据的有声书。工具支持1110+种语言,集成XTTSv2、Bark、Vits等主流TTS引擎,可实现高质量语音生成与自定义语音克隆(仅需6秒内.wav文件),兼容.epub、.mobi、.pdf等20+种电子书输入格式,输出.m4b、.mp3、.flac等10种音频格式。工具支持CPU/GPU/MPS(Apple Silicon)运行,提供Gradio可视化界面与Headless命令行两种使用模式,还可通过Docker容器化部署解决依赖冲突,最低仅需4GB RAM即可运行,适用于个人听书、教育辅助、内容创作等场景。

从核心定位来看,它并非简单的“文本转语音工具”,而是针对“电子书场景”优化的完整解决方案——不仅能实现文本到音频的转换,还能自动识别电子书的章节结构、保留元数据(如书名、作者、章节名),最终生成符合收听习惯的“结构化有声书”,而非零散的音频片段。

在合规性上,项目明确标注“仅支持非DRM、合法获取的电子书”:DRM(数字版权管理)是电子书常见的版权保护技术,破解或转换DRM保护的电子书可能涉及侵权,因此工具从设计上拒绝处理此类文件,开发者也明确声明“不对任何 misuse 工具的行为及法律后果负责”,用户需遵守当地版权法规。

从技术属性来看,ebook2audiobook是一款“轻量且灵活”的工具:最低仅需4GB RAM即可运行,兼容Intel/AMD/ARM架构的CPU,以及NVIDIA、AMD(即将支持)、Intel(即将支持)的GPU,甚至适配Apple Silicon芯片的MPS加速(即将支持);同时提供可视化GUI与命令行两种模式,支持本地运行与Docker部署,满足不同技术背景用户的需求(新手用GUI,开发者用命令行批量处理)。

ebook2audiobook:开源电子书转有声书工具,支持 1110 + 语言与多模型语音克隆

二、ebook2audiobook的功能特色

ebook2audiobook的核心竞争力在于“全场景覆盖”——从输入格式、语言支持,到语音质量、使用模式,均围绕“电子书转有声书”的核心需求设计,具体特色可分为以下6点:

1. 多格式兼容:输入覆盖20+电子书类型,输出支持10种音频格式

工具对“输入”与“输出”格式的兼容性极强,无需用户手动转换文件格式即可直接使用,其中输入格式针对“章节识别”做了优化,输出格式则兼顾不同播放设备的需求。具体格式支持如下表所示:

类别 支持格式列表 关键说明
输入格式(20+种) 最佳适配:.epub、.mobi
常用格式:.pdf、.txt、.rtf、.doc、.docx、.html、.odt
其他格式:.azw3、.fb2、.lit、.rb、.snb、.tcr、.azw、.chm、.pdb、.cbr、.cbz、.prc、.lrf、.pml、.cbc
1. .epub和.mobi是最佳选择:这两种格式原生包含章节结构标签(如EPUB的<chapter>标签、MOBI的内容索引),工具可自动拆分章节,无需手动处理;
2. .pdf格式需注意:若为“图片扫描版PDF”(无文本图层),工具无法识别文本,需先转换为“可复制文本版PDF”;
3. 无标准结构的文件(如纯.txt):需手动删除前言、广告、注释等无用文本,避免转换后音频包含冗余内容
输出格式(10种) .m4b、.m4a、.mp4、.webm、.mov、.mp3、.flac、.wav、.ogg、.aac 1. 所有格式均默认包含章节信息与元数据(如书名、章节名),可在播放器中直接跳转章节;
2. 默认输出格式可在./lib/conf.py文件中修改(如将默认改为.mp3以适配多数设备);
3. .m4b是有声书专用格式:支持章节标记与书签功能,适合长时间听书场景

2. 多TTS引擎支持:从默认高质量到自定义模型,满足不同音质需求

工具集成了6种主流TTS(文本转语音)引擎,用户可根据“语言兼容性”“音质需求”“硬件性能”选择合适的引擎,甚至支持上传自定义模型以实现个性化语音效果:

  • 默认引擎:XTTSv2:由Coqui团队开发的多语言TTS模型,支持零-shot语音克隆(无需大量训练数据),音质接近真人,且对多语言的适配性最优,是工具的默认选择,适合多数用户的日常需求。

  • 可选引擎

    • Bark:由Suno AI开发,支持多语言与情感语音(如欢快、低沉),生成的语音更具“表现力”,适合小说、故事类电子书;

    • Vits:轻量级模型,占用内存小、转换速度快,适合CPU运行或低配置设备;

    • Fairseq/Tacotron2/YourTTS:均为成熟的开源TTS模型,其中YourTTS专注于多语言语音克隆,Fairseq则在小语种支持上更具优势,适合特殊语言场景。

  • 自定义模型:用户可上传自己训练的TTS模型(需压缩为.zip文件),但需包含模型运行的“ mandatory 文件”——以XTTSv2自定义模型为例,需包含config.json(模型配置参数)、vocab.json(模型词汇表)、model.pth(模型权重文件)、ref.wav(语音参考文件),具体要求可参考项目内./lib/models.py文档。

3. 语音克隆:6秒.wav文件实现“自定义声音”,支持多语言适配

语音克隆是工具的核心亮点之一,无需复杂的训练流程,仅需上传一段6秒内的.wav语音文件,即可让有声书以“目标声音”生成(如用自己的声音、家人的声音听书),且针对不同语言做了采样率优化:

  • 文件要求

    • 格式:仅支持.wav(无压缩音频格式,确保音质);

    • 采样率:主要语言(如中文、英文、 Spanish、法语等)需24000hz,其他小语种需22050hz(采样率不匹配会导致克隆语音失真);

    • 时长:不超过6秒(过长会增加模型处理压力,反而降低克隆精度,建议选择“清晰、无噪音”的短句,如“今天天气很好”)。

  • 使用场景:适合对语音有个性化需求的用户,例如:用孩子的声音听儿童绘本、用熟悉的方言声音听地方文学作品、用外语母语者的声音听外语教材(辅助发音学习)。

4. 1110+语言覆盖:从主流语言到小语种,打破语言壁垒

工具支持1110+种语言及方言,是同类工具中语言覆盖最广的之一,默认语言为英文(代码:en),支持两种语言代码格式:ISO-639-3(3位代码,如“ita”代表意大利语)与ISO-639-1(2位代码,如“zh”代表中文),用户可通过--language参数指定语言。

以下为部分主流语言的支持情况(完整列表可参考项目“List of Supported languages”文档):

语言类别 语言名称(中文) 语言代码(ISO-639-1/3) 适配TTS引擎
中文及周边语言 中文 zh/chi XTTSv2、Bark、YourTTS
  日语 ja/jpn XTTSv2、Bark
  韩语 ko/kor XTTSv2、Fairseq
欧美语言 英文 en/eng 所有引擎(优先XTTSv2)
  西班牙语 es/spa XTTSv2、Bark
  法语 fr/fra XTTSv2、Tacotron2
  德语 de/deu XTTSv2、Vits
其他语言 印地语 hi/hin XTTSv2、Fairseq
  阿拉伯语 ar/ara XTTSv2、YourTTS
  斯瓦希里语 sw/swa Fairseq

小语种支持依赖于TTS引擎的训练数据,例如Fairseq对非洲、东南亚小语种的适配性更强,用户可根据目标语言选择对应的引擎(工具会默认推荐适配性最优的引擎)。

5. 章节与文本优化:自动拆分+手动控制,提升听书体验

工具针对“听书场景”做了细节优化,避免因“文本结构混乱”导致的收听体验差问题:

  • 自动章节拆分:对.epub、.mobi等含结构的格式,工具会自动识别章节标题(如“第一章 序章”),并按章节生成独立的音频片段,最终合并为带章节标记的有声书文件(如.m4b),用户在播放器中可直接跳转至目标章节(如从“第三章”跳至“第五章”)。

  • 手动停顿控制:支持在文本中添加“停顿标记”——输入“###”或“[pause]”,工具会在对应位置插入1.4秒的静音,适合在“段落结尾、对话间隔、情感转折”处使用,例如在小说中“他说:‘你还好吗?’”后添加“###”,避免语音连读导致的理解困难。

  • 文本预处理提示:对无标准结构的文件(如纯.txt),工具会提示用户“手动删除无用文本”——例如电子书开头的“版权声明”、结尾的“参考文献”,或中间的“广告插页”,确保转换后的音频仅包含核心内容。

6. 轻量化与跨硬件支持:低配置可运行,高配置能加速

工具在“性能适配”上表现优异,既支持低配置设备(如4GB RAM的笔记本),也能利用高性能硬件(如NVIDIA GPU)提升转换速度:

  • 内存要求:最低4GB RAM(仅CPU运行时),推荐8GB RAM(GPU运行或批量转换时),内存不足会导致转换速度变慢,但不会直接崩溃(工具会自动调整“文本分段大小”以适配内存)。

  • 处理器支持

    • CPU:兼容Intel、AMD、ARM架构(如树莓派的ARM CPU),仅需满足Python运行环境即可;

    • GPU:优先支持NVIDIA GPU(通过CUDA加速,转换速度比CPU快3-5倍,接近实时生成),AMD、Intel GPU即将支持;

    • MPS:Apple Silicon芯片(如M1、M2)的MPS加速功能即将支持,解决苹果用户“GPU利用率低”的问题。

  • 系统兼容:支持Windows 10+、Linux(Ubuntu/CentOS等)、MacOS 12+,无系统版本过高的限制。

ebook2audiobook:开源电子书转有声书工具,支持 1110 + 语言与多模型语音克隆

三、ebook2audiobook的技术细节

1. 核心技术栈:从“电子书解析”到“音频生成”的全链路依赖

工具的技术栈围绕“电子书处理→文本预处理→TTS生成→音频组装”四个核心环节构建,所有依赖均为开源工具或库,确保项目的可复现性与可扩展性:

技术环节 核心依赖工具/库 作用说明
电子书解析 Calibre(开源电子书管理工具)、ebooklib(Python库) 解析.epub、.mobi等格式的电子书,提取文本内容与章节结构,排除DRM保护文件
文本预处理 NLTK(自然语言处理库)、正则表达式 清洗文本(去除特殊符号、多余空格)、拆分长文本(避免TTS模型处理超时)、识别章节标题
TTS生成 Coqui TTS(XTTSv2/YourTTS)、Suno Bark、Vits(开源TTS库) 将预处理后的文本转换为音频,支持语音克隆与多语言生成
音频组装 FFmpeg(开源音频处理工具)、pydub(Python音频库) 合并章节音频、添加元数据(书名、章节名)、转换输出格式
可视化界面 Gradio(Python Web框架) 提供拖拽上传、参数选择、进度显示的GUI界面,无需编写代码即可使用
容器化部署 Docker、Docker Compose 打包所有依赖(Python环境、TTS模型、工具),解决“环境配置难”问题

2. 工作流程:5步完成“电子书→有声书”转换

工具的工作流程高度自动化,用户仅需上传文件或指定参数,即可完成全流程转换,具体步骤如下:

  1. 输入解析与合规检查

    • 读取用户上传的电子书文件(或指定路径的文件),通过Calibre判断是否含DRM保护——若含DRM,直接提示“不支持该文件”并终止流程;

    • 对非DRM文件,提取文本内容与章节结构(如.epub文件提取<body>标签内的文本,识别<h1>/<h2>标签作为章节标题)。

  2. 文本预处理

    • 清洗文本:去除文本中的HTML标签(如<p>)、特殊符号(如“★”“→”)、多余空格,确保文本仅含“可朗读内容”;

    • 拆分文本:将单章节的长文本拆分为“500字以内的片段”(TTS模型对长文本处理效率低,拆分后可并行生成音频);

    • 识别停顿标记:若用户在文本中添加“###”或“[pause]”,替换为对应的“静音时长标记”(1.4秒)。

  3. TTS模型加载与语音生成

    • 根据用户选择的TTS引擎(如XTTSv2),自动下载预训练模型(首次使用需下载,后续复用);

    • 若开启语音克隆,加载用户上传的.wav文件,提取语音特征并传入TTS模型;

    • 按“文本片段”批量生成音频,GPU用户可并行处理多个片段(CPU用户按顺序处理),生成的音频片段临时存储在./tmp目录。

  4. 音频组装与元数据添加

    • 按章节顺序合并音频片段(如“第一章”的所有片段合并为一个音频文件);

    • 通过FFmpeg添加元数据:包括书名(从电子书提取)、章节名(从章节标题提取)、作者(若电子书含作者信息)、音频格式(如.mp3的比特率);

    • 若用户指定输出格式(如.m4b),将合并后的音频转换为目标格式。

  5. 输出与清理

    • 将最终的有声书文件保存至./audiobooks目录(默认路径,可通过--output_dir参数修改);

    • 删除./tmp目录下的临时音频片段,释放磁盘空间。

3. 性能优化:平衡“速度”与“资源占用”

工具在性能上做了多项优化,确保不同硬件配置的用户都能获得较好的体验:

  • GPU加速逻辑:对NVIDIA GPU用户,自动启用CUDA加速(需安装NVIDIA驱动与CUDA Toolkit),TTS模型的推理速度提升3-5倍——例如100页的.epub文件,CPU需30分钟转换,GPU仅需6-8分钟;

  • 内存控制:通过“文本分段大小自适应”机制,若检测到内存不足(如4GB RAM),自动将文本片段从“500字”缩小至“200字”,避免内存溢出;

  • 模型缓存:首次下载的TTS模型(如XTTSv2)会缓存至./models目录,后续使用无需重复下载,节省带宽与时间;

  • Docker镜像优化:预构建的Docker镜像仅包含“必要依赖”,体积控制在2GB以内(不含TTS模型,模型在首次运行时下载),避免镜像过大导致的下载缓慢。

四、ebook2audiobook的应用场景

工具的应用场景覆盖“个人”“教育”“内容创作”“企业”四大领域,核心是解决“‘不方便阅读’但‘需要获取文本信息’”的需求:

1. 个人用户:打造“个性化听书体验”

  • 通勤/运动听书:将小说、散文等电子书转为有声书,在地铁、跑步时收听,充分利用碎片时间——例如将《三体》.epub文件转为.m4b格式,通勤1小时可听1章,无需盯着屏幕;

  • 视力障碍者辅助:对视力不佳或完全失明的用户,有声书是获取文本信息的重要方式,工具支持的1110+语言可覆盖不同语言背景的视力障碍者,且语音克隆功能可让他们用“熟悉的声音”听书(如家人的声音);

  • 外语学习:将外语教材(如英语《哈利波特》、日语《挪威的森林》)转为有声书,结合“语音克隆”(用外语母语者的声音),既能听故事,又能学习发音——例如用英语母语者的.wav文件克隆语音,听书时模仿语音语调,提升口语能力;

  • 儿童听书:将儿童绘本(如《小猪佩奇》.pdf文件)转为有声书,用孩子喜欢的声音(如卡通角色的声音、父母的声音)生成,避免孩子长时间看屏幕损伤视力。

2. 教育场景:辅助“教材与阅读材料”的传播

  • 学校/培训机构:将教材、习题集转为有声书,供学生在课后复习——例如小学语文教材(.epub格式)转为有声书,学生可在回家路上听课文,加深记忆;

  • 多语言教学:针对双语学校或小语种教学,将教学材料转为对应语言的有声书——例如西班牙语课堂上,将课文转为西班牙语有声书,帮助学生熟悉听力;

  • 特殊教育:对有阅读障碍(如 dyslexia)的学生,有声书可降低阅读难度,工具的“手动停顿”功能可让教师在重点内容处添加停顿,帮助学生理解(如在数学公式“1+2=3”后添加停顿,让学生有时间反应)。

3. 内容创作者:低成本制作“有声书内容”

  • 自媒体博主:制作有声书类内容(如“睡前故事”“名著解读”),上传至抖音、B站等平台——由于工具仅支持非DRM合法电子书,创作者需使用原创文本或获得授权的文本(如公共领域名著),避免版权问题;

  • 独立作者:将自己的小说、散文转为有声书,在微信公众号、喜马拉雅等平台分发,拓展内容形态——例如独立作者将自己的短篇小说(.txt格式)转为有声书,用自己的声音克隆生成,增加与读者的情感连接;

  • 播客制作:为播客节目准备“文本转语音”片段,例如在播客中插入“名著节选”的有声片段,无需手动录制,节省制作时间。

4. 企业/机构:提升“内部文档”的传递效率

  • 企业培训:将员工手册、培训材料(如《产品知识手册》.docx文件)转为有声书,员工可在通勤时收听,提升培训覆盖率——例如销售团队成员在出差路上听产品知识有声书,无需携带纸质手册;

  • 政府/公益机构:将政策文件、公益宣传材料(如《垃圾分类指南》.pdf文件)转为多语言有声书,面向不同语言背景的人群传播——例如在多民族地区,将政策文件转为汉语、维吾尔语、藏语等多语言有声书,确保信息传递无死角;

  • 图书馆/档案馆:将公共领域的古籍、文献(如民国时期的报纸扫描件转为可文本的.pdf)转为有声书,供读者在线收听,保护古籍的同时提升利用效率。

ebook2audiobook:开源电子书转有声书工具,支持 1110 + 语言与多模型语音克隆

五、ebook2audiobook的使用方法

工具提供三种使用模式:Gradio GUI(可视化,推荐新手)Headless命令行(批量处理,推荐开发者)Docker部署(解决依赖冲突,推荐所有用户),以下为详细步骤:

1. 前置准备:克隆仓库(所有模式通用)

无论选择哪种模式,首先需克隆GitHub仓库(需安装Git工具,若无Git可直接下载仓库压缩包):

# 克隆仓库
git clone https://github.com/DrewThomasson/ebook2audiobook.git
# 进入项目目录
cd ebook2audiobook

若未安装Git,可访问仓库地址(https://github.com/DrewThomasson/ebook2audiobook),点击右上角“Code”→“Download ZIP”,解压后进入文件夹。

2. 模式1:Gradio GUI(可视化,新手首选)

Gradio GUI提供拖拽上传、参数选择、进度显示的界面,无需编写代码,适合非技术背景用户,步骤如下:

(1)启动GUI(分系统)

操作系统 启动方式
Windows 双击项目目录中的ebook2audiobook.cmd文件,或在终端中运行:ebook2audiobook.cmd
Linux/MacOS 在终端中运行:./ebook2audiobook.sh(若提示“权限不足”,先运行chmod +x ebook2audiobook.sh
MacOS 也可双击Mac Ebook2Audiobook Launcher.command文件,自动打开终端并启动

(2)使用GUI界面

启动后,终端会输出类似以下内容:

Running on local URL: http://localhost:7860
Running on public URL: https://xxxx-xxxx-xxxx-xxxx.gradio.live (仅添加--share参数时显示)

打开浏览器访问http://localhost:7860,进入GUI界面,主要分为“Input Options(输入选项)”与“Audio Generation Preferences(音频生成偏好)”两部分:

  • Input Options

    • 电子书文件:拖拽或点击“Upload”上传非DRM电子书(如.epub、.mobi);

    • 语音克隆文件(可选):拖拽或上传.wav文件(需符合6秒内、对应采样率要求);

    • 自定义模型(可选):若需使用自定义TTS模型,拖拽上传包含 mandatory 文件的.zip压缩包。

  • Audio Generation Preferences

    • Processor Unit:选择“CPU”或“GPU”(若有NVIDIA GPU,优先选GPU以加速);

    • Language:选择电子书语言(如“Chinese”,默认英文);

    • TTS Base:选择TTS引擎(默认XTTSv2,新手无需修改)。

设置完成后,点击“Submit”按钮,界面会显示转换进度(如“正在解析电子书”“正在生成第1章音频”),转换完成后,点击“Download”按钮下载有声书文件(默认保存至./audiobooks目录)。

(3)生成公共链接(远程访问)

若需让他人远程访问你的GUI界面(如协助朋友转换),可在启动时添加--share参数:

  • Windows:ebook2audiobook.cmd --share

  • Linux/MacOS:./ebook2audiobook.sh --share 终端会生成一个公共URL(如https://xxxx-xxxx-xxxx-xxxx.gradio.live),他人打开该链接即可使用你的GUI界面(链接有效期24小时,且需你的设备保持运行)。

3. 模式2:Headless命令行(批量处理,开发者首选)

Headless模式无界面,通过命令行参数指定输入输出,适合批量转换或脚本集成(如定时转换多个电子书),步骤如下:

(1)基础命令格式(分系统)

操作系统 基础命令格式
Windowsebook2audiobook.cmd --headless --ebook <电子书路径> [可选参数]
Linux/MacOS./ebook2audiobook.sh --headless --ebook <电子书路径> [可选参数]

(2)核心参数说明

参数 作用说明 示例
--headless 启用Headless模式(必须添加,否则启动GUI)
--ebook <路径> 指定单个电子书文件路径(必填,不可与--ebooks_dir同时使用)--ebook ./ebooks/三体.epub
--ebooks_dir <路径> 指定电子书文件夹路径(批量转换,不可与--ebook同时使用)--ebooks_dir ./my_ebooks
--voice <路径> 指定语音克隆.wav文件路径(可选)--voice ./voices/my_voice.wav
--language <代码> 指定语言代码(可选,默认eng)--language zh(中文)、--language ja(日语)
--device <类型> 指定处理器(可选,默认自动检测)--device gpu(GPU)、--device cpu(CPU)
--output_dir <路径> 指定输出目录(可选,默认./audiobooks)--output_dir ./my_audiobooks
--output_format <格式> 指定输出格式(可选,默认.m4b)--output_format mp3

(3)示例命令

  1. 单个电子书转换(中文,GPU,输出.mp3)

    • Windows:

      ebook2audiobook.cmd --headless --ebook ./ebooks/三体.epub --language zh --device gpu --output_format mp3
    • Linux/MacOS:

      ./ebook2audiobook.sh --headless --ebook ./ebooks/三体.epub --language zh --device gpu --output_format mp3
  2. 批量转换(文件夹内所有电子书,语音克隆)

    • Linux/MacOS:

      ./ebook2audiobook.sh --headless --ebooks_dir ./my_ebooks --voice ./voices/mom_voice.wav --language zh --output_dir ./family_audiobooks
  3. 使用自定义模型(XTTSv2自定义模型)

    • Windows:

      ebook2audiobook.cmd --headless --ebook ./ebooks/小王子.epub --custom_model ./models/my_xtts_model.zip --language fr(法语)

(4)查看所有参数

若需了解更多参数(如TTS模型的温度参数、采样参数),可运行以下命令查看帮助文档:

  • Windows:ebook2audiobook.cmd --help

  • Linux/MacOS:./ebook2audiobook.sh --help

  • 全系统通用:python app.py --help

4. 模式3:Docker部署(解决依赖冲突,推荐所有用户)

Docker部署可打包所有依赖(Python环境、TTS工具、FFmpeg等),避免“本地环境配置难”“依赖版本冲突”问题,步骤如下:

(1)前置准备:安装Docker

  • Windows/MacOS:下载Docker Desktop(https://www.docker.com/products/docker-desktop/),安装后启动;

  • Linux:参考Docker官方文档安装(https://docs.docker.com/engine/install/),启动Docker服务:`sudo systemctl start docker`。

(2)使用预构建镜像(推荐,无需构建)

项目提供预构建的Docker镜像(athomasson2/ebook2audiobook),标签latest对应CUDA 11.8(支持NVIDIA GPU),直接运行即可:

  1. CPU-only运行(无GPU)

    docker run --pull always --rm -p 7860:7860 athomasson2/ebook2audiobook
    • --pull always:每次运行前拉取最新镜像;

    • --rm:容器停止后自动删除;

    • -p 7860:7860:将容器的7860端口映射到本地7860端口(对应Gradio界面)。

  2. NVIDIA GPU加速运行

    docker run --pull always --rm --gpus all -p 7860:7860 athomasson2/ebook2audiobook
    • --gpus all:启用所有NVIDIA GPU(需安装NVIDIA Container Toolkit)。

  3. Headless模式运行(Docker命令行): 若需在Docker中使用Headless模式,需挂载本地目录(让容器访问本地的电子书文件与输出目录):

    # 1. 本地创建输入(input-folder)与输出(audiobooks)目录
    mkdir input-folder && mkdir audiobooks
    # 2. 复制电子书到input-folder目录
    # 3. 运行Docker命令(批量转换input-folder内的电子书)
    docker run --pull always --rm \
      -v $(pwd)/input-folder:/app/input_folder \
      -v $(pwd)/audiobooks:/app/audiobooks \
      athomasson2/ebook2audiobook \
      --headless --ebooks_dir /app/input_folder --language zh --output_dir /app/audiobooks
    • -v $(pwd)/input-folder:/app/input_folder:将本地input-folder目录挂载到容器的/app/input_folder目录;

    • 转换完成后,有声书文件会保存在本地audiobooks目录。

(3)自定义构建镜像(按需修改)

若需修改镜像配置(如指定PyTorch版本、跳过XTTSv2测试),可本地构建镜像:

# 基础构建命令
docker build -t athomasson2/ebook2audiobook .

# 可选参数:指定PyTorch版本(如cuda121)
docker build --build-arg TORCH_VERSION=cuda121 -t athomasson2/ebook2audiobook .

# 可选参数:跳过XTTSv2测试(节省镜像体积)
docker build --build-arg SKIP_XTTS_TEST=true -t athomasson2/ebook2audiobook .
  • --build-arg TORCH_VERSION:支持的参数值包括cuda121(CUDA 12.1)、cuda118(CUDA 11.8)、rocm(AMD GPU)、xpu(Intel GPU)、cpu(仅CPU);

  • --build-arg SKIP_XTTS_TEST=true:跳过XTTSv2模型的测试步骤,减少镜像体积约500MB。

(4)Docker Compose部署(适合长期运行)

若需长期运行工具(如作为家庭服务器的“有声书转换服务”),可使用Docker Compose:

  1. 进入项目目录,修改docker-compose.yml文件:将*gpu-disabled改为*gpu-enabled(启用GPU,默认禁用);

  2. 启动服务:

    # Docker
    docker-compose up -d (首次启动或更新时加--build:docker-compose up -d --build)
    # Podman(若用Podman替代Docker)
    podman compose -f podman-compose.yml up -d
  3. 访问界面:打开http://localhost:7860即可使用,服务会在后台持续运行,重启设备后需重新启动。

ebook2audiobook:开源电子书转有声书工具,支持 1110 + 语言与多模型语音克隆

六、常见问题解答(FAQ)

1. 问题:NVIDIA GPU未被检测到,无法启用GPU加速?

解决方案

  1. 确认已安装NVIDIA显卡驱动(版本需≥450.80.02),可通过nvidia-smi命令检查(Windows需在PowerShell中运行,Linux/MacOS在终端运行);

  2. 安装NVIDIA Container Toolkit(Docker支持GPU的必要组件):

    • Linux:参考官方文档(https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html);

    • Windows/MacOS:确保Docker Desktop的“Settings→Resources→GPU”已勾选;

  3. 若仍未检测到,参考项目“GPU ISSUES Wiki Page”(仓库内链接),或在GitHub Issues中搜索类似问题(多数为驱动版本不兼容)。

2. 问题:Docker运行时,TTS模型下载卡住(进度条不动)?

解决方案: 部分设备因“进度条机制”导致下载卡住,可通过禁用进度条解决,在Docker命令中添加环境变量HF_HUB_DISABLE_PROGRESS_BARS=1HF_HUB_ENABLE_HF_TRANSFER=0

docker run --pull always --rm --gpus all \
  -e HF_HUB_DISABLE_PROGRESS_BARS=1 \
  -e HF_HUB_ENABLE_HF_TRANSFER=0 \
  -p 7860:7860 athomasson2/ebook2audiobook

该方法来自项目#191 Issue的社区解决方案,已验证有效。

3. 问题:本地运行时提示“依赖缺失”(如“找不到calibre”“ffmpeg未安装”)?

解决方案

  1. 优先选择Docker部署:Docker镜像已包含所有依赖,无需手动安装;

  2. 若坚持本地安装,需手动安装REQUIRED_PROGRAMS列表中的工具:

    • calibre:官网(https://calibre-ebook.com/)下载安装;

    • ffmpeg:官网(https://ffmpeg.org/)下载,或通过包管理器安装(Linux:`sudo apt install ffmpeg;MacOS:brew install ffmpeg`;Windows:下载后添加环境变量);

    • 其他工具(nodejs、mecab等):通过对应系统的包管理器安装(如Linux:sudo apt install nodejs mecab);

  3. 安装完成后,重新运行启动脚本(如./ebook2audiobook.sh)。

4. 问题:转换后的音频出现“截断”(如章节末尾缺失、句子不完整)?

解决方案

  1. 首先检查电子书文本:若文本中含特殊符号(如“\0”“\r”),工具可能无法识别,需手动删除(可用记事本打开.txt格式的电子书,替换特殊符号);

  2. 若问题仍存在,在GitHub提交Issue(仓库“Issues”标签),提供以下信息:电子书格式、语言、TTS引擎、截断位置的文本内容——由于工具对部分语言的“句子拆分逻辑”尚未优化,需要多语言用户协助改进,开发者会根据反馈调整算法。

5. 问题:Gradio界面启动后,刷新页面提示“无法连接”?

解决方案

  1. 若脚本重启过(如之前关闭终端后重新启动),需刷新浏览器页面(按F5),因为重启后脚本的socket连接会变化;

  2. 若仍无法连接,检查端口是否被占用:

    • Windows:在PowerShell中运行netstat -ano | findstr :7860,若有进程占用,结束进程(taskkill /PID <进程ID> /F);

    • Linux/MacOS:在终端中运行lsof -i :7860,结束进程(kill -9 <进程ID>);

  3. 重新启动脚本,访问http://localhost:7860

6. 问题:上传自定义TTS模型后,提示“缺少 mandatory 文件”?

解决方案

  1. 确认自定义模型的.zip文件包含对应引擎的 mandatory 文件:

    • XTTSv2:需包含config.jsonvocab.jsonmodel.pthref.wav

    • Bark:需包含model.ptvocab.txt

    • Vits:需包含config.jsonpytorch_model.bin

  2. 检查文件名是否正确(如XTTSv2的权重文件需命名为model.pth,不可改为xtts_model.pth);

  3. 若仍有问题,参考项目./lib/models.py文档,确认文件格式与路径是否符合要求。

七、相关链接

八、总结

ebook2audiobook是一款针对“电子书转有声书”场景的开源工具,以“合规性、多兼容性、易用性”为核心优势——仅支持非DRM合法电子书,规避版权风险;兼容20+电子书输入格式、10种音频输出格式与1110+语言,覆盖多数使用场景;集成XTTSv2等主流TTS引擎与语音克隆功能,兼顾音质与个性化需求;提供Gradio GUI、Headless命令行、Docker三种使用模式,适配不同技术背景用户,且最低4GB RAM即可运行,无需高配置硬件。工具的应用场景从个人听书、外语学习,到教育辅助、内容创作,甚至企业文档处理,可解决“不方便阅读但需获取文本信息”的核心需求,同时依托活跃的社区支持与持续的版本更新(如即将支持AMD/Intel GPU、Apple MPS),成为开源领域“电子书转有声书”的优选工具。

打赏
THE END
作者头像
AI工具箱
一个喜欢收集AI工具的小萌新