Foliate:功能全面、开源且支持 edge-tts 的Linux电子书阅读器
-
Foliate:功能全面、开源且支持 edge-tts 的Linux电子书阅读器
目录- 一、🔧 Foliate 的功能介绍
- 📖 格式支持
- 👀 阅读模式
- 🎨 自定义阅读体验
- 📚 图书馆管理
- ✏️ 批注系统
- 🔍 查找与参考工具
- 🔊 文字转语音支持(TTS)
- 🌟 GTK 4 带来的性能提升(3.0 版本亮点)
- 🤝 社区与开发
- 二、💻 如何安装 Foliate
- 方式一:APT 包管理器(Debian/Ubuntu 系统)
- 方式二:Flatpak(推荐)
- 方式三:Snap
- 方式四:PPA(Ubuntu 专用,获取较新版本)
- 方式五:其他发行版
- 三、🎙️ 什么是 edge-tts
- 📊 edge-tts 技术概览
- 🎤 常用语音推荐
- 四、🔌 如何适配 edge-tts
- 步骤 1:安装 edge-tts
- 步骤 2:安装音频播放器
- 步骤 3:创建 TTS 脚本
- 步骤 4:在 Foliate 中配置 TTS
- 步骤 5:测试与排错
- 五、🎯 高级配置与替代方案
- 📝 多语言自动切换脚本(进阶)
- 🔧 其他 TTS 方案对比
- 六、📌 总结与最佳实践
Foliate 是一款开源的电子书阅读器,支持 Linux 桌面环境。它提供了一个现代化且易于使用的界面,支持多种电子书格式。Foliate 是一个功能全面、用户友好的电子书阅读器,适合所有类型的读者,无论是休闲阅读还是学术研究。
作为专为 GNOME 桌面环境优化的阅读应用,Foliate 致力于提供"无干扰"的沉浸式阅读体验。它采用了现代化的 GTK 4 技术栈(自 3.0 版本起),拥有自研的电子书解析器和渲染引擎,这意味着更快的加载速度、更流畅的翻页体验,以及对复杂排版格式的更好支持。
📌 项目信息:
- 官方网站:https://johnfactotum.github.io/foliate/
- GitHub 仓库:https://github.com/johnfactotum/foliate
- 开源协议:GNU General Public License (GPL)
一、🔧 Foliate 的功能介绍
具体而言,Foliate 的独特功能包括:
📖 格式支持
– 支持多种格式:Foliate 支持 EPUB、Mobipocket(MOBI)、Kindle(AZW/AZW3)、FictionBook(FB2)、漫画档案(CBZ)以及 PDF 等多种格式。
💡 说明:EPUB 是目前开放标准中最主流的电子书格式,而 CBZ 支持使得 Foliate 也可以作为漫画阅读器使用。PDF 支持是 3.0 版本后新增的重要功能。
👀 阅读模式
– 双页浏览模式:用户可以在双页浏览模式下阅读电子书,并提供滚动查看模式。
Foliate 会根据屏幕尺寸智能切换单页或双页视图。具体包含:
- 分页模式(Paginated):模拟传统纸质书的翻页体验
- 滚动模式(Scrolled):连续滚动浏览,适合长时间阅读
- 用户可以根据个人习惯随时在两种模式间切换
🎨 自定义阅读体验
– 自定义阅读体验:能够自定义字体、行距、边距和亮度。默认主题包括浅色、棕褐色、深色等多种模式。
高级排版功能包括:
- 自动断字(Auto-hyphenation):提升英文等西文排版的美观度
- 弹出式脚注(Popup Footnotes):无需跳转即可查看注释
- 媒体叠加层(Media Overlays):支持带有嵌入音频的电子书
- 从右到左(RTL)文本支持:适配阿拉伯语、希伯来语等语言
- 竖排文本支持:适配日文、中文等东亚语言的传统排版
- 固定布局书籍支持:保持原版设计排版的电子书
📚 图书馆管理
– 图书馆视图:显示最近的书籍和阅读进度。
3.0 版本中,图书馆功能得到了显著增强:
- 阅读进度可视化:直观显示每本书的阅读进度百分比
- 最近阅读排序:快速找到上次阅读的书籍
- OPDS 目录支持:可以浏览和下载来自在线 OPDS 书库的电子书(如 Project Gutenberg、Standard Ebooks 等)
✏️ 批注系统
– 书签和注释:用户可以添加书签、高亮文本和添加注释,并能够导出数据或同步它们。
批注数据存储的一大亮点:Foliate 将阅读进度、书签和批注保存为纯 JSON 文件格式。这意味着:
- 数据完全开放透明,你可以用任何文本编辑器查看和编辑
- 易于备份和同步,可以配合 Syncthing、Nextcloud 等工具实现跨设备同步
- 不依赖私有格式,避免供应商锁定
🔍 查找与参考工具
– 查找功能:能够在书中查找文本。
– 字典和翻译:使用维基词典和维基百科查询单词,以及使用谷歌翻译翻译文字。
这些内置的参考工具大大提升了学术阅读和外语学习的效率。选中文本后,可以一键调用这些服务进行查询,无需离开阅读界面。
🔊 文字转语音支持(TTS)
– 文字转语音支持(TTS):使用 eSpeak NG 和 Festival 等支持文字转语音。
更准确地说,Foliate 的 TTS 功能是通过 Speech Dispatcher 实现的。Speech Dispatcher 是 Linux 下的语音合成调度系统,它可以对接多种 TTS 后端:
- eSpeak NG:开源、轻量,支持多语言,但音质相对机械
- Festival:经典的语音合成系统
- Piper TTS:新一代开源神经网络 TTS,音质接近商业服务
- 自定义脚本:这正是本课程后续要介绍的 edge-tts 集成方案
📌 TTS 入口位置:将鼠标悬停在页面底部区域可调出导航栏,点击耳机图标即可启用朗读功能。也可以选中文本后从右键菜单选择「从此处开始朗读」。
🌟 GTK 4 带来的性能提升(3.0 版本亮点)
2023 年 11 月发布的 Foliate 3.0 是一次完全的重写,从 GTK 3 迁移到了 GTK 4。这次重大升级带来了:
- 更快的性能:翻页更流畅、大型书籍加载更快、界面响应更灵敏
- 重新设计的标题栏:更紧凑、更智能的布局,搜索、目录、设置等常用功能触手可及
- 自研渲染引擎:不再依赖 WebKitGTK 的某些限制,对电子书格式的支持更加原生
- 改进的沙箱兼容性:更好地支持 Flatpak 和 Snap 等容器化分发方式
🤝 社区与开发
作为一个开源项目,Foliate 鼓励社区参与,用户可以贡献代码、报告问题或提出新功能建议。Foliate 的开发活跃,定期发布更新和改进,确保用户获得最佳的阅读体验。
你可以通过以下方式参与:
- 提交 Issue:在 GitHub 上报告 Bug 或提出功能建议
- 贡献翻译:帮助将 Foliate 翻译成更多语言
- 代码贡献:Fork 仓库并提交 Pull Request
二、💻 如何安装 Foliate
Foliate 提供多种安装方式,以适应不同用户的需求和偏好:
方式一:APT 包管理器(Debian/Ubuntu 系统)
以 Debian/Ubuntu 系统为例,只需要输入如下命令行即可:
sudo apt install foliate⚠️ 注意:通过系统软件源安装的版本可能不是最新版。例如,Ubuntu 22.04 LTS 的软件源中可能仍是 2.x 版本。如果你需要 3.0+ 版本的新功能,建议使用下述的 Flatpak 或 Snap 方式安装。
方式二:Flatpak(推荐)
Flatpak 是 Foliate 官方推荐的安装方式,能确保获得最新版本:
# 首先确保系统已安装 Flatpak sudo apt install flatpak # 添加 Flathub 仓库(如果尚未添加) flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo # 安装 Foliate flatpak install flathub com.github.johnfactotum.Foliate -y📌 沙箱权限提示:Flatpak 应用运行在沙箱环境中,可能无法直接访问本地电子书文件。你可能需要使用 Flatseal 工具来授予文件访问权限。
方式三:Snap
sudo snap install foliateSnap 版本同样运行在沙箱中,安装简单,适合 Ubuntu 用户。
方式四:PPA(Ubuntu 专用,获取较新版本)
sudo add-apt-repository ppa:apandada1/foliate sudo apt update sudo apt install foliate通过 PPA 可以在 Ubuntu 系统上获得比官方软件源更新的版本。
方式五:其他发行版
Foliate 已被纳入多个主流发行版的官方软件源:
发行版 安装命令 Fedora sudo dnf install foliateArch Linux sudo pacman -S foliateopenSUSE sudo zypper install foliate三、🎙️ 什么是 edge-tts
微软 Edge 浏览器的 edge-tts 是个非常棒的学英语工具,可以在日常阅读英文网页时使用。配合沉浸式翻译,非常有助于高效获取各类日常信息。当然,美中不足的是,edge-tts 还不支持 Xiaoxiao-Multilingual 这类大模型训练的超自然声音。后者已经逼近完美主播了。同时,Edge 浏览器的默认设置非常不隐私友好。
💡 Edge 浏览器内置的免费 TTS 和开源 edge-tts 模块暂不支持完整的 SSML 自定义功能(自 5.0.0 版本起,由于微软的限制,自定义 SSML 支持已被移除)。
与此同时,目前也有基于 edge-tts 的开源 Python 模块,允许用户在不安装微软 Edge 浏览器或使用微软 API 的情况下,通过 Python 代码或提供的命令行工具,使用微软 Edge 浏览器的在线文本转语音服务。这极大地提升了使用的便捷性和隐私性,也便于同其他工具相整合。
📊 edge-tts 技术概览
根据 PyPI 上的信息,截至 2025 年 12 月,edge-tts 的最新版本为 7.2.7。主要特性包括:
特性 说明 语言支持 74 种语言,322 种高质量神经网络语音 输出格式 MP3、WAV 等常见音频格式 字幕生成 支持同步生成 SRT、VTT 字幕文件 语音调节 可调整语速(--rate)、音量(--volume)、音调(--pitch) 异步架构 底层采用异步设计,适合批量处理和 Web 服务集成 Python 版本 要求 Python 3.7 或更高版本 🌐 相关资源:
- PyPI 页面:https://pypi.org/project/edge-tts/
- GitHub 仓库:https://github.com/rany2/edge-tts
🎤 常用语音推荐
以下是一些广受好评的 edge-tts 语音选项:
中文语音
语音名称 地区 特点 zh-CN-XiaoxiaoNeural中国大陆 女声,温暖亲切,适合新闻和有声书 zh-CN-YunxiNeural中国大陆 男声,成熟稳重 zh-CN-YunyangNeural中国大陆 男声,新闻播音风格 zh-TW-HsiaoChenNeural台湾 女声,适合台湾普通话内容 zh-TW-HsiaoYuNeural台湾 女声 zh-HK-HiuGaaiNeural香港 女声,粤语 英文语音
语音名称 地区 特点 en-US-AriaNeural美国 女声,清晰自然 en-US-GuyNeural美国 男声 en-US-JennyNeural美国 女声,活泼年轻 en-GB-SoniaNeural英国 女声,英式口音 en-AU-NatashaNeural澳大利亚 女声,澳式口音 四、🔌 如何适配 edge-tts
方法学习借鉴自 @Michael Anti,并根据安装过程中遇到的问题简单补充:
步骤 1:安装 edge-tts
将 edge-tts 安装到本地:
pip install edge-tts如果你的系统中没有 pip,则需要根据提示先安装 pip,命令是:
sudo apt install python3-pip⚠️ 现代 Linux 发行版(如 Ubuntu 23.04+)可能会阻止通过 pip 直接安装到系统 Python 环境。如果遇到「externally-managed-environment」错误,可以使用虚拟环境:
# 创建虚拟环境 python3 -m venv ~/edge-tts-venv # 激活虚拟环境 source ~/edge-tts-venv/bin/activate # 在虚拟环境中安装 edge-tts pip install edge-tts使用虚拟环境时,后续脚本中的 edge-tts 命令路径需要调整为
~/edge-tts-venv/bin/edge-tts。步骤 2:安装音频播放器
在创建脚本之前,确保系统已安装 VLC 播放器(用于播放 edge-tts 生成的音频流):
sudo apt install vlc步骤 3:创建 TTS 脚本
用编辑器新建一个脚本
etts_do.sh:nano ~/etts_do.sh脚本内容如下(请根据你的语音偏好修改
--voice参数):#!/bin/bash # 使用 edge-tts 进行语音合成,通过 VLC 播放 # --voice: 指定语音(可通过 edge-tts --list-voices 查看所有可用语音) # --file /dev/stdin: 从标准输入读取文本 # cvlc: VLC 的命令行版本,--gain 10 控制音量,--play-and-exit 播放完毕后退出 edge-tts --voice zh-TW-HsiaoYuNeural --file /dev/stdin | cvlc --gain 10 --play-and-exit - & # 捕获中断信号(Ctrl+C),优雅地终止后台进程 trap 'kill $!; exit 0' INT # 等待后台进程结束 wait📌 脚本说明:
--voice zh-TW-HsiaoYuNeural:使用台湾女声,发音清晰。你可以根据阅读内容的语言更换为其他语音--file /dev/stdin:从标准输入读取文本,这是 Foliate 传递待朗读文本的方式cvlc:VLC 的无界面命令行版本,不会弹出播放器窗口--gain 10:音量增益,可根据需要调整(数值越大越响)trap命令:确保按 Ctrl+C 或 Foliate 停止朗读时能正确终止进程
设置为可执行:
chmod +x ~/etts_do.sh🔍 如需查看所有可用语音,可使用命令:
edge-tts --list-voices此命令会列出所有 322 种可用语音及其语言、地区和性别信息。你可以使用
grep过滤特定语言:# 查看所有中文语音 edge-tts --list-voices | grep zh- # 查看所有英文语音 edge-tts --list-voices | grep en-步骤 4:在 Foliate 中配置 TTS
打开 Foliate,进入 TTS 设置:
- 打开任意一本电子书
- 将鼠标悬停在页面底部,调出导航栏
- 点击耳机图标(🎧)打开朗读控制
- 点击设置(齿轮图标),选择「其他(Other)」
- 在输入框中填入脚本的完整路径,例如:
/home/你的用户名/etts_do.sh
⚠️ 注意:必须使用绝对路径,不能使用
~简写。步骤 5:测试与排错
配置完成后,在 Foliate 中尝试朗读。如果没有声音,请按以下步骤排查:
检查脚本可执行权限:
ls -la ~/etts_do.sh # 应该看到 -rwxr-xr-x 或类似的权限手动测试脚本:
echo "这是一个测试" | ~/etts_do.sh如果能听到声音,说明脚本本身没问题
检查 edge-tts 是否正常工作:
edge-tts --voice zh-CN-XiaoxiaoNeural --text "测试语音合成" --write-media test.mp3 mpv test.mp3 # 或用 vlc test.mp3 播放检查 VLC 是否已安装:
which cvlc # 应该输出 /usr/bin/cvlc 或类似路径- 如果使用虚拟环境,确保脚本中使用的是虚拟环境中的 edge-tts 完整路径
五、🎯 高级配置与替代方案
📝 多语言自动切换脚本(进阶)
如果你经常阅读多种语言的书籍,可以创建一个更智能的脚本来自动检测语言并选择对应的语音:
#!/bin/bash # 读取输入文本 TEXT=$(cat /dev/stdin) # 简单的语言检测:检查是否包含中文字符 if echo "$TEXT" | grep -qP '[\p{Han}]'; then VOICE="zh-CN-XiaoxiaoNeural" else VOICE="en-US-AriaNeural" fi echo "$TEXT" | edge-tts --voice $VOICE --file /dev/stdin | cvlc --gain 10 --play-and-exit - & trap 'kill $!; exit 0' INT wait🔧 其他 TTS 方案对比
如果你对 TTS 有更高的要求,以下是一些替代方案的对比:
方案 优点 缺点 适用场景 edge-tts 免费、音质好、中英文优秀 需要联网、依赖微软服务 日常阅读、英语学习 Piper TTS 完全本地、开源、神经网络音质 需要下载模型(每个约 50-100MB) 离线使用、隐私优先 eSpeak NG 轻量、支持语言最多 音质机械 辅助功能、嵌入式设备 NaturalReader 商业级音质 付费服务 专业有声书制作 💡 Piper TTS 推荐:如果你希望完全离线且保护隐私,Piper 是目前最佳的开源神经网络 TTS 选择。它可以通过 Speech Dispatcher 与 Foliate 集成,音质接近商业服务,且完全在本地运行。详细配置可参考 Arch Wiki - Speech Dispatcher。
六、📌 总结与最佳实践
通过以上部署,我们就得到了一个基于开源隐私环境的 TTS 阅读器,这是目前的最佳实践了。如果不在意隐私,也不想麻烦,关于 TTS 阅读功能,也可以尝试 NaturalReader 等付费 TTS 阅读工具。
🏆 本课程方案的优势总结:
优势 说明 开源生态 Foliate + edge-tts 均为开源软件,代码透明可审计 隐私保护 不依赖专有浏览器,不收集阅读行为数据 高质量语音 使用微软神经网络语音,音质接近真人朗读 成本为零 全部软件免费使用,无需订阅付费 可定制性 可根据需求更换语音、调整参数、编写自动化脚本 跨语言支持 322 种语音覆盖 74 种语言,满足多语言阅读需求 📚 延伸学习建议:
- 探索 Piper TTS 实现完全离线的神经网络语音合成
- 学习 Speech Dispatcher 的高级配置
- 尝试将 edge-tts 与其他工具整合,如 Obsidian、Anki 等
📖 参考资料:
歡迎留言回复交流。
Log in to reply.