我构建了一个本地 screen reader,能够朗读你的屏幕——无云端,无 API 密钥
发布: (2026年4月11日 GMT+8 20:30)
3 分钟阅读
原文: Dev.to
Source: Dev.to
它的功能
- 🖱️ 在屏幕任意位置绘制矩形
- 📸 每隔 N 秒对该区域进行快照
- 🔍 像素差分检查 – 跳过内容未变化的帧
- 🧠 LightOnOCR‑2‑1B 读取文字(在 AMD GPU 上通过 ROCm 运行)
- 🗣️ Kokoro‑82M 通过扬声器朗读(在 CPU 上运行)
🖥️ screen → 🔍 diff → 🧠 OCR → ✨ clean text → 🗣️ TTS → 🔊 speaker自动翻页(杀手级功能)
在屏幕上任意按钮上再绘制一个矩形。TTS 朗读结束且屏幕保持空闲后,sttts 会自动点击它。我把它和 Kindle for PC 配合使用——实现全书免手阅读,自动翻页。
# 绘制 OCR 区域,然后绘制下一页按钮
uv run python capture.py --next-btn -i 2使用的模型
- OCR: LightOnOCR‑2‑1B – 快速、精准,支持 AMD GPU(ROCm)
- TTS: Kokoro‑82M – 高质量,CPU 上约 100 ms 延迟
两模型均在首次运行时自动从 HuggingFace 下载。无需 API Key,也不需要订阅。
智能空闲检测
像素级差分比较意味着只有在实际发生变化时才触发 OCR 与 TTS。页面静止时保持沉默,内容更新后立即朗读。
# 仅当超过 1% 像素变化时触发 OCR
uv run python capture.py --diff-threshold 1.0快速入门
# 安装系统依赖
sudo apt-get install -y slop xdotool libportaudio2 libsndfile1
# 安装 uv(快速的 Python 包管理器)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 克隆仓库并运行
git clone https://github.com/paradisecy/sttts
cd sttts
uv sync
uv run python capture.py使用场景
- 📖 免手阅读电子书(Kindle、ePub 阅读器、PDF)
- 📊 为金融仪表盘提供语音更新
- ♿ 为缺乏原生屏幕阅读器支持的应用提供辅助功能
- 💻 工作时听取终端输出或日志
- 🌐 在不使用浏览器扩展的情况下聆听任意网页内容
技术栈
- Python 3.13
- PyTorch 2.8 + ROCm 6.3(AMD GPU)
关键库
mss– 高速屏幕捕获transformers– OCR 模型管理kokoro– TTS 模型sounddevice– 音频播放slop+xdotool– 区域选择与鼠标点击
⭐ GitHub: