ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
영어 그림책 낭독·쉐도잉 학습
Translation pending
EducationJavaScript · TypeScriptGitHub @iw-labOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
AI가 읽어주는 단계별 영어 그림책 352권 — 지연 추적 쉐도잉과 청취 커버리지 검증으로 '학습이 실제로 일어났음'을 증명하는 오픈소스 PWA. 계정·비용·런타임 AI 호출 없음.
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗AI가 읽어주는 단계별 영어 그림책 — 발음 부담 없이, 수준에 맞게, 누구나 무료로.
Read it. Hear it. Echo it. Speak it.
▶ 3분 시연영상 — https://youtu.be/ohUmbobhoEY
(실제 배포본을 스크립트로 구동해 녹화했습니다. 녹화 파이프라인은 scripts/demo-video에 있습니다.)
EchoTale은 초등 영어 학습자를 위한 오픈소스 PWA입니다. AI가 생성한 그림책과 원어민 음성으로 Read → Hear → Echo → Speak(읽고 → 듣고 → 따라 하고 → 말하기) 셰도잉 루프를 제공합니다. 계정 없이 바로 실행되며, 학습 상태는 기기에 로컬 저장됩니다.
대부분의 학습 앱은 재생 버튼만 눌러도 '완료' 가 됩니다. 기록은 쌓이지만 그 숫자가 실제 학습을 뜻하지 않아, 교사도 학부모도 신뢰할 수 없습니다. EchoTale은 학습이 실제로 일어났을 때만 기록이 쌓이도록 설계했습니다.
"따라 읽기"는 보통 오디오를 두 번 틀어 주는 합창 낭독입니다. EchoTale은 오디오를 한 번만 흘리면서 하이라이트 트랙을 둘로 굴립니다 — 원어민 트랙과, 설정한 지연만큼 뒤처지는 내 차례 트랙. 원어민이 말하는 도중에 한 박자 뒤에서 겹쳐 말하는 실제 쉐도잉입니다.
| 단계 | 이름 | 지연 | 원어민 볼륨 |
|---|---|---|---|
| 1 | 듣기 | — | 1.0 |
| 2 | 같이 읽기 | 0ms | 1.0 |
| 3 | 느린 쉐도잉 | 800ms | ↓ |
| 4 | 표준 쉐도잉 | 450ms | ↓ |
| 5 | 블라인드 | 300ms + 텍스트 가림 | 0.45 |
단계가 올라갈수록 원어민 목소리를 줄여 자기 목소리를 듣게 합니다.
불변식 echoWord ≤ activeWord 를 유닛 테스트로 고정했습니다.
onEnd 한 곳으로 단일화).3쪽 1개),
그리고 "안 들은 문장만 듣기" — 이미 들은 문장은 건너뛰고 빠진 문장만 이어서 재생합니다.직접 확인해 보세요 — 아무 책이나 열어 듣지 않고 마지막 쪽으로 넘기면 도장이 찍히지 않습니다.
배포할 때마다 정적 청크의 해시 파일명이 바뀌고 이전 배포분은 더 이상 서빙되지 않습니다. 학교 공용 기기가 낡은 HTML을 오래 들고 있으면(탭을 며칠씩 열어 둠·회선이 끊긴 순간의 캐시 응답) 사라진 청크를 요청해 예외 하나 없이 리액트가 통째로 죽고 흰 화면이 됩니다. 그래서 리액트 바깥에서 도는 인라인 복구 스크립트를 넣었습니다.
error)·ChunkLoadError 감지 → 캐시를 버리고 1회 자동 재적재load 완료 후에도 리액트가 안 붙었으면 재적재(느린 회선 오탐 없음)"알아요" 버튼을 폐지하고, 보유한 1,000단어로 5가지 문제 유형(듣고 고르기 · 뜻 고르기 · 영어로 고르기 · 예문 빈칸 · 철자 조립)을 자동 생성합니다. Leitner 박스가 올라갈수록 인식형에서 산출형으로 난이도가 오르고, 마스터 단계도 60일 뒤 망각 재검을 거칩니다.
AI는 콘텐츠를 만들 때만 씁니다. 배포된 앱은 생성이 끝난 정적 자산만 재생하므로 API 키가 필요 없고 사용자당 추론 비용이 0 입니다. 352권 규모의 AI 생성 콘텐츠를 무료로 영구 공개할 수 있는 이유입니다.
한국 초등 영어 교육과정은 스피킹을 강조하지만, 교실 현장에는 구조적 병목이 있습니다.
EchoTale은 이 문제를 다음과 같이 해소합니다.
이 설계는 현직 초등교사가 교실에서 직접 겪은 어려움에서 출발했습니다.
| 영역 | 사용 기술 |
|---|---|
| 프레임워크 | Next.js 16 (App Router) · React 19 · TypeScript 5 |
| 스타일 | Tailwind CSS 4 |
| 배포 | Cloudflare Workers (OpenNext) · Wrangler |
| 데이터 | 정적 시드 JSON(data/seed/) + 로컬 우선 학습 상태 |
| AI 에셋 | 일러스트 = OpenAI Codex CLI $imagegen (3,114장) + Meta AI (782장) · 음성(TTS) = OpenAI gpt-4o-mini-tts (nova) |
AI는 콘텐츠를 만들 때(빌드·시드 타임)만 사용합니다. 배포된 앱은 생성이 끝난 정적 자산만 재생하므로 런타임에 AI 모델을 호출하지 않습니다(API 키 불필요).
data/seed/ # 책 원문(JSON): 제목·레벨·페이지·문장·단어·퀴즈
public/seed/ # 생성된 미디어 에셋(그림 PNG, 낭독·단어 MP3)
├─ <book-slug>/ # 책별 일러스트 + 문장 낭독 음성
└─ _words/ # 전 권 공용 단어 발음(dedup)
scripts/ # 콘텐츠 생성 파이프라인(텍스트→음성→그림→QA)
src/ # 앱 소스(Next.js)
참고 — 에셋 배포 방식: 이 저장소는 352권 전권의 삽화(WebP 3,896장)와 낭독·단어 음성(MP3)을 모두 포함합니다. 별도 내려받기 없이 클론 즉시 전체 콘텐츠가 동작합니다. 다만 그만큼 저장소가 큽니다(약 1.8GB) — 코드만 빠르게 보시려면
git clone --filter=blob:none을 권합니다.용량 절감을 위해 원본 PNG는 커밋하지 않고 WebP만 배포합니다(PNG 11.4GB → WebP 0.73GB, -93.6%). 원본이 필요하면
scripts/의 생성 스크립트로 재생성할 수 있습니다.
# 1) 의존성 설치
pnpm install
# 2) 개발 서버
pnpm dev # http://localhost:3000
# 3) (선택) 에셋 재생성 — OpenAI API 키 필요
# .env.local 에 OPENAI_API_KEY 설정 후:
pnpm seed:audio # 문장 낭독 음성 생성 (OpenAI nova)
pnpm seed:words # 단어 발음 생성 (OpenAI nova, dedup)
# 이미지 생성은 scripts/gen-storybook-images.mjs (Codex CLI $imagegen) 참고
샘플 도서만으로는 API 키 없이도 바로 열람·재생됩니다.
$imagegen 3,114장 + Meta AI 782장(86권), 음성은 전량 OpenAI
gpt-4o-mini-tts. OpenAI 생성분은 약관상 출력물 소유권이 생성자에게 귀속되어 MIT로
재배포하며, Meta AI 생성분은 대상 파일을 scripts/.meta-manifest.json 에 전건 기록해
두었으니 재사용 시 Meta AI 약관을 직접 확인하세요.출처·라이선스 전체 고지는 NOTICE.md 를 참고하세요.
마이크 발음 평가를 왜 지금 넣지 않았나 — 슬로건이 Speak 로 끝나는데 마이크를 쓰지 않는 것은 의도적 선택입니다. ① 발음 채점은 상용 영어앱의 레드오션이라 변별력이 없고, ② 기기별 에코 제거 편차와 iOS Safari의 음성 인식 불안정으로 현장 시연이 깨질 위험이 가장 큰 기능이며, ③ "검증된 학습"은 청취 커버리지 + 객관식 어휘 + 이해 퀴즈만으로 성립하기 때문입니다. 절약한 몫은 쉐도잉 엔진 정교화에 넣었고, 나중에 음성 지표를 붙일 수 있도록
ReadSession스키마에 자리를 비워 두었습니다. 자세한 판단 근거는 docs/UPGRADE-PLAN.md 1절 참고.
현직 초등교사가 만든, 교실에서 출발한 오픈소스 영어 학습 도구입니다.