ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

开源阅读+精校书源+TTS离线语音包,打造无广告听书方案

开源阅读+精校书源+TTS离线语音包,打造无广告听书方案 先交代一下我的使用场景地铁通勤、睡前、做家务这三个时间段我基本都在“听书”。早年手机里装了五六个听书App免费版听几章就弹广告半夜能被一句“屠龙宝刀点击就送”吓清醒付费版会员倒是不贵但想听的书版权不在它家库里永远搜不到好不容易找到一本OCR错字多得像在看加密文本。折腾了两年我最终换了一条完全不同的路线——开源阅读 精校书源 TTS阅读 离线语音包四样东西拼在一起组成了我用了快三年的“无广告听书机”。这套方案不依赖任何商业App的会员体系书源负责把内容找出来TTS引擎负责把文字读出来全程没有一个广告位。这篇文章我不讲虚的把这套组合的原理、选型逻辑、完整配置步骤和这两年踩过的坑全部摊开写清楚。1. 这四条腿怎么撑起一个“无广告听书”方案1.1 拆开来看四个组件各解决什么问题先建立一个整体认知。这套方案最重要的不是某个单点工具而是“找内容”和“读内容”彻底分离。开源阅读App项目代号Legado大家习惯叫“阅读”一个开源的Android阅读器。它本身不生产内容也不绑定任何平台核心能力是“根据一套规则去抓取网页内容清洗成干净的阅读视图”同时内置了书架管理、换源、朗读等功能。精校书源书源是一段JSON格式的规则脚本告诉阅读App去哪个网址、用哪些CSS选择器或正则表达式把书名、作者、章节列表、正文提取出来。所谓“精校”是指这些规则经过维护者大量实测对广告、乱码、章节顺序错乱等问题做过专门修正抓回来的正文干净断章正确。TTS阅读软件指文本转语音引擎。既包括系统级的TTS服务也包括阅读App内置的朗读模块。它的任务简单直接——把纯文字变成语音。离线语音包语音引擎的“声音模型数据”。下载到本地之后朗读过程完全不依赖网络没有合成延迟不怕信号差也天然没有在线广告和统计脚本。四个组件串起来的流程是在阅读App里用书源搜索并打开一本书App按照精校书源把正文抓下来、清理排版然后调起TTS引擎逐段朗读引擎使用本地离线语音包发声。整条链路里没有任何商业广告的插入点这就是“无广告”的真正原因。1.2 为什么这套组合能避开广告和会员墙商业听书App的广告来自它的商业模式。内容源是签约版权库运营成本高所以要么插广告要么卖会员要么两者都来。这套开源方案绕开了“内容供应商”这个角色——书源抓取的来源由你自己决定TTS只是本地合成声音没有任何平台需要在中间插广告。说得直白点商业App的广告是商业模式的一部分你没法靠设置去关掉开源方案里压根没有商业模式的容身之处。会员墙也是一样。现在不少在线听书把AI语音和真人配音分开卖真人配音是VIP专属AI语音听着生硬还得开会员才给用。自建TTS方案里声音由你的语音包决定不存在“免费试听三集后面想听真声请充值”这种玩法。你花的时间是一次性配置换来的是长期免费的稳定体验。1.3 这个方案适合谁、不适合谁先说清楚适合的人主要看网络文学、公开文档、自己订阅或下载的电子书内容对排版有要求通勤、睡前、运动时大量听书不愿意为多个App的会员重复付费喜欢折腾愿意花半小时配置并且能接受偶尔维护的人。不适合的人只想“点开就用、什么都不管”的人——书源会失效语音包要下载维护工作绕不开“真人配音、广播剧、多角色音效”是刚需的人——TTS再好情感表现和真人差距依然明显需要大量畅销书版权内容的人——热门出版物必须回正规渠道开源方案替代不了版权授权。这套方案的本质是自己动手组装工具链省的是广告费和会员费付的是一次性配置成本和日常维护时间。想清楚这一点再往下看配置流程就不会有心理落差。2. 起点开源阅读App与精校书源的搭配2.1 开源阅读App到底是个什么存在“开源阅读”通常指GitHub上的Legado项目很多人习惯叫它“阅读3.0”。它能火起来核心是三个设计理念第一内容与阅读器分离。App本身不预置任何书源用户通过导入书源文件来定义“去哪里找书”。这个架构既给了用户完全的自由也把内容获取交给用户自己负责。第二规则引擎强大。书源不仅支持网页抓取规则还支持JavaScript脚本可以处理登录态、翻页、动态加载、内容解密这类复杂场景。第三朗读功能完整。内置朗读模块可以调用系统TTS也可以调用第三方TTS引擎语速调节、定时停止、多音字自定义都有。安装这块最稳妥的是去官方Release页面下载APK。近几年的手机基本都是arm64架构选arm64-v8a版本就好。安装时注意Android可能会拦“从浏览器安装”或“从文件管理器安装”放行即可。需要注意一点官方安装包不内置任何书源首次启动后需要自己导入这是刻意设计别以为自己装了假App。2.2 精校书源怎么选、怎么导入书源的本质是一段JSON。单个书源是一个JSON对象多个书源组成一个JSON数组。它不长在App里而是流通于各个技术分享社区和维护者的发布频道。所谓“精校书源”是指维护者针对正文清洗做了大量正则优化输出结果里不会有站点导航、推荐位广告、无关图片这些垃圾内容同时章节解析的稳定性经过了实测验证。导入有两种常见方式网络导入把书源分享链接复制到剪贴板打开阅读App的书源管理页面App会自动识别剪贴板里的URL点击确认导入即可。适合一次导入整个合集。本地导入把书源JSON文件保存到手机里在书源管理页面选择“本地导入”再从文件管理器选中文件。第一次使用我建议直接找更新日期在最近三个月内的“精校书源合集”。太老的书源里大量网址已经失效导入几百个全是红色不可用看着心烦也会淹没真正有价值的源。导入之后务必做一次“书源检测”在书源管理界面全选点击“检测”App会逐条请求测试网址并给出状态。检测完成后按可用率排序把可用率低于30%的源清理掉。2.3 书源维护失效、更新、备份这是长期使用最容易被忽略的部分。书源失效的主要原因有三个目标网站改版导致DOM结构变了网站挂了或者加了反爬书源规则本身没错但网站开始限制特定客户端标识或访问来源。我自己养成的维护习惯是每个月花十分钟批量检测一次遇到失效源优先去维护者发布页看有没有新版本而不是自己硬修正则每次更新完都把书源导出成本地JSON文件放网盘备份。别小看备份这事我换过两次手机全靠这份备份在几分钟内恢复了整个书架。再给一个反向建议不要一次导入上千个书源。精校的意义在于“少而准”我长期启用的一直是二三十个。源越多搜索时发出的请求越多速度越慢误报也越多。可以按用途分组网络文学用几条主力源出版电子书用另一批源各司其职。提醒一句书源本身只是解析规则抓取内容的版权归属取决于具体来源。我个人的原则是优先使用自己有订阅或授权的内容源或者用App阅读本地导入的合法电子书。工具本身是中性的但每个使用者要为自己的行为负责。3. TTS引擎怎么选在线、离线、神经网络这一节是“听书体验”的核心。书源决定你能找到什么TTS决定你愿意听多久。同样是朗读系统默认的机械音和神经网络语音之间的差距比大多数人想象中大得多。3.1 系统自带TTS与第三方引擎的差距Android的“文本转语音输出”只是一个抽象接口真正发声的是底下那个引擎。国产手机自带的TTS比如小米的小米语音、华为的HiVoice、讯飞语音引擎这些年进步明显但有两个问题一是部分机型把优质音色放在云端本地只有普通音色二是引擎和系统深度绑定升级维护节奏不可控。第三方引擎里我实际用过并且觉得值得说的有几个。T2S适合喜欢折腾多音字词典的人它把语音引擎切换和自定义词典做得很顺手Voice Aloud Reader老牌稳定格式支持多但中文音色一般最省事的其实是阅读App内置的朗读模块它不依赖单独的引擎App直接在阅读页调起系统TTS切换都在这一个界面里完成。但TTS好不好听最关键的因素不是引擎App而是“声音模型”。现在主流的好音色基本都是神经网络TTSNeural TTS合成的原理和早期的拼接式合成完全不同——拼接式是从录音库里挑片段拼起来听着总有顿挫神经网络TTS是让模型学习大量录音的声学特征再预测生成每一段语音的频谱停顿、重音、语气连贯性都自然得多。3.2 在线方案与离线语音包的取舍TTS语音包分在线和离线两大类。在线方案的好处是音色多、效果好。微软Azure的神经语音、国内云厂商的语音合成效果已经很接近真人但基本是付费API不适合个人拿来长期听书。开源社区里的Coqui TTS可以在本地训练和部署可模型很重手机端跑不动阿里的千问TTS、CosyVoice这类开源模型效果惊艳但同样更适合在电脑上批量生成音频而不是手机实时朗读。还有一类edge-tts这样的命令行工具可以调用线上神经语音直接生成音频文件适合把整本书转成音频再说。在线方案的共同痛点是依赖网络、有合成延迟而且边翻书边听遇到不更新章节会卡住体验不连贯。离线方案正好相反音色范围取决于你下载的语音包但换来的是零延迟、零网络依赖、零隐私顾虑。朗读过程中文本不出手机声音数据在本地地铁里、地下停车场、飞行模式下都能稳定工作。我的主力方案就是离线装一个带离线语音包的TTS应用然后在阅读App里把朗读引擎指向它。离线语音包的获取方向有这么几个系统设置里找“下载离线语音数据”很多手机自带TTS引擎支持在WiFi环境下下载第三方TTS应用一般内置语音包管理入口允许下载的中文音色有几个到十几个不等每个几十MB到一两百MB开源社区方案里RHVoice这类轻量TTS有热心人制作的中文语音包音质偏机械但体积小、速度快适合低端机应急。选音色时优先找带“神经网络”或“Neural”字样的中文音色下载完关掉网络试读一段能正常出声就算过关。3.3 语音参数调教语速、音调、多音字TTS装好只是第一步真正决定听感的是参数。我调了三处。第一处是语速。阅读App朗读设置里语速默认大约是每分钟200字很多新手第一次听觉得快一上来就往130调结果又觉得拖沓。我的经验是先在默认值听一集真的跟不上了再以10为步长慢慢往下调。长篇听书语速可以稍微快一点慢速长时间听特别容易走神。第二处是音量与音调。音调建议不要动保持默认有些引擎带“低音增强”或者润色选项睡前听可以适当打开声音会厚实一些。第三处是多音字词典。这是中文TTS最实用的功能人名、地名、网文里的特殊读音经常被读错。阅读App支持自定义朗读替换或多音字词典我把自己踩过的字全部加进去强制指定读音。这个功能不起眼但它是让AI音色“像人”的关键一步。4. 完整实操从零配置你的“无广告听书机”下面按我实际操作顺序完整走一遍每一步都可复现顺利的话十分钟能搞定。4.1 安装与初始设置第一步安装开源阅读App。从官方渠道下载最新稳定版APK并安装启动后先别急着导书源把两个全局设置确认好。一个是“阅读设置-排版”把字体、行距调成自己舒服的样式这个看着和听书无关但视觉舒适度直接决定你愿不愿意长期用。另一个是“朗读设置-引擎”默认是系统TTS先保持默认等第三步再切换。第二步安装TTS引擎App并在系统设置里把它设为默认引擎。安卓路径一般是“设置 → 系统 → 无障碍/语言与输入法 → 文本转语音输出 → 首选引擎”部分机型在“更多设置-语言与输入法”里。设成默认之后打开引擎App在设置里找到“离线语音数据”或“语音包下载”选择中文字音色下载。下载完成后用引擎自带的试听功能放一段文章听听效果不满意就换另一个音色。4.2 导入精校书源并验证打开阅读App进入“我的-书源管理”。如果已经复制过书源分享链接页面通常会自动弹窗确认导入没弹窗就在“网络导入”里粘贴链接。导入之后全选所有书源点击“检测”按钮。关于检测结果三个细节值得说。第一检测时App会申请网络权限放行就好。第二检测完成后按耗时和可用状态排序我一般把“可搜索”和“可发现”的源启用“不可用”的直接删除。第三显示“搜索超时”的不等于永久失效有可能是对方服务器暂时慢我会过两天单独重测一次再决定去留。验证书源好不好的最终标准不是状态按钮而是实际搜一次书。用一本冷门书在搜索框里搜一下看能不能搜到、点进正文看排版是否干净、乱码多不多。这一步多花两分钟能避免后面所有源都不可用的尴尬。4.3 配置TTS引擎与离线语音包回到阅读App的“朗读设置”把引擎从系统默认切换成你安装的第三方TTS。不同版本的App里这个选项叫法略有差异一般是“TTS引擎”或“朗读引擎”点进去选择对应引擎即可。建议做一次“朗读试听”打开一本书点页面下方的朗读按钮让App连续朗读一两分钟。重点听三处章节标题播报是否正常中英文混合、数字混排时语速有没有突变停顿是否符合标点习惯。如果英文单词被逐字母拼读多半是引擎的语言模式识别出了问题去TTS引擎设置里把中文设为默认语言或者给阅读App指定TTS语言参数。离线语音包的验证方法很直接手机开飞行模式再点一次朗读。如果声音正常出来说明离线包生效如果提示“网络不可用”或者没声音说明引擎还在尝试在线合成这就要回到引擎设置里把“优先离线”或“仅离线”的选项打开。4.4 听书场景下的播放控制与习惯配置完成后剩下的就是使用习惯了。分享几个长期用下来觉得值的技巧。定时停止。睡前听书用“定时停止播放”我习惯设三十分钟。比按章节停止更人性化因为章节长短不一三十分钟有时候正好卡在关键情节中间第二天还想接着听但睡眠节奏已经被打破了。声音焦点与线控。阅读App朗读时通常能用耳机线控或蓝牙耳机的播放键控制暂停。如果遇到耳机控制无效去“朗读设置-接受音频焦点/媒体按键”里检查有没有开启。电池优化是关键。听书时手机熄屏系统为了省电很可能杀掉后台进程表现就是“听着听着突然没声了”。把阅读App加入电池优化白名单再把后台运行权限设为允许这是最容易忽略也最容易踩的坑。章节缓存。在WiFi环境下把接下来几章的内容缓存到本地配合离线语音包整个听书过程可以做到完全无网络连续播放。我出差坐高铁全程飞行模式听三四个小时一点问题都没有。5. 常见问题与排查技巧实录5.1 高频问题速查表问题现象可能原因解决办法搜索一本书所有源都返回空书源失效或目标网站加了反爬跑一遍书源检测更新精校书源合集朗读没有声音默认TTS引擎没切换检查系统首选引擎是否正确指向第三方TTS朗读提示“网络错误”引擎强制在线合成下载离线语音包并把引擎设为“仅离线”听着听着突然中断后台进程被系统杀死加入电池优化白名单开启后台运行权限语速忽快忽慢中英文混排时引擎切换语言在TTS引擎设置里固定默认语言为中文章节标题也被读出来朗读设置未排除标题开启“朗读时跳过章节标题”之类选项多音字读错TTS词典未覆盖在朗读替换或多音字词典里添加自定义读音导入了几百个书源却全不可用合集太老换最近三个月内更新的精校合集5.2 独家避坑经验几个容易踩的坑都是我真金白银换来的经验。第一书源更新别太频繁。书源不是越多越好精校源合集一般一个月更新一次频繁导入新合集容易把稳定源弄乱还会塞进一堆重复项。我现在主力源一两个月更新一次平时完全不折腾。第二TTS引擎和阅读App的版本兼容。阅读App升级后偶尔会出现朗读引擎列表里找不到第三方TTS的情况。这不是引擎坏了而是系统TTS缓存没刷新。到系统设置里先把TTS引擎切回系统默认再切回第三方列表一般就恢复了。第三离线语音包下载后不等于自动生效。有些语音包下载完还要在引擎设置里把它对应语言勾选为“使用离线音色”否则引擎依然优先走在线合成。这个步骤最隐蔽我第一次装完之后以为离线包没用差点把引擎卸载。第四耗电和发热。连续朗读一小时以上手机发热和耗电都挺明显。我在家专门拿一台旧手机当听书机常年插电扔在桌上当个小音箱用主力手机完全不被拖累。第五多设备同步。阅读App支持WebDAV备份可以把书架、书源、朗读设置同步到自己的WebDAV服务上。换手机后恢复一次五分钟回到原样。这个功能我强烈建议大家开它比本地备份文件省心太多。最后再分享一点个人体会。我用这套方案快三年最大的感受不是“省了多少钱”而是“耳边终于清净了”——想听哪本搜到就能读读起来没有广告打断也没有“会员专享AI音色”这种花活。当然它不是万能的真人广播剧、出版社正版畅销书该走的正规渠道还是得走。但如果你和我一样大部分时间在听网络文学和公开文档愿意花十分钟配置一次这套开源阅读 精校书源 TTS 离线语音包的组合真的值得试一试。只要把书源和语音包的选择权握在自己手里定期备份这套系统就能一直稳稳当当地替你读书。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进