AI 时代的教育,应该颠覆传统的老师在台上讲,学生在台下听这一套形式。应该针对每个学生,根据兴趣,都设置不同的课程,每个学生因材施教。过去那套传统的教学方案效率太低。因此,我也开始对这方面进行了一些浅薄的探索。
麻辣凉茶最近开源了一个多维度评测的英语系统:
通过 Agent 对学生进行评分,深度融合 AI 功能,通过AI 对话 + 跟读练习 + 单词游戏 + 语音识别 + 智能评分,让英语口语练习更轻松高效。
只需要点个免费的🌟,完全免费取用,可以作为一个全栈的学习项目,也可以投入实际的应用中。
Github 地址: https://github.com/vancece/word-teacher
学生登录
场景选择
AI 对话
跟读练习
评分反馈
钉钉反馈通知
学生个人主页
管理后台
管理场景
管理班级
管理教师
管理学生进度
查看学生记录
学生进度分析
保卫城堡
钉钉游戏通知
🎯 产品定位
- 目标用户:英语学习者(学生、成人均适用)
- 核心场景:课后口语练习、假期自主学习
- 教学理念:沉浸式对话 + 即时反馈 + 鼓励式评价
✨ 核心功能
📱 学生端功能
🎙️ 英语跟读练习
- 句子朗读:跟读标准英语句子,练习发音
- AI 语音评分:实时分析发音质量,提供多维度评分
- 评分维度(1-5 星制):
- 🎵 语音语调 - 发音准确性和语调自然度
- 🌊 流利连贯 - 朗读流畅度和连贯性
- ✓ 准确完整 - 内容的准确性和完整性
- ❤️ 情感表现力 - 情感表达和感染力
- 逐句反馈:每句话即时显示评分和发音对比
- 进步追踪:记录每次跟读成绩,查看进步轨迹
🎯 AI 对话练习
- 生活化场景:问候打招呼、自我介绍、购物、餐厅点餐、数字颜色等贴近生活的对话场景
- AI 对话伙伴:友好的 AI 角色(Lily)与学生进行自然对话,每次练习 5 轮对话
- 语音 + 文字输入:支持语音录入或键盘输入,适应不同使用场景
- 实时翻译:AI 回复自动显示中文翻译,帮助理解
- 语音朗读:AI 回复自动朗读,帮助学生学习正确发音
⭐ 智能评分系统
- 多维度评分:
- 📖 语法准确度 (Grammar)
- 🗣️ 表达流利度 (Fluency)
- 💡 内容相关性 (Relevance)
- 🎯 努力程度 (Effort)
- 鼓励式反馈:每次练习结束后给出鼓励性评语和改进建议
- 1-5 星评级:直观展示练习表现
👤 个人中心
- 学习统计:对话练习次数、跟读练习次数、平均成绩
- 学习历史:按类型筛选查看所有练习记录
- 最佳成绩:展示对话和跟读的最佳表现
- AI 学习评价:智能分析学习情况,给出个性化建议
🎮 单词游戏
通过 4 种趣味小游戏帮助学生记忆单词,寓教于乐:
- 🎯 单词射击 (Word Shooter):射击飞行的单词气泡,锻炼反应和词汇辨识
- 🍳 美食餐车 (Spell):NPC 顾客点单,学生拼写单词"出餐",答对开心答错生气
- ⛏️ 黄金矿工 (Miner):控制矿工挖取单词宝石,在游戏中积累词汇
- 🃏 魔法配对 (Match):4×3 记忆配对游戏,匹配英文单词和中文释义
游戏特色:
- 每种游戏都有专属背景音乐(Web Audio API 程序化生成)
- 支持连击计分、错误追踪
- 游戏结果自动保存 + 钉钉通知老师
- 教师可在后台管理词包、查看游戏记录
👩🏫 教师管理后台
📊 数据仪表盘
- 学生总数、教师总数、班级总数统计
- 今日/本周练习数量统计
- 跟读完成情况和平均分
- 快速操作入口
👥 教师管理(仅管理员)
- 添加/编辑/删除教师账号
- 设置管理员权限
- 分配负责班级
🏫 班级管理
- 创建/编辑/删除班级
- 分配班级所属教师(支持多选)
- 查看班级学生列表
- 班级学生数量统计
👨🎓 学生管理
- 学生列表(按座位号排序)
- Excel 批量导入学生(支持座位号)
- 修改学生密码、编辑学生信息
- 查看学生详情和练习记录
- 删除学生(级联删除练习记录)
🎙️ 跟读记录
- 查看所有学生跟读练习记录
- 按状态筛选(已完成/未完成)
- 查看评分详情(语音语调、流利连贯、准确完整、情感表现力)
📚 场景管理
- 跟读场景:创建包含多个句子的跟读练习
- 对话场景:创建 AI 对话练习场景
- AI 补充功能:自动翻译句子、生成封面图
- 设置场景可见性(对学生隐藏/显示)
- 关键词(vocabulary)管理
- 自定义 AI 提示词(prompt)
🎮 词包与游戏管理
- 词包管理:创建/编辑/删除单词包,按游戏类型分类
- 单词编辑:为词包添加英文、中文、音标、难度等级
- 游戏记录:查看学生各游戏的完成记录和得分
- 错题追踪:查看学生拼错的单词列表
📈 进步追踪
- 班级整体学习趋势图表
- 学生个人进步追踪
- 优秀学员排行榜
- AI 学习总结报告
- 导出报告(Excel/PDF)
🔑 权限系统
| 角色 | 教师管理 | 班级管理 | 学生管理 | 跟读记录 | 场景管理 | 进步追踪 |
|---|---|---|---|---|---|---|
| 管理员 | ✅ 全部 | ✅ 全部 | ✅ 全部班级 | ✅ 全部记录 | ✅ 全部场景 | ✅ 全部班级 |
| 普通教师 | ❌ 不可见 | ✅ 负责班级 | ✅ 负责班级 | ✅ 负责班级 | ✅ 仅自己创建 | ✅ 负责班级 |
🛠️ 技术架构
word-teacher/ ├── frontend/ # 学生端前端 (Vite + React + TypeScript + SCSS) │ └── src/games/ # 单词游戏模块 (shooter/spell/miner/match) ├── admin/ # 管理后台前端 (Vite + React + TypeScript + SCSS) ├── backend/ # Node.js 后端 (Express + Prisma + MySQL) ├── agent/ # AI Agent 服务 (Qwen + DashScope API) └── pnpm-workspace.yaml前端技术栈
- React 19+ TypeScript
- Vite构建工具
- React Router路由管理
- SCSS样式
- Web Audio API录音功能 + 游戏音效/BGM 程序化生成
- SSE (Server-Sent Events)流式响应
- Canvas 2D游戏渲染(射击、矿工)
后端技术栈
- Node.js+ Express 5
- Prisma ORM+ MySQL
- JWT身份认证
- RESTful API+ SSE 流式接口
- Pino结构化日志
- express-rate-limit请求限流
AI 服务
- Qwen-Omni多模态对话 (支持语音输入+输出)
- Qwen-Plus翻译和文本生成
- Paraformer语音识别 (ASR)
- CosyVoice语音合成 (TTS)
- 流式处理实时响应
安全特性
- Rate Limiting:全局限流 + 登录接口严格限流
- Helmet:HTTP 安全头
- CORS:跨域白名单控制
- API Key 认证:服务间通信加密
- 请求超时:防止 AI 调用无限等待
🚀 本地开发环境
数据库配置 (MySQL)
| 配置项 | 值 |
|---|---|
| Host | localhost |
| Port | 3306 |
| Database | word_teacher |
| Username | root |
| Password | password |
连接字符串:
mysql://root:password@localhost:3306/word_teacher测试账号
| 角色 | 用户名 | 密码 | 说明 |
|---|---|---|---|
| 学生 | student001 | 123456 | 小明,三年级2班 |
| 老师 | teacher001 | 123456 | 王老师 |
JWT 配置
| 配置项 | 开发环境值 |
|---|---|
| JWT_SECRET | (至少32字符) |
| JWT_EXPIRES_IN | 7d |
🚀 快速启动
1. 安装依赖
pnpminstall2. 启动 MySQL
如果使用 Homebrew 安装的 MySQL:
brew services start mysql如果使用 Docker:
dockercompose up-dmysql3. 初始化数据库
cdbackendpnpmdb:push# 同步数据库结构pnpmdb:seed# 填充测试数据4. 配置环境变量
# backend/.env (参考 backend/.env.example)cpbackend/.env.example backend/.env# agent/.env (参考 agent/.env.example)cpagent/.env.example agent/.env# 修改 DASHSCOPE_API_KEY 为你的阿里云 API Key5. 启动开发服务器
# 启动所有服务(前端 + 后端 + AI Agent)pnpmdev# 或分别启动cdfrontend&&pnpmdev# 学生端 http://localhost:5173cdadmin&&pnpmdev# 管理后台 http://localhost:5174cdbackend&&pnpmdev# 后端 http://localhost:3001cdagent&&pnpmdev# Agent http://localhost:8000📱 使用流程
- 登录:使用学号密码登录
- 选择场景:在首页选择想要练习的对话场景
- 开始对话:AI 会先打招呼,然后等待你的回复
- 语音/文字输入:点击麦克风录音或切换到键盘输入
- 完成练习:5 轮对话后自动进入评分页面
- 查看评分:查看本次练习的评分和反馈
📂 API 端点
学生端 API
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/auth/login | 登录 |
| POST | /api/auth/register | 学生注册 |
| GET | /api/auth/me | 获取当前用户 |
| GET | /api/scenes | 获取场景列表 |
| POST | /api/dialogue/start/stream | 开始对话 (SSE) |
| POST | /api/dialogue/submit/workflow/stream | 提交回复 (SSE) |
| GET | /api/dialogue/history | 获取练习历史 |
| GET | /api/read-aloud/scenes | 获取跟读场景列表 |
| GET | /api/read-aloud/scenes/:id | 获取跟读场景详情 |
| POST | /api/read-aloud/submit | 提交跟读录音评分 |
| POST | /api/read-aloud/save-result | 保存评分结果 |
| GET | /api/word-packs | 获取单词包列表 |
| GET | /api/word-packs/:id | 获取单词包详情 |
| POST | /api/word-game/result | 上报游戏结果 |
管理后台 API (需要 TEACHER/ADMIN 角色)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/admin/stats | 获取统计数据 |
| GET | /api/admin/students | 获取学生列表 |
| GET | /api/admin/students/:id | 获取学生详情及成绩 |
| GET | /api/admin/read-aloud-records | 获取跟读记录列表 |
| GET | /api/admin/read-aloud-scenes | 获取跟读场景列表 |
| POST | /api/admin/read-aloud-scenes | 创建跟读场景 |
| PUT | /api/admin/read-aloud-scenes/:id | 更新跟读场景 |
| DELETE | /api/admin/read-aloud-scenes/:id | 删除跟读场景 |
| GET | /api/admin/scenes | 获取对话场景列表 |
| POST | /api/admin/scenes | 创建对话场景 |
| PUT | /api/admin/scenes/:id | 更新对话场景 |
| DELETE | /api/admin/scenes/:id | 删除对话场景 |
| GET | /api/admin/word-packs | 获取词包列表 |
| POST | /api/admin/word-packs | 创建词包 |
| PUT | /api/admin/word-packs/:id | 更新词包 |
| DELETE | /api/admin/word-packs/:id | 删除词包 |
| GET | /api/admin/word-game-records | 获取游戏记录 |
🎨 界面预览
学生端
- 首页:场景选择卡片,展示各种对话和跟读场景
- 对话页:聊天界面 + 可爱的动物助手动画
- 跟读页:句子朗读练习 + 语音评分反馈
- 评分页:星级评分 + 分项得分 + 鼓励评语
管理后台
- 仪表盘:数据统计卡片 + 快速操作入口
- 学生管理:学生列表 + 详情弹窗 + 进步追踪
- 跟读记录:练习记录表格 + 筛选过滤
- 场景管理:跟读/对话场景卡片 + 编辑操作
部署架构
┌─────────────────┐ │ Nginx │ │ (SSL/反向代理) │ └────────┬────────┘ │ ┌────────────────────┼────────────────────┐ │ │ │ ▼ ▼ ▼ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ Frontend │ │ Backend │ │ Admin │ │ (静态文件) │ │ (Node.js) │ │ (静态文件) │ │ /teacher-test│ │ :3001 内网 │ │/teacher-admin │ └───────────────┘ └───────┬───────┘ └───────────────┘ │ ┌───────┴───────┐ │ │ ▼ ▼ ┌───────────┐ ┌───────────┐ │ MySQL │ │ Agent │ │ :3306 │ │ :8000 │ └───────────┘ └───────────┘快速部署(手动)
# 1. 生成密钥openssl rand-base6448# JWT_SECRETopenssl rand-hex32# AGENT_API_KEY# 2. 构建pnpmbuild# 3. 使用 PM2 启动pm2 start backend/dist/index.js--namebackend pm2 start agent/dist/index.js--nameagent🔄 GitHub Actions 自动部署(CI/CD)
本项目支持通过 GitHub Actions 实现推送即部署:
- Fork 本仓库
- 在Settings → Secrets and variables → Actions中配置以下 Secrets:
| Secret | 说明 |
|---|---|
SERVER_HOST | 服务器 IP |
SERVER_SSH_KEY | SSH 私钥 |
DOCKER_PASSWORD | Docker Hub Token |
MYSQL_ROOT_PASSWORD | MySQL root 密码 |
MYSQL_PASSWORD | MySQL 应用密码 |
JWT_SECRET | JWT 签名密钥 |
AGENT_API_KEY | Agent API 密钥 |
DASHSCOPE_API_KEY | 阿里云 AI API Key |
- 在Variables中添加
DOCKER_USERNAME(你的 Docker Hub 用户名) - 推送代码到
master分支即可自动部署 🚀
欢迎您的贡献,让教育少一点瓶颈~
Github 地址: https://github.com/vancece/word-teacher
掘金主页:https://juejin.cn/user/4380873673177646/posts