Skip to content

Repository files navigation

🌱 萌芽学前 · 小程序版

3–6 岁儿童幼小衔接全科启蒙 · 纯离线 · 零广告 · 数据仅存本机

WeChat Mini Program Offline First No Ads Privacy Tests

License Age Platform JavaScript PRs Welcome

面向 3–6 岁儿童的「幼小衔接全科启蒙」微信小程序。四大主学科:拼音 / 加减法 / 英语 / 古诗

主打:无广告 · 无内购 · 离线可用 · 数据仅存本机

界面预览

首页 拼音 英语 古诗 家长看板

发布版本

  • 当前版本v1.0.0
  • 发布备注:萌芽学前首发完整版本:拼音、加减法、英语、古诗启蒙,支持离线语音、护眼提醒、多宝贝进度、家长看板与儿童友好交互。

运行

  1. 微信开发者工具 导入本项目目录。
  2. AppID:wxf10d01c1af4498e1(或替换为你自己的测试号)。
  3. 点击「编译」即可在模拟器运行;点「预览」扫码在真机体验。
  4. 语音朗读为内置离线音频,无需任何配置即可使用(见下文「语音朗读」章节)。

目录结构

app.js                入口:全局状态 + 跨页面护眼计时器(每秒 tick)
app.json              页面注册、窗口样式
app.wxss              全局样式(CSS 变量设计系统)
components/eye-rest   护眼倒计时弹窗组件(20 秒)
pages/
  home/               首页:四学科卡片(掌握率环)+ 今日时长 + 星星
  pinyin/             拼音:声母/韵母/整体认读/拼读测验
  math/               加减法:6 关闯关(10/20 以内,每关答对 5 题通关)
  english/            英语分类入口
  englishWords/       单词学习 + 配对小游戏
  poems/  poemDetail/ 古诗列表 / 详情(逐句跟读 + 填空)
  parent/             家长看板:掌握率 + 薄弱项 + 学习报告 + 重置
  settings/           设置:护眼时长 / 声音 / 宝贝管理 / 数据导出
  children/           切换 / 新增宝贝
utils/
  store.js            单一数据源(多宝贝 / 进度 / 设置,纯本地存储)
  data.js             静态内容库(拼音 / 数学关卡 / 英语词汇 / 古诗)
  speak.js            语音朗读(内置离线音频,文本→音频映射播放)
  util.js             随机工具(shuffle / pick / ri)
assets/audio/         离线音频包(229 条 m4a,约 1.6MB,16kbps 压缩适配主包 2MB 限制)
  pinyin/english/poems/math/feedback   按学科分目录
utils/audio-map.js     音频清单(key → 文件路径,微信运行时可 require 的 JS 模块)
scripts/
  gen-audio.js        音频生成脚本(edge-tts,按需重生成)
  convert-audio.js    音频转码脚本(mp3→16k m4a,缩小主包体积)

数据模型

所有数据存于 wx.getStorageSync('mengya_app_v1'),结构:

{
  children: [{
    id, name, avatar, stars, totalSeconds,
    today: { date, seconds },
    progress: {
      pinyin:  { learned: { "声母:b": true, ... } },
      math:    { solved, correct, streak, weak, levelCorrect, cleared },
      english: { learned: { "color:red": true, ... } },
      poems:   { learned: { "yongE": true, ... } }
    }
  }],
  current: <childId>,
  settings: { dailyLimitMin: 25, sessionMin: 20, sound: true }
}
  • math.cleared:已通关关卡 id 集合;math.levelCorrect:每关累计答对数(满 5 通关)。
  • math.weak:错题 key 集合(如 "3+2"),家长看板展示。

核心机制

  • 护眼计时app.js 全局 ticker 每秒轮询。当处于学习页(pinyin/math/english/englishWords/poems/poemDetail)且未休息/未封顶时,累加今日时长。到「单次时长」弹 eye-rest 休息窗(20 秒);到「每日上限」弹封顶提示回首页。
  • 多宝贝:每个宝贝独立进度与星星;parent/settings/children 三入口均可管理。
  • 激励:学会/答对得星星;数学连答对 5 题通关;古诗填空、英语配对等小游戏。

语音朗读(内置离线音频)

utils/speak.js 播放预生成的离线音频包,受设置项「声音」开关控制。链路:speak(text) → 文本映射 → 音频文件 → InnerAudioContext 播放

个人主体小程序无法使用微信同传插件,云开发方案又需联网+计费,故采用预生成离线音频:纯离线、零运行成本、真机即时生效。共 229 条 m4a 音频(约 1.6MB,16kbps 压缩以适配主包 2MB 限制),置于主包 assets/audio/,用相对路径访问。音色为微软 Azure 神经网络音色(edge-tts 生成),中文自然度远超系统 TTS。

覆盖范围

类型 条数 来源
拼音字母/音节 63 声母 23 + 单韵母 6 + 复韵母 9 + 鼻韵母 9 + 整体认读 16
拼读例字 34 声母+韵母拼出的汉字(八/妈/哥…)
英语单词 50 6 大分类词汇
古诗整首 10 每首完整朗读
古诗逐句 40 逐句跟读
数学数字 0-20 21 中文读法(10→「十」、20→「二十」),备用
数学运算词 5 加/减/等于/等于几/再算算(备用)
通用反馈词 6 答对啦/不对再算算/正确/再试试/学会啦/再想想

数学算式不朗读(避免预生成数百条算式音频膨胀包体),仅保留答对/答错反馈音。数字朗读用中文读法,避免「10」被念成「一零」。

重新生成音频(可选)

音频由 scripts/gen-audio.jsedge-tts(微软 Azure 神经网络 TTS)生成,音色 zh-CN-XiaoxiaoNeural(晓晓)/ en-US-AriaNeural,语速 -10%。生成时联网(调微软服务,无需密钥),生成完打包进小程序后运行时纯离线。如需调整音色/语速或新增内容:

# 前置:安装 edge-tts(联网调用微软 TTS,无需密钥)
pip3 install --user edge-tts
# 1. 生成音频(edge-tts 输出 48kbps mp3,已存在且非空的跳过;0字节或缺失的自动重试3次)
node scripts/gen-audio.js
# 2. 转码压缩(mp3→16kbps m4a,缩小体积以适配主包 2MB 限制;同步更新 audio-map.js)
node scripts/convert-audio.js
# 修改 gen-audio.js 里的 ZH_VOICE / EN_VOICE / RATE 后重跑可换音色或语速
# 拼音字母用带调拼音符号朗读(见 scripts/pinyin-read.js),统一一声平调适合儿童启蒙

注意:生成时需联网。ü 单字母 edge-tts 偶发超时,脚本用同音字「迂」兜底。可选音色见 edge-tts --list-voices

开发

npm install      # 安装开发依赖(eslint)
npm test         # 运行 store.js 单元测试(Node 18+ 内置 node:test)
npm run lint     # 静态检查
  • 测试:tests/store.test.js,用内存桩替换 wx.*Storage,无需小程序环境。
  • Lint:.eslintrc.json,轻量规则聚焦真实 bug(未定义、重复声明、不可达代码等)。

已知限制

  • 纯离线、无后端;数据仅存本机,换设备/清缓存会丢失(settings 页可导出 JSON 备份)。
  • 语音朗读为预生成离线音频,仅覆盖 data.js 中的固定内容;动态文本(如未来新增的内容)无音频时会静默,需重跑 scripts/gen-audio.js 并执行 scripts/convert-audio.js 补齐。
  • 音色为微软 Azure 神经网络音色(edge-tts 生成),生成时需联网;小程序运行时完全离线。
  • 音频约 1.6MB 置于主包,16kbps 压缩以适配主包 2MB 限制;音质略有损失但人声清晰可懂。

许可证

本项目基于 MIT License 开源,可自由使用、修改与分发。欢迎 Fork 与二次开发。

About

3–6 岁幼小衔接全科启蒙微信小程序 · 拼音/加减法/英语/古诗 · 纯离线 · 无广告无内购 · 数据仅存本机

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages