클라우드와 API 키 없이 로컬 스크린 리더를 만들었습니다 — 화면을 소리로 읽어줍니다
발행: (2026년 4월 11일 오후 09:30 GMT+9)
4 분 소요
원문: 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와 함께 사용하여, 전체 책을 핸즈프리로 읽고 페이지를 자동으로 넘깁니다.
# Draw OCR region, then draw the next‑page button
uv run python capture.py --next-btn -i 2사용된 모델
- OCR: LightOnOCR‑2‑1B – 빠르고 정확하며 AMD GPU와 ROCm으로 실행
- TTS: Kokoro‑82M – 고품질이며 CPU에서 약 100 ms 지연을 가짐
두 모델 모두 첫 실행 시 HuggingFace에서 자동으로 다운로드됩니다. API 키나 구독이 필요 없습니다.
스마트 대기 감지
픽셀 수준의 차이 비교를 통해 OCR과 TTS는 실제로 변화가 있을 때만 작동합니다. 정적인 페이지를 읽고 있나요? 소리 없이 조용합니다. 새로운 내용이 로드되면? 즉시 읽어줍니다.
# Only trigger OCR when >1% of pixels changed
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: