ARTICLE / 产品
Narro:浏览器里朗读网页,先选引擎再决定数据去向
想在浏览器里朗读任意网页,常见选择分两类:调用云端 TTS 接口,或者自己部署本地服务。前者装完就能用,代价是页面文字要交给服务商;后者控制力强,前提是先有一台跑得动的机器。
Narro 走第三条路:做成 Chrome 扩展,让语音模型直接跑在浏览器进程里。点击扩展图标、选择引擎、按 Read this page,当前页面会逐句朗读,句子高亮并跟随滚动。项目采用 MIT 许可,最新版本 1.2.0 发布于 2026 年 10 月 24 日,仓库有 65 次提交,同时已在 Chrome 应用商店上架;想试最新改动,也可以从源码构建后加载未打包扩展。
引擎决定隐私和准备成本
OpenAI 可选 gpt-4o-mini-tts(支持风格指令)、tts-1 和 tts-1-hd;ElevenLabs 列出你账号下的音色;Google Gemini 提供自己的 TTS 音色;OpenRouter 用一个密钥接入多家语音模型。使用这些云端引擎时,被朗读的文字会发给对应服务商,并适用对方条款;OpenRouter 还会经过它背后的模型提供商。
浏览器内引擎包括 Kokoro-82M(8 个英文音色)、Supertonic 2(10 个英/西/法/葡/韩语音色)、Piper(多种语言的 piper-voices)和 Kitten TTS Nano(8 个英文音色,下载体积最小)。模型文件首次使用时从 Hugging Face 下载,之后缓存在浏览器里;选用这些引擎或系统音色时,朗读内容不会离开本机。API 密钥保存在 chrome.storage.local,不参与同步,也只发送给对应服务商。项目没有分析统计、账号或自有服务器。
本地服务器选项对接任何 OpenAI 兼容的 /v1/audio/speech 接口,例如 Kokoro-FastAPI。此时扩展只负责页面与播放,合成发生在你配置的机器上。
浏览器内运行要付出什么
README 给出的实测数据来自 M1 Pro 上的 Chromium:读取一篇 12 段文章,模型已下载,内存峰值取整到 50 MB。Kokoro-82M 在 CPU 下需下载 92.4 MB,朗读时约占用 700 MB;改用 WebGPU 后下载量为 325.5 MB,内存约 1050 MB。Supertonic 2 在 CPU 下为 262.9 MB、约 950 MB;WebGPU 同样是 262.9 MB,但内存降到约 800 MB。
Piper 中等质量音色约 63.2–63.5 MB、高质量音色约 113.9–120.8 MB,两者朗读时都约占用 800 MB。Kitten TTS Nano 0.8 含全部 8 个英文音色只需 27.7 MB,内存约 500 MB。内存并不随模型大小线性增长:三个引擎共用语音运行时,因此较小的 Piper 音色仍需要接近 Kokoro 的内存。Kokoro 和 Supertonic 在设备设为 Auto 且浏览器支持时会使用 WebGPU,弹窗显示当前机器的实际数字。
阅读控制如何工作
连续句子会被合并成一次请求,以保留语调连贯;第一句单独发送,使朗读尽快开始。速度可在 0.5 倍到 3 倍之间调整,并保持音高。选中文字后右键可从该处开始朗读;同一页面再次打开时,会从上次位置继续。弹窗可暂停或停止,工具栏图标在播放时显示红色标记。
恢复进度依赖一小段最后一句指纹和位置信息,最多记录 200 个页面,均留在本地且不包含文本本身。
Kindle Cloud Reader 依赖本机 OCR
Kindle Cloud Reader 将书页渲染成图片,普通文本提取无法取得内容。Narro 使用 Tesseract,对当前可见页在本机进行 OCR,再让所选音色朗读识别结果。读到页尾时,它会按下 Kindle 的 Next page 按钮继续;也可在最后一页仍在播放时提前翻页以减少停顿,两种行为都能在设置中关闭。跨页或跨栏断开的句子会完整朗读一次。
OCR 目前仅支持英文,装饰性字体、极小字号和插图都会降低识别准确率。项目声明自身独立,与 Amazon 无隶属或背书关系;自动化使用 Kindle Cloud Reader 可能受服务条款限制,是否合规需要使用者自行确认。
怎么选
主要读英文网页、又不愿把内容交给第三方时,浏览器内引擎最直接。先试 Kitten TTS Nano:27.7 MB 下载、约 500 MB 内存,可以验证“不出本机”这个条件是否满足需求。若更看重音质或音色,再选择云端引擎并接受相应数据传输;已有 Kokoro-FastAPI 等服务时,则用本地服务器选项,让扩展只做前端。
主要读中文网页的人不应只看浏览器内引擎:Kokoro 和 Kitten TTS Nano 只有英文音色,Supertonic 2 也不覆盖中文,Piper 虽称支持多语言但 README 未给出具体语言列表。系统音色能否朗读中文取决于操作系统配置。本文未实测该扩展,以上判断来自公开仓库与 README,安装前应以最新版本说明为准。