我构建了一个本地 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

使用的模型

两模型均在首次运行时自动从 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:

0 浏览
Back to Blog

相关文章

阅读更多 »