ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

ebook2audiobook 电子书转有声书完整指南:TTS 引擎、语音克隆与 Docker 实战部署

ebook2audiobook 电子书转有声书完整指南:TTS 引擎、语音克隆与 Docker 实战部署 AI 应用语音音频本地部署【免费下载链接】ebook2audiobookGenerate audiobooks from e-books, voice cloning 1158 languages!项目地址https://gitcode.com/GitHub_Trending/eb/ebook2audiobook点击查看免费下载本篇技术指南以 ebook2audiobookE2A官方俄语 READMEreadme/README_rus.md为主线系统讲解这款 CPU/GPU 电子书转有声书工具的全部核心能力支持的 TTS 引擎与 1158 种语言、Gradio 图形界面与 headless 命令行两种工作模式、SML 标签对停顿与语音切换的精细控制、自定义模型与语音克隆以及 Docker / Docker Compose / Podman 的多设备部署方案。阅读本文后你将掌握从安装启动到批量转换、再到私有化容器部署的完整实战链路并能结合源码lib/conf.py、app.py 等理解每个参数背后的实现逻辑。项目定位与核心特性ebook2audiobook简称 E2A是一个将电子书转换为带章节与元数据的有声书转换器借助先进 TTS文本转语音引擎实现从接近实时到接近真人的语音合成质量并支持语音克隆与 1158 种语言。根据官方说明该工具仅限用于合法购买的无 DRM 电子书使用者需遵守所在地法律法规。其核心特性清单如下与 readme/README_rus.md 一致多 TTS 引擎支持XTTSv2、Bark、Fairseq、VITS、Tacotron2、Tortoise、GlowTTS、YourTTS另有PIPER也已在引擎列表中实现见 lib/conf_models.py 的TTS_ENGINES映射。多格式转换.epub、.mobi、.azw3、.fb2、.lrf、.rb、.snb、.tcr、.pdf、.txt、.rtf、.doc、.docx、.html、.odt、.azw、.tiff、.tif、.png、.jpg、.jpeg、.bmp、.zip。文本直转音频提供文本输入框TextArea可直接把一段短文合成音频headless 模式下对应--text参数。OCR 扫描对文本以图片形式存在的页面PDF / JPG / BMP / PNG / TIFF自动进行 OCR 识别。可选语音克隆使用你自己的音频文件克隆音色。低资源友好官方标称最低2 GB RAM / 1 GB VRAM即可运行。多输出格式mono 或 stereo 的aac、flac、mp3、m4b、m4a、mp4、mov、ogg、wav、webm。SML 标签在文本中插入标签即可精确控制停顿、静默、换声等行为详见下文。自定义模型与官方微调预设可加载自己训练的 XTTSv2 / VITS / FAIRSEQ / PIPER 等模型。硬件要求与设备支持矩阵官方给出的硬件要求RAM最低 2 GB推荐 8 GB。VRAM最低 1 GB推荐 4 GB。Windows 下使用 Docker 需开启虚拟化。支持CPU、XPUIntel/AMD/ARM、CUDA、ROCm、JETSON以及MPSApple Silicon。需要特别说明的是现代 TTS 引擎在 CPU 上非常慢官方建议在 CPU 环境下改用 YourTTS、Tacotron2 等轻量引擎见 readme/README_rus.md 硬件要求小节。从源码看设备与 PyTorch 构建的对应关系由 lib/conf.py 中的torch_matrix表定义覆盖cpu、cu118~cu132各 CUDA 版本、rocm5.7~rocm7.2、mps、xpu与jetson51/60/61等标签并据此为不同平台安装匹配的 torch 与 torchaudio 版本。安装器会通过 components/detect_gpu.py 与 lib/classes/device_installer.py 自动探测本机 GPU 并安装对应依赖CLI 中也可用--device {CPU,CUDA,MPS,ROCM,XPU,JETSON}手动指定未指定时回退到 CPU源码见 app.py。语言支持官方 README 明示支持1158 种语言。常用语言对照均使用 ISO-639 代码包括阿拉伯语ar、中文zh、英语en、西班牙语es、法语fr、德语de、意大利语it、葡萄牙语pt、波兰语pl、土耳其语tr、俄语ru、荷兰语nl、捷克语cs、日语ja、印地语hi、孟加拉语bn、匈牙利语hu、韩语ko、越南语vi、瑞典语sv、波斯语fa、约鲁巴语yo、斯瓦希里语sw、印尼语id、斯洛伐克语sk、克罗地亚语hr、泰米尔语ta、丹麦语da等另有 1130 种语言与方言通过 FairseqMMS 系列等引擎支持。每种 TTS 引擎可用的语言集合在 lib/conf_models.py 的default_engine_settings中逐引擎定义例如 XTTS 支持 17 种语言Piper 支持 37 个地区变体Fairseq 覆盖数百种语言。选择引擎时需确保其与目标语言兼容程序也提供了get_compatible_tts_engines()见 lib/core.py按语言筛选可用引擎。支持的电子书格式与输出格式支持的输入格式官方完整列表.epub、.pdf、.mobi、.txt、.html、.rtf、.chm、.lit、.pdb、.fb2、.odt、.cbr、.cbz、.prc、.lrf、.pml、.snb、.cbc、.rb、.tcr最佳效果提示.epub或.mobi具备标准章节结构可自动检测章节并生成带章节标记的有声书其他格式可能缺少章节目录信息。输出格式.m4b、.m4a、.mp4、.webm、.mov、.mp3、.flac、.wav、.ogg、.aac其中处理中间格式process format与默认输出格式可在 lib/conf.py 中修改默认处理格式为flac也可选ogg、wavwav受限于单文件小于 4 GB默认输出格式为m4b、默认声道为mono另有超长文件自动分片default_output_split_hours默认超过 6 小时自动拆分等配置项。另需注意官方提醒EPUB 格式没有统一的章节/段落/前言结构标准建议先手动删除不想被转成语音的文本片段再进行转换。SML 标签精确控制停顿与换声SMLSpeech Markup Language标签允许在文本中直接插入控制指令是 E2A 的特色功能完整定义如下标签作用说明[break]短静默随机时长0.3–0.6 秒[pause]长静默随机时长1.0–1.6 秒[pause:N]固定时长静默例如[pause:3]表示固定停顿3 秒[voice:/path/to/voice/file]...[/voice]换声在标签之间切换为指定语音文件替代 GUI/CLI 中选定的默认声音这些标签在 lib/conf_models.py 中以TTS_SML结构登记break、pause、voice并通过正则SML_TAG_PATTERN同文件 L35-L47解析。在 lib/core.py 中还有normalize_sml_tags()、escape_sml()、restore_sml()等方法用于在分词、翻译等环节临时保护 SML 标签不被破坏处理完成后再还原——这意味着即便开启翻译或文本规范化SML 标签依然能保留其控制语义。实战技巧如果觉得默认停顿不够长直接在文本里插入[pause:3]即可获得 3 秒固定停顿。本地安装与启动Gradio GUI 模式克隆仓库git clone https://github.com/DrewThomasson/ebook2audiobook.git cd ebook2audiobook各平台启动命令Linux / macOS执行./ebook2audiobook.commandmacOS 会自动安装 Homebrew 以补齐缺失程序。macOS 桌面启动器双击Mac Ebook2Audiobook Launcher.command。Windows执行ebook2audiobook.cmd或直接双击该文件Windows 端通过 scoop 安装缺失程序无需管理员权限。启动脚本e2a.sh会依次完成检查并安装uvPython 包管理器→ 创建python_env虚拟环境Python 3.10–3.12→ 通过 lib/classes/device_installer.py 探测设备并安装对应 torch 与 Python 依赖 → 安装宿主程序如 Calibre、ffmpeg、mediainfo、espeak-ng、tesseract 等见 e2a.sh→ 下载内置语音包 → 最后拉起 app.py 启动 Gradio 服务。访问 Web 界面与公开链接打开终端输出的 URLhttp://localhost:7860/默认端口在 lib/conf.py 中定义为interface_port 7860绑定0.0.0.0。需要公网分享链接时Linux/Mac./ebook2audiobook.command --shareWindowsebook2audiobook.cmd --share全平台python app.py --share重要如果脚本被停止后重新运行必须刷新 Gradio 界面让网页重连到新的连接 socket否则界面可能无法与后端会话正常通信。GUI 界面提供电子书上传、语音文件选择、TTS 引擎与语言选择、翻译开关、Audiobookshelf 上传、输出格式/声道选择、XTTS/Bark 参数调节等功能对应 lib/gradio.py 中build_interface()构建的完整界面。在 GUI 模式下取消正在进行的转换只需点击电子书上传组件的 [X] 按钮。Headless 模式基本用法无界面headless模式适合脚本化、批量化转换。基础命令Linux/macOS./ebook2audiobook.command --headless --ebook path_to_ebook_file --voice path_to_voice_file --language language_codeWindowsebook2audiobook.cmd --headless --ebook path_to_ebook_file --voice path_to_voice_file --language language_code三个最核心参数的语义--ebook电子书文件路径。--voice语音克隆音频文件路径可选不传则使用默认语音。--languageISO-639-3 语言代码例如ita意大利语、eng英语、deu德语。默认语言为eng不传时使用 lib/conf_lang.py 中default_language_code eng定义的默认值同时兼容 ISO-639-1 两位代码。headless 模式还支持两种补充输入方式--ebooks_dir转换整个目录下的所有电子书自动过滤不支持的格式见 app.py 的批量处理逻辑与--text直接合成一段原文最大长度由 lib/conf.py 的max_ebook_textarea_length 1024限制。三者互斥一次只能指定其一app.py 会显式校验。上传自定义模型Custom Model ZIP如果你有自己训练好的 TTS 模型可以打包成 ZIP 上传。ZIP 内必须包含该引擎所需的全部模型文件以 XTTSv2 为例需包含config.json、model.pth、vocab.json和ref.wav。Linux/macOS./ebook2audiobook.command --headless --ebook ebook_file_path --language language --custom_model custom_model_pathWindowsebook2audiobook.cmd --headless --ebook ebook_file_path --language language --custom_model custom_model_path注意自定义模型 ZIP 中的ref.wav将始终作为本次转换使用的克隆音色参考音频。各引擎必需的模型文件清单定义在 lib/conf_models.py 的default_engine_settings中XTTS 为[config.json, model.pth, vocab.json, ref.wav]Piper 为[config.onnx.json, model.onnx, ref.wav]VITS 为[config.json, best_model.pth, ref.wav]Fairseq 为[config.json, G_100000.pth, vocab.txt, ref.wav]。ZIP 上传后在 lib/core.py 中通过analyze_uploaded_file()校验必备文件、extract_custom_model()解压登记。支持自定义模型的引擎为 Piper、XTTS、VITS、FAIRSEQtts_engines_with_custom_model见 lib/conf_models.py。完整命令行参数详解在 Linux/Mac 执行./ebook2audiobook.command --help、Windows 执行ebook2audiobook.cmd --help或任意平台执行python app.py --help可查看全部参数说明完整 help 输出已随文档附于 readme/README_rus.md。以下按官方 help 结构整理通用选项参数说明-h, --help显示帮助并退出--session SESSION会话 ID用于中断/崩溃后恢复转换或复用自定义模型与克隆语音--version显示脚本版本并退出GUI 模式专属参数说明--share可选生成公网可分享的 Gradio 链接仅限 GUI 模式使用headless 模式传此参数会报错见 app.pyHeadless 模式专属参数说明--headless以无界面模式运行--ebook EBOOK待转换电子书路径与--ebooks_dir互斥--ebooks_dir EBOOKS_DIR待转换文件所在目录相对或绝对路径与--ebook互斥自动批量处理--text TEXT直接转换的原文文本与--ebook/--ebooks_dir互斥--language LANGUAGE电子书语言默认值见 lib/conf_lang.py可选参数参数说明--translate ISO3转换前先把电子书翻译为目标语言ISO-639-3 代码如 eng/fra/deu基于 argostranslate 实现翻译语言会成为本次运行的实际 TTS 语言源书会以_iso3后缀复制保证翻译与非翻译产物完全隔离翻译逻辑源码见 app.py 与 lib/classes/argos_translator.py--voice VOICE语音克隆文件路径不传则用默认语音--voice_map VOICE_MAP仅--ebooks_dir模式JSON 文件映射电子书路径 → 语音路径逐书覆盖--voice键可为绝对路径或文件名值为 null 时回退到--voice。示例{book1.epub: /voices/eng/adult/female/alice.wav, /abs/path/book2.epub: null}--device {CPU,CUDA,MPS,ROCM,XPU,JETSON}计算设备类型默认值在 lib/conf.py 中定义CUDA/MPS 不可用时自动回退 CPU--tts_engine {XTTS,BARK,VITS,FAIRSEQ,TACOTRON,YOURTTS,...}首选 TTS 引擎默认依所选语言决定引擎必须与语言兼容--custom_model CUSTOM_MODEL自定义模型 ZIP 路径必备文件见 lib/conf_models.py--fine_tuned FINE_TUNED微调模型路径默认使用内置模型internal--output_format OUTPUT_FORMAT输出音频格式默认m4blib/conf.py--output_channel OUTPUT_CHANNEL输出声道默认mono--output_dir OUTPUT_DIR输出目录路径默认见 lib/conf.py--abs_url / --abs_api_token / --abs_libraryAudiobookshelf 服务器 URL如 http://localhost:13378、API Token 与库 ID用于转换后自动上传到自托管有声书架实现见 lib/classes/audiobookshelf.pyXTTS 专属采样参数默认取模型 config.json 值参数说明--temperature温度越高输出越有创意--length_penalty作用于自回归解码器的长度惩罚自定义模型不生效--num_beams模型探索的候选序列数需大于等于 length_penalty--repetition_penalty防止解码器重复自身的惩罚--top_kTop-k 采样值越低输出越保守、生成越快--top_pTop-p 采样同上--speed语速系数--enable_text_splitting启用 TTS 文本切分官方注明该选项效率不佳这些默认值可在 lib/conf_models.py 的 XTTS 配置中看到temperature0.75、length_penalty1.0、num_beams1、repetition_penalty2.0、top_k40、top_p0.95、speed1.0。Bark 专属参数参数说明--text_tempBark 文本温度默认 0.22--waveform_tempBark 波形温度默认 0.44Docker 部署方案Docker 方式完全自包含可规避宿主依赖问题且同样支持 headless 模式。构建容器# Windows ebook2audiobook.cmd --script_mode build_docker # 标准 Docker ebook2audiobook.cmd --script_mode build_docker --docker_mode compose # Docker Compose ebook2audiobook.cmd --script_mode build_docker --docker_mode podman # Podman Compose # Linux/Mac ./ebook2audiobook.command --script_mode build_docker ./ebook2audiobook.command --script_mode build_docker --docker_mode compose ./ebook2audiobook.command --script_mode build_docker --docker_mode podman构建逻辑见 e2a.sh 的build_docker_image()根据探测到的设备信息选择DEVICE_TAG如cu130、rocm、xpu、jetson51并传入 Dockerfile 构建镜像。镜像基于python:3.12-slim-trixie单阶段构建内置 Calibre、tesseract-ocr、ffmpeg、espeak-ng 等全部运行依赖。运行容器GUI 模式容器内统一映射ebooks、audiobooks、models、voices、tmp五个数据卷端口 7860CPUdocker run -v ./ebooks:/app/ebooks -v ./audiobooks:/app/audiobooks -v ./models:/app/models -v ./voices:/app/voices -v ./tmp:/app/tmp --rm -it -p 7860:7860 athomasson2/ebook2audiobook:cpuCUDA追加--gpus all镜像标签形如cu118/cu122/cu124/cu126...ROCm追加--device/dev/kfd --device/dev/dri标签形如rocm6.0/6.1/6.4...XPU追加--device/dev/dri标签xpuJETSON追加--runtime nvidia标签形如jetson51/60/61...运行容器Headless 模式在 GUI 命令基础上多挂载一个真实电子书目录并在镜像名后追加转换参数docker run -v ./ebooks:/app/ebooks -v ./audiobooks:/app/audiobooks -v ./models:/app/models -v ./voices:/app/voices -v ./tmp:/app/tmp \ -v /my/real/ebooks/folder/absolute/path:/app/another_ebook_folder --gpus all --rm -it -p 7860:7860 \ ebook2audiobook:cu126 --headless --ebook /app/another_ebook_folder/myfile.pdf [--voice /app/my/voicepath/voice.mp3]即容器内路径/app/another_ebook_folder/myfile.pdf指向宿主机的真实电子书。遇到依赖问题时只需在 docker run 命令末尾追加--help查看容器内可用的全部参数。Docker Compose / Podman Compose使用 docker-compose.yml或 podman-compose.yml时按--profile选择加速器# 例如 CUDA 12.8GUI 模式 DEVICE_TAGcu128 docker compose --profile gpu up --no-log-prefix # Headless 模式 DEVICE_TAGcu128 docker compose --profile gpu run --rm ebook2audiobook --headless --ebook /app/ebooks/myfile.pdf --voice /app/voices/eng/adult/female/some_voice.wavPodman 对应命令为podman-compose -f podman-compose.yml --profile gpu up与podman-compose -f podman-compose.yml --profile gpu run --rm ebook2audiobook-gpu --headless ...。注意Docker 环境不暴露 MPSApple Silicon 用户需使用 CPU 模式。语音克隆Cloned Voices可上传任意受支持音频格式的语音文件理想时长约 1–5 分钟。即使录音带噪底或有背景音乐E2A 也会自动清洗音轨——对应 lib/classes/voice_extractor.py 的完整处理管线格式校验与转 WAV_convert2wav→ 背景噪音检测_detect_background依赖 lib/classes/background_detector.py→ Demucs 人声分离_demucs_voice→ 静音裁剪与归一化_trim_and_clean、normalize_audio。内置克隆语音列表以英语为主如需其他语言的官方收录可联系项目维护者审核后加入列表。微调Fine-tunedTTS 模型自训 XTTSv2项目提供 XTTSv2 微调 Web UI 及 Google Colab / Kaggle 笔记本仓库内对应 Notebooks/finetune/xtts/colab_xtts_finetune_webui.ipynb 与 Notebooks/finetune/xtts/kaggle-xtts-finetune-webui-gradio-gui.ipynb并推荐先用 DeepFilterNet 对训练语料做降噪。官方微调模型集合项目团队训练了一批预置微调模型可在界面中直接选用。XTTSv2 自定义模型的硬性要求必须附带语音参考音频片段ref.wav。若希望自己的模型成为官方预置微调模型可联系项目团队审核后加入预置列表。自定义配置文件lib/conf.py官方鼓励用户自行修改 lib/conf.py 增删配置项。强烈建议先备份原始 conf.py这样每次升级 ebook2audiobook 后都能用备份覆盖回官方默认值、再应用你自己的修改models.py当前实现为 lib/conf_models.py也应遵循同样的备份流程。值得修改的常见配置包括默认输出格式/声道default_output_format、default_output_channel、处理中间格式default_audio_proc_format、上传大小上限max_upload_size 6GB、界面端口与并发限制interface_port、interface_concurrency_limit、临时文件过期天数tmp_expire等。常见问题与排错官方 FAQ 要点详见 readme/README_rus.mdNVIDIA/ROCm/XPU/MPS GPU 未被识别参考项目 Wiki 的 GPU 排障页源码层面可用 components/detect_gpu.py 与 lib/classes/device_installer.py 诊断设备探测结果。CPU 转换慢属正常现象服务器级 SMP CPU 会好些GPU 可接近实时转换。CPU 上建议换用 YourTTS、Tacotron2 等轻量引擎无 zero-shot 克隆、音色接近 Siri 质量但速度快得多。依赖安装问题直接改用 Docker——完全自包含支持 headless 模式。音频被截断属于分句逻辑问题官方欢迎用户提交 Issue 反馈具体语言以便持续改进句子切分算法。版本回退需要回退到旧版本时可查看 Release 列表并按标签检出git checkout tags/VERSION_NUM # 示例git checkout tags/v25.7.7小结ebook2audiobook 的完整工作流可概括为读取电子书 →可选 OCR / 翻译 / SML 处理→ 分章分句 → 引擎合成音频 → 拼接带章节元数据的最终有声书。这一链路在源码中对应 lib/core.py 的convert_ebook()、convert_chapters2audio()、combine_audio_chapters()、assemble_audio_chunks()等关键方法配合 lib/classes/tts_manager.py 与各引擎实现lib/classes/tts_engines/xtts.py、lib/classes/tts_engines/bark.py 等统一调度。无论是个人在笔记本上快速把一本书变成 MP3/M4B还是借助 Docker 在 NAS 上搭建持续转换服务本文覆盖的命令与参数都足以支撑你独立完成从安装到产出的全部环节。赞分享AI 应用语音音频本地部署【免费下载链接】ebook2audiobookGenerate audiobooks from e-books, voice cloning 1158 languages!项目地址https://gitcode.com/GitHub_Trending/eb/ebook2audiobook点击查看免费下载相关推荐Kubernetes Goat 场景 15 实战容器镜像层取证——从镜像中找回被删除的敏感文件Kubernetes Goat 场景 15 实战容器镜像层取证——从镜像中找回被删除的敏感文件 本文基于 Kubernetes Goat 的 ScenarioAI 应用语音音频本地部署Linux 内核密钥协商协议原语KPPAPI 完全指南DH 与 ECDH 的算法定义、请求处理与编解码Linux 内核密钥协商协议原语KPPAPI 完全指南DH 与 ECDH 的算法定义、请求处理与编解码 导读 本文是 Linux 内核 Crypto APAI 应用语音音频本地部署ebook2audiobook 从电子书到有声书多引擎 TTS、声音克隆与 1158 种语言的一体化转换指南ebook2audiobook 从电子书到有声书多引擎 TTS、声音克隆与 1158 种语言的一体化转换指南 本项目 ebook2audiobook简称 EAI 应用语音音频本地部署上一篇TEN Framework 会话式语音 AI Agent 框架示例快速上手、环境配置与自托管部署指南下一篇Seastar 容器化构建指南基于 Docker 镜像完成 configure 与 ninja 编译全流程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表