ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
8개 언어 텍스트를 붙여 발음 연습하면 Magic Read가 음성 인식으로 단어별 점수를 매겨 놓친 부분을 교정합니다
Paste any text in 8 languages and practice it aloud. Magic Read scores your pronunciation word by word with speech recognition and drills what you miss.
교육JavaScript · HTMLGitHub @mgrinyuk온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Two standalone, dependency-free HTML mockups built to your stack's conventions
(vanilla JS, showScreen() panels, CSS custom properties, inline <symbol>
sprite, Inter + Noto Sans SC, 700px shell + bottom tab bar). No build step.
Each can be opened directly in a browser and translated into your real
index.html / style.css / app.js.
| File | Screen | Stages |
|---|---|---|
reader.html | Reader | setup → reader → exercises (menu → type 1 / type 2) |
speak-spotlight.html | Speak | setup → practice (listen / record / feedback) → finish |
A dev jump-bar is pinned at the top of each file so you can preview every stage. Delete it on integration (it's clearly marked, as is every demo-only stub).
Paste / Library / Saved tabs; selectable text tiles → Start reading..han.show-pinyin)..han.show-trans).INTEGRATION in the file)togglePlay / runPlay) — replace the interval timer with
Google TTS for the active text + selected voice (VOICES[S.voice]); advance
S.active from real audio sentence boundaries instead of a fixed tick.toggleSlow) — map to TTS speakingRate.{hz, py, en, pos}.
Swap the inline PASSAGE for your tokeniser output (pinyin-pro + your dictionary).saveWord) — Supabase flashcards insert/delete.toggleBookmark) — Supabase saved_texts.LIBRARY / SAVED arrays) — Supabase queries.EX1_TARGET / EX1_BANK / EX2) — generate the
word-order target and the cloze options from the active text.// token (word)
{ hz:'中国', py:'zhōngguó', en:'China', pos:'noun', word:true }
// token (punctuation)
{ hz:'。', word:false }
// passage = [ { trans:'<full paragraph translation>', sentences:[ [token,…], … ] }, … ]
Pronunciation practice ("Spotlight" direction). The big mic is the hero: tap to record, it fills with colour, then becomes a score ring. Per-word colouring, positive burst on a good result, a Finish screen with overall score + a tappable per-sentence recap that updates the score when you re-practise.
onMicTap / onListen) — your Azure speech SDK + MediaRecorder
(and Google TTS for Listen). Replace the fake 2.3s timer.applyScore(result)) — feed Azure's JSON straight in. Expected:
{ score, accuracy, fluency, completeness,
words:[ { text:'中', status:'good' | 'ok' | 'bad' }, … ] }
Azure already returns per-word accuracy — bucket it into good/ok/bad at
your thresholds (the mockup uses 85 / 70).fakeScore() / fakeScore-style synths.:root and mirror your existing reader/speak
palettes (--primary #E5267E, --cyan, --yellow, --good …). Map them onto
your real variables rather than hard-coding colours.#i-… (reader) and #sonic-i-… (speak) — rename to
match your actual sprite symbol ids.renderTabbar() helper.S object per file — easy to lift into
your app.js module pattern.