ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
正在加载完整 README。 以下为已保存的摘录。
영어 친구 — 영어 왕초보용 AI 회화 앱 AI 친구와 영어로 수다 떨며 듣기 → 따라 말하기 → 읽기 → 쓰기를 연습하는 웹 앱입니다. 완전 초보(A1)부터 원어민 수준(C2)까지 6단계 교육과정을 따라 AI의 말투와 도움의 양이 바뀝니다. React + Vite + TypeScript로 만들었고, AI는 Gemini API(무료 키)를 브라우저에서 바로 부릅니다. 서버는 없습니다. 1. 이 코드가 main 브랜치에 있어야 정식 주소가 로그인 없이 열립니다. (다른 브랜치는 무료 플랜에서 미리보기 주소라 Vercel 로그인이 필요합니다.) 2. vercel.com에서 Add New → Project → grapevine26/vvv Import. 3. Framework Preset이 Vite로 자동 선택되는지 확인하고 Deploy. Root Directory 등 다른 설정은 그대로 둡니다. 4. 생긴 https://○○.vercel.app 주소를 열고 키 넣고 시작하기를 누릅니다. 화면 안내대로 Gemini 키를 받아 붙여 넣고 저장하고 시작하기를 누르면, 키가 맞는지 먼저 확인한 뒤 바로 첫 대화가 시작됩니다.查看完整 README ↗
AI 친구와 영어로 수다 떨며 듣기 → 따라 말하기 → 읽기 → 쓰기를 연습하는 웹 앱입니다. 완전 초보(A1)부터 원어민 수준(C2)까지 6단계 교육과정을 따라 AI의 말투와 도움의 양이 바뀝니다. React + Vite + TypeScript로 만들었고, AI는 Gemini API(무료 키)를 브라우저에서 바로 부릅니다. 서버는 없습니다.
grapevine26/vvv Import.https://○○.vercel.app 주소를 열고 키 넣고 시작하기를 누릅니다. 화면 안내대로 Gemini 키를 받아 붙여 넣고 저장하고 시작하기를 누르면, 키가 맞는지 먼저 확인한 뒤 바로 첫 대화가 시작됩니다.Gemini 키는 Google AI Studio에서 무료로 받습니다. 복사할 때 따옴표나 공백이 같이 붙어도 앱이 알아서 떼어 냅니다. Vercel 환경 변수(Environment Variables)에 키를 넣지 마세요. 이 앱은 서버가 없어서 쓰이지도 않고, 페이지에 끼워 넣으면 누구나 키를 보게 됩니다.
Node.js 22 이상이 필요합니다. PowerShell에서:
npm install
npm run dev
브라우저에서 http://localhost:5173을 엽니다. 코드를 고치면 화면이 자동으로 바뀌어서 다시 켤 필요가 없습니다.
npm test # 문장 나누기·비교, AI 응답 처리 등 로직 테스트
npx playwright install chromium # 처음 한 번만
npm run test:e2e # 빌드한 앱으로 화면 흐름 테스트 179개 (AI·마이크·스피커는 가짜)
npm run lint # 코드 검사
화면 아래 안내 줄이 지금 할 일을 알려 줍니다: 생각 중 → 친구가 말하는 중 → 내 차례.
| 하는 일 | 방법 |
|---|---|
| 대답하기 | 눌러서 한국어로 말하기 버튼을 누르고 말해도 됩니다. AI가 쉬운 영어 문장으로 바꿔 줍니다. 다 말했으면 버튼을 한 번 더 누르면 바로 보내집니다. |
| 잘못 눌렀을 때 | 듣는 중에 ✕ 취소를 누르면 보내지 않고 멈춥니다. 다른 언어 버튼을 누르면 그 언어로 바꿔 다시 듣습니다. |
| 따라 말하기 | 노란 칸에 문장이 나오면 EN 버튼(파랗게 강조됨)을 누르고 따라 말합니다. 비슷하게 말하면 "잘 들렸어요 👍"가 붙습니다. |
| 대답이 막힐 때 | 질문 아래 "이렇게 대답해도 돼요" 칩을 누르면 들립니다. 그대로 EN 버튼으로 말하면 됩니다. (칩을 읽은 것은 '따라 말하기'로 세고, 승급 기준의 '스스로 한 대답'에는 넣지 않습니다.) |
| 말 멈추기·다시 듣기 | 친구가 말하는 중엔 ■ 그만, 말풍선의 🔊 다시 / 🐢 천천히 |
| 손 안 쓰고 하기 | 설정에서 친구 말이 끝나면 바로 듣기를 켜면 버튼을 안 눌러도 마이크가 켜집니다. |
| 키보드 | 아래 입력칸에 한국어·영어 아무거나 써도 됩니다. |
| 응답이 늦을 때 | 8초가 지나면 그만 기다리기 버튼이 나옵니다. 20초가 지나면 저절로 멈추고 다시 시도할 수 있습니다. |
| 오류가 났을 때 | 오류 말풍선의 키 다시 넣기 / 모델 이름 고치기 / 다시 시도 버튼을 누르면 고칠 곳이 바로 열립니다. |
| 마무리 | 끝내기(또는 휴대폰 뒤로 가기) → 오늘 문장 듣고 소리 내어 읽기 → 한국어 뜻 보고 영어로 써 보기 → 저장하고 끝내기 |
| 중간에 꺼졌을 때 | 대화는 15초마다 임시 저장됩니다. 다시 열면 이어서 하기 / 저장하고 닫기 / 버리기를 고릅니다. |
| 복습 | 저장한 문장은 내 문장 노트에 모입니다. 시작 화면 오늘 할 일의 "하러 가기"로 듣고 따라 하는 복습을 하고, 오래된 문장은 다음 대화에서 AI가 다시 쓰게 합니다. |
| 교육과정 | 시작 화면 카드에 오늘 단원과 다음 단계까지 남은 조건이 보입니다. 교육과정에서 단원을 고르거나 단계를 바꿉니다. |
| 폰 ↔ PC | 시작 화면 폰↔PC 옮기기 → 내보내기로 코드를 복사해 카톡 "나와의 채팅"으로 보내고, 다른 기기에서 가져오기에 붙여 넣습니다. 내 문장 노트·설정·진도가 합쳐집니다(Gemini 키와 목소리는 기기마다 따로). |
| 연습 | 하는 일 | 왜 |
|---|---|---|
| 대화 전 2분 연습 | 오늘 단원의 문장 틀 2~3개를 듣고, 따라 하고, 빈칸 단어를 바꿔 말해 봅니다 (AI 안 씀) | 대화에서 "뭐라고 하지?"로 막히지 않게 |
| 5분 복습 퀴즈 | 내 문장 노트의 문장으로 듣고 뜻 고르기·뜻 보고 말하기·단어 순서 맞추기. 맞히면 다음 복습이 1→2→4→7→15일 뒤로 (AI 안 씀) | 잊을 때쯤 다시 꺼내야 오래 기억에 남아서 |
| 듣고 따라 말하기 | AI가 내 단계에 맞는 30초 이야기를 만들고, 한 문장씩 듣고 따라 말합니다. 마음에 드는 문장은 내 문장 노트에 저장 | 말하기만큼 듣기 양이 필요해서 |
| 이번 주 기록 | 7일 공부 시간 막대, 주별 '영어로 스스로 대답한 비율' | 늘고 있는 걸 눈으로 보면 계속할 힘이 나서 |
| 발음 피드백 | 따라 말하기에서 덜 들린 단어를 빨간 밑줄로 표시 | 무엇을 다시 연습할지 바로 알게 |
| 기록 백업 | 폰↔PC 옮기기 화면에서 파일로 저장 / 파일에서 되살리기. 일주일 넘게 안 하면 시작 화면이 알려 줍니다 | 기록이 이 브라우저에만 있어서, 크롬 기록을 지우거나 폰을 바꾸면 사라지기 때문 |
카톡 안 화면에서는 파일이 저장되지 않으니 내보내기 코드를 카톡 "나와의 채팅"에 보내 두세요. 옮기기 코드와 백업 파일에는 퀴즈 복습 일정도 들어갑니다.
크롬에서 주소를 열고 오른쪽 위 ⋮ → 홈 화면에 추가(또는 앱 설치) 를 누르면 아이콘이 생기고 주소창 없이 열립니다. 카카오톡에서 링크를 누르면 카톡 안 브라우저로 열리는데, 거기선 마이크가 잘 안 됩니다. 화면 위 크롬으로 열기를 누르세요. 크롬이 안 열리면 그 아래 다른 브라우저로 열기를 누르고, 삼성 인터넷이 열리면 오른쪽 아래 메뉴에서 크롬으로 엽니다(브라우저마다 저장이 따로라 한 곳만 쓰는 게 좋아요). 카톡 안에서 이미 쓰던 기록이 있으면 먼저 폰↔PC 옮기기 → 내보내기로 코드를 복사해 두라고 화면이 알려 줍니다. 대화 중에는 화면이 꺼지지 않게 해 둡니다.
| 단계 | 목표 | 처음부터 보통 걸리는 시간* | 다음 단계 조건 (최근 대화 5번 기준) |
|---|---|---|---|
| 1 첫걸음 (A1) | 짧은 표현으로 나에 대해 말하기 | 90~100시간 | 단원 10개 · 영어로 스스로 대답 50% · 평균 3단어 |
| 2 기초 대화 (A2) | 어제 한 일과 계획을 여러 문장으로 | 180~200시간 | 단원 10개 · 80% · 평균 5단어 |
| 3 자립 대화 (B1) | 막히지 않고 이야기 이어 가기, 상황극 | 350~400시간 | 단원 10개 · 95% · 평균 8단어 |
| 4 자신감 있는 대화 (B2) | 의견을 근거와 함께 길게, 원어민 속도 | 500~600시간 | 단원 10개 · 95% · 평균 12단어 |
| 5 유창한 대화 (C1) | 표현을 골라 쓰고 말투 바꾸기 | 700~800시간 | 단원 10개 · 95% · 평균 15단어 |
| 6 원어민 수준 (C2) | 속어·유머·문화 맥락·뉘앙스 | 1,000~1,200시간 | — |
* Cambridge English의 CEFR 누적 수업 시간 안내치. 한국어 화자는 더 걸릴 수 있고, 앱 대화만으로는 부족합니다. 단계마다 **하루 루틴(약 1시간)**에 듣기·읽기를 넣어 두었습니다.
src/lib/curriculum.ts 한 파일에 있습니다.| 바꾼 것 | 이유 |
|---|---|
| 질문마다 쉬운 대답 예시 2개 | 왕초보는 영어 문장을 지어낼 수 없어서, 고르고 따라 하게 해야 입이 열린다 |
| 한국어 뜻과 모를 만한 단어를 항상 같이 | 뜻을 모르면 듣기가 그냥 소음이 된다 |
| 글자를 바로 보여 줌 (설정에서 "소리 먼저"로 바꿀 수 있음) | 어른은 글자를 같이 볼 때 소리를 더 잘 잡는다 |
| 마이크 2개 (한 / EN) | 브라우저 음성 인식은 한 번에 한 언어만 알아듣는다 |
| 한국어 신호와 영어를 다른 목소리로 나눠 읽기 | 한 목소리로 읽으면 영어 목소리가 한국어를 읽어 버린다 |
| 틀린 말은 지적 없이 맞는 문장으로 되받기 | 부담 없이 맞는 형태를 계속 듣게 된다 |
| 문법 대신 통째로 쓰는 틀 ("I'm ~", "I want ~") | 문법을 몰라도 바로 쓸 수 있다 |
| 마무리에서 뜻 보고 써 보기 + 다음 대화에서 복습 | 떠올려 보고, 날을 바꿔 다시 쓸 때 기억에 남는다 |
| 모델 이름을 설정에서 바꿀 수 있게 | 모델은 자주 바뀐다. 코드에 박혀 있으면 몇 달 뒤 멈춘다 |
src/
App.tsx 대화 흐름 (시작·주고받기·마무리·저장·임시 저장·뒤로 가기)
components/ 화면 조각 (시작 화면, 말풍선, 마이크 버튼, 설정·마무리·내 문장 노트·교육과정·옮기기 시트)
hooks/ React 도우미
lib/
curriculum.ts 교육과정: 단계별 규칙·단원·승급 기준 ← 난이도는 여기서 고친다
prompt.ts AI에게 주는 지시문 (교육과정 단계·단원을 끼워 넣는다)
gemini.ts Gemini 호출, 오류 안내, 응답 다듬기
speech.ts 말하기(음성 합성)·듣기(음성 인식)
text.ts 한/영 나누기, 문장 비교
session.ts 대화 한 번을 내 문장 노트·진도에 반영
storage.ts 설정·내 문장 노트·진도·임시 저장 (브라우저, 여러 탭 안전)
transfer.ts 다른 기기로 옮기기 코드 만들기·읽기
config.ts 기본 설정값
public/ 아이콘, 홈 화면 설치용 manifest
e2e/ 화면 흐름 테스트 (Playwright): 첫 실행·대화·세션·교육과정/내 문장 노트/옮기기·고친 문제 회귀, helpers.ts에 가짜 AI·마이크·스피커
AIza로 시작합니다.gemini-3.5-flash-lite, gemini-3.8-flash).src/lib/curriculum.ts의 그 단계 규칙을 고칩니다.