谷歌浏览器书签栏JS脚本:一键发送网页文字给IndexTTS2
在信息爆炸的时代,我们每天面对海量的网页内容——新闻、论文、技术文档、社交媒体长文。长时间盯着屏幕阅读不仅容易疲劳,还限制了多任务处理的可能性。有没有一种方式,能让我们“边听边做”?比如一边做饭一边听文章摘要,或是在编码时让AI替你读完一篇英文博客?
答案是肯定的。通过一个简单的浏览器书签脚本,配合本地运行的语音合成系统 IndexTTS2,你可以实现“选中即朗读”的极致体验。无需安装插件、不依赖云端服务、完全保护隐私,只需轻轻一点,网页上的文字就能变成富有情感的语音。
这听起来像极客玩具,但实际上它已经足够稳定和易用,适用于学习、创作、无障碍访问等多种场景。它的核心原理并不复杂:前端抓取文本 + 本地TTS引擎合成语音 + 浏览器自动播放。而真正巧妙的地方在于——整个流程被压缩成了一次点击。
为什么选择 IndexTTS2?
市面上不乏优秀的文本转语音(TTS)工具,从 Google Cloud TTS 到阿里云语音合成,再到 macOS 自带的 say 命令。但它们要么需要联网上传数据,要么缺乏表现力,难以满足对音质和情绪控制有要求的用户。
IndexTTS2 是一个基于 PyTorch 的开源端到端语音合成系统,由开发者“科哥”主导维护。其最新 V23 版本在自然度、情感调控和部署灵活性方面表现出色,尤其适合本地化使用。
它的工作流程很清晰:
- 输入文本经过分词与音素转换;
- 语言模型提取语义特征;
- 情感控制器注入情绪标签(如“喜悦”、“悲伤”、“中性”),调节语调、节奏和重音;
- 声学模型生成梅尔频谱图;
- 神经声码器将频谱还原为高质量音频波形。
这套流程听起来专业,但对用户来说最直观的感受是:语音不再机械,而是有了语气起伏和情绪色彩。你可以让它用“兴奋”的语气读科技新闻,也可以用“平静”的语调朗读睡前故事。
更重要的是,所有处理都在你的设备上完成。没有数据上传,没有网络延迟,也没有隐私泄露的风险。只要你有一块带 4GB 显存以上的 GPU,推理速度完全可以做到秒级响应。
启动服务也非常简单:
cd /root/index-tts && bash start_app.sh这个脚本会自动激活 Python 环境,加载模型权重,并启动 WebUI 服务,默认监听http://localhost:7860。首次运行时会自动下载模型文件至cache_hub目录,后续即可离线使用。
如果遇到服务卡死的情况,可以用以下命令排查并终止进程:
ps aux | grep webui.py kill <PID>建议优先使用Ctrl+C正常退出,避免缓存损坏。另外,别忘了把cache_hub加入备份列表——这些模型文件动辄几 GB,重新下载太耗时间。
书签脚本能做什么?不只是收藏链接
很多人以为书签只能保存网址,其实 Chrome 支持一种叫JavaScript 伪协议的功能:将javascript:开头的代码作为书签 URL,点击时就会在当前页面执行这段 JS。
这正是实现“一键朗读”的关键。我们可以写一段轻量级脚本,让它在任意网页上捕获选中的文字,然后通过 HTTP 请求发送给本地运行的 IndexTTS2。
整个机制非常干净利落:
- 不需要打包成扩展程序;
- 不申请任何额外权限;
- 兼容 Chrome、Edge 及所有主流 Chromium 内核浏览器;
- 分享也极其方便——导出一个 HTML 书签文件就能传给别人直接导入。
来看核心代码:
javascript:(function(){ const selectedText = window.getSelection().toString().trim(); if (!selectedText) { alert("请先选中一段文字!"); return; } fetch('http://localhost:7860/tts', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ text: selectedText, emotion: 'neutral' }) }) .then(res => res.json()) .then(data => { const audio = new Audio(data.audio_url); audio.play(); }) .catch(err => { console.error("发送失败,请检查IndexTTS2是否已启动:", err); alert("连接失败,请确认本地TTS服务正在运行。"); }); })();这段代码做了几件事:
- 使用
window.getSelection()获取当前选中的文本; - 如果没选中内容,弹窗提醒;
- 构造 POST 请求,发送 JSON 数据到
http://localhost:7860/tts接口; - 成功后接收返回的音频 URL,创建
<audio>标签并自动播放; - 出错时提示用户检查服务状态。
由于请求目标是localhost,浏览器的同源策略不会阻止这种本地回环通信,因此无需 CORS 配置或代理转发。
不过有个小坑需要注意:现代浏览器默认禁止“无用户手势触发的音频自动播放”。也就是说,即使你点了书签,也可能因为安全策略导致音频无法播放。
解决办法是在启动 Chrome 时加上参数:
--autoplay-policy=no-user-gesture-required或者更简单粗暴地,在第一次播放时手动点一下页面(相当于一次交互),之后就可以正常自动播放了。
完整工作流:从选中到听见
整个系统的协作可以分为三层:
+------------------+ +---------------------+ | 浏览器前端 |<----->| 本地 HTTP 通信 | | (Bookmarks JS) | | (localhost:7860) | +------------------+ +----------+----------+ | +--------v---------+ | IndexTTS2 WebUI | | (FastAPI + TTS) | +------------------+具体流程如下:
- 用户打开任意网页(比如知乎专栏、PDF 在线阅读器、Notion 页面);
- 用鼠标选中想要朗读的文字;
- 点击书签栏中的“发送至 IndexTTS2”按钮;
- JavaScript 脚本获取选中文本,封装为
{text: "...", emotion: "neutral"}并 POST 发送; - IndexTTS2 接收请求,调用 TTS 引擎生成语音,返回音频 URL;
- 浏览器接收到响应,动态创建音频元素并播放。
整个过程通常在 1~3 秒内完成,取决于文本长度和硬件性能。实测在 RTX 3060 上,一段 300 字的中文文章合成加传输不到两秒,体验相当流畅。
实际应用场景远比想象丰富
这项技术看似简单,但在实际使用中展现出惊人的适应性。
学习辅助:外语阅读 + 听力训练双提升
学生可以用它朗读英文论文或原版书籍,边看边听,强化语感。相比传统复制粘贴到翻译软件再点朗读的操作,这种方式无缝集成,极大降低操作成本。
视障人士的数字桥梁
对于视力受限的用户,这个功能几乎就是网页内容的“语音入口”。他们可以通过屏幕阅读器配合该脚本,快速听取任意段落的内容,显著提升信息获取效率。
内容创作者的试听工具
写文案、做视频脚本的人常常需要“听一遍”来检验语句是否通顺。过去可能要导出到剪辑软件里才能试听,现在直接选中就能播放,即时反馈写作节奏和语气问题。
科研人员的“耳朵外挂”
程序员、研究员经常需要阅读大量文献和技术文档。开启这个功能后,可以在写代码的同时让 AI 读出论文摘要,真正做到“一心二用”。
甚至有人把它用于儿童教育——把童话故事选中后播放,让孩子边玩玩具边听,培养语言能力。
实践建议与避坑指南
虽然整体架构简洁,但在部署过程中仍有几个关键点需要注意:
确保服务常驻运行
可以配置 systemd 服务(Linux)或 Windows 计划任务,让 IndexTTS2 随开机自动启动。否则每次都要手动拉起服务,体验大打折扣。预留足够资源
推荐至少 8GB 内存 + 4GB 显存。若显存不足,可能会出现 OOM 错误导致服务崩溃。可考虑启用半精度(FP16)模式降低内存占用。保护模型缓存目录
cache_hub文件夹包含数 GB 的预训练权重,删除后重启需重新下载。建议将其移至 SSD 并加入定期备份计划。首次运行准备网络环境
第一次启动必须联网,模型下载时间视网速而定,可能持续数分钟至半小时。期间不要中断脚本。检查防火墙设置
确保127.0.0.1:7860未被本地防火墙或杀毒软件拦截。某些安全软件会阻止未知应用监听端口。遵守声音版权规范
若使用参考音频进行音色克隆,务必取得合法授权。未经授权模仿他人声音存在法律风险,尤其是在公开传播场景下。
更进一步的可能性
目前的功能聚焦于“单段落朗读”,但未来拓展空间很大:
- 支持连续段落朗读:识别当前页面所有段落,按顺序批量合成,实现“全文朗读”模式;
- 自定义语音参数:在脚本中加入语速、音高、停顿等调节选项,甚至支持快捷键切换情感模式;
- 双向交互尝试:结合 Whisper 等本地 ASR 模型,实现“你说它听、它说你听”的对话式浏览;
- 打包为 PWA 应用:将前端控制面板独立出来,统一管理朗读队列、历史记录和偏好设置;
- 移动端适配探索:在 Android WebView 中运行类似逻辑,配合 Termux 部署本地 TTS,打造移动语音助手雏形。
这种将大模型能力与前端轻量化交互相结合的设计思路,正在成为个人 AI 工具的新范式。它不像 SaaS 产品那样追求通用性,也不依赖复杂的插件体系,而是以最小代价打通“想法”与“执行”之间的最后一公里。
当你能在浏览网页时随心所欲地“听”而不是“读”,你会发现,信息消费的方式已经被悄然改变。而这背后的技术组合——一个书签脚本 + 一个本地 API ——简单得令人惊叹,却又强大得足以重塑日常习惯。
或许未来的智能终端,不再需要那么多臃肿的应用。只需要几个精心设计的“触发器”,就能唤醒沉睡在本地的 AI 力量。