Record Learn 课程体系最终规划
发布于 2026/6/7
Record Learn 课程体系最终规划
版本:v2.0 | 日期:2026-06-12 | 替代courses-plan.md与course-lrc-mp3.md
>
v2.0 更新:重新规划 4 册课程架构,新增 VOA 节目链接目录,修正 Book 3/4 内容混杂问题。
一、决策审查:VOA 取代新概念英语(NCE)是否合理?
1.1 NCE 不可用的根因
| 问题 | 详细 |
|---|---|
| 版权归属 | NCE 版权归 Longman/Pearson 所有,课文原文展示、二次分发均属侵权 |
| 商业化阻断 | App Store / 小程序上架 / 订阅收费均会触发版权核查,不可通过审核 |
| 授权路径不存在 | Pearson 不对个人开发者 / 小团队授权,大厂授权周期 6–18 个月,费用不可控 |
| 内容陈旧 | NCE 场景以 1960–80 年代英国生活为背景,大量表达已不自然(如 trunk call、gramophone) |
结论:NCE 不可用是事实而非选择。必须找替代方案。
1.2 VOA 作为替代的决策质量检查
| 维度 | VOA Learning English | 新概念英语 |
|---|---|---|
| 版权 | ✅ 公共领域(美国联邦政府作品),可商用、可裁剪、可重发布 | ❌ Pearson 版权所有 |
| 资源完整性 | ✅ 每集自带 MP3 + 脚本 + 视频 | ⚠️ 仅有课文文本,MP3 需单独获取(同样涉版权) |
| 音频质量 | ✅ 真人专业录音,各种口音 | ✅ 专业录音(但授权问题) |
| CEFR 梯度 | ✅ A1→C1 完整覆盖(Let's Learn English L1→American Stories) | ✅ A1→C1 |
| 语法系统性 | ⚠️ 非语法教材设计,需人工遴选 + 重排 | ✅ 精心设计的语法递进 |
| 口语真实性 | ✅ 真实对话、新闻、故事 | ⚠️ 部分课文为教材编造,不够自然 |
| 文化适配性 | ⚠️ 美国文化语境为主 | ⚠️ 英国文化语境为主 |
| 可用集数 | ✅ 200+ 集可自由选择 | ⚠️ 仅 4 册,不可增删 |
1.3 VOA 的最大短板及补偿策略
短板:VOA 不是语法教材,语法点分布不够系统性。
补偿策略:
- 人肉遴选:从 52 集 L1 中精选 36 集,按 NCE 1 语法递进重新排序为 6 个单元
- 知识点层:每课
grammar.points+knowledgePoints补充系统性语法教学 - Quiz 验证:每课 3–5 道客观题验证学习效果
- AI 精讲:学习中实时生成语法解释(
/api/ai/explain) - 长期替代:Book 2–4 同理,L2 选集 + Everyday Grammar TV 填补语法空白
1.4 决策结论
✅ 通过 VOA 全资源线取代 NCE 4 册 = 合理且是最优选择
理由:
1. 版权无风险 — 零审查、零授权、零诉讼,可放心打包 H5 静态资源
2. 资源无死角 — 每课都有真人 mp3 → 直接对接项目 mp3+lrc 结构
3. 梯度可解释 — A1→C1,对标新概念 4 级定位清晰
4. 语法可补 — 通过人工 knowledgePoints + AI 精讲弥补非教材设计短板
5. 维护可持续 — VOA 持续更新,后续可追新内容
二、4 本书体系最终架构(v2.0 重规划)
2.0 设计原则
v1.0 的主要问题:
- Book 3 内容混杂:将 People in America(人物传记)、Words and Their Stories(习语)、Education Tips(学习方法)三种完全不同类型的节目塞进同一册,缺乏统一的学习主线。
- Book 4 跳跃过大:从杂乱的 B1-B2 内容直接跳到 American Stories 文学改写 + 新闻长文,过渡不够平滑。
- 强行对标 NCE:VOA 不是语法教材,按 NCE 语法递进逻辑去排列 VOA 内容是削足适履。
v2.0 设计原则:
- 每册有清晰的学习主题,而非按 NCE 语法体系强行映射
- 发挥 VOA 原生优势:真实对话、地道习语、文化语境、新闻听力
- 语法通过 Everyday Grammar TV 专题补充,而非期待对话课自带系统性语法
- 统一每册 48 课,便于用户规划学习节奏
- 实际可落地:优先使用仍在更新、有充足集数的节目
2.1 总体映射
| 本项目 Book | CEFR | 学习主题 | 主资源 | 课数 | 每课形态 |
|---|---|---|---|---|---|
| rl-book-1 | A1–A2 | 🗣️ 会话基础 | Let's Learn English Level 1(精选 48 集) | 48 | 情景对话短片 + 词汇 + 理解 |
| rl-book-2 | A2–B1 | 📝 语法与表达 | LLE Level 2(30 集)+ Everyday Grammar TV(18 集) | 48 | 情景剧 + 语法专题 |
| rl-book-3 | B1–B2 | 📖 词汇与文化 | Words and Their Stories + English in a Minute + News Words | 48 | 习语故事 / 词汇短片 + 文化注解 |
| rl-book-4 | B2–C1 | 🎙️ 深度听力 | American Stories + 人物/科技/健康专题 | 48 | 短篇小说 / 传记 / 科普长文 |
rl-starter(Aesop 两课)保留为「经典故事」附录,不占用主线课号。
2.2 为什么这样设计?
Book 1 — 会话基础(A1–A2)
↓ 学会开口说英语,掌握基本日常对话
Book 2 — 语法与表达(A2–B1)
↓ 系统补齐语法,能用正确句子表达观点
Book 3 — 词汇与文化(B1–B2)
↓ 大量输入地道习语、词汇搭配、文化背景
Book 4 — 深度听力(B2–C1)
↓ 用真实语料(小说、传记、科普)挑战长篇听力
这条路径的核心逻辑是:先敢说 → 再说对 → 再说得地道 → 最后听懂一切。这比强行对标 NCE 的语法递进体系更适合 VOA 的内容特点。
2.3 rl-book-1:会话基础(48 课)
核心资源:Let's Learn English Level 1(共 52 集,精选 48 集)
备选资源:Let's Learn English with Anna(2022+ 新版,制作更精良,但集数较少)
| 单元 | 课次 | 主题 | 核心能力 |
|---|---|---|---|
| U1 初次见面 | 001–008 | 问候、介绍、告别、问路 | be 动词、人称代词、Where/What 问句 |
| U2 个人与家庭 | 009–016 | 家庭、社区、爱好、数量 | there be、物主代词、like + V-ing |
| U3 日常生活 | 017–024 | 时间、工作、邀约、能力 | 现在进行时、can/can't、at + 时间 |
| U4 计划与过去 | 025–032 | 将来计划、过去经历、讲故事 | will/be going to、was/were、-ed 规则过去 |
| U5 场景交际 | 033–040 | 购物、问路、礼貌、比较 | 比较级、too/very、would you mind |
| U6 综合输出 | 041–048 | 建议、情态、综合复述 | should/must/have to、综合复习 |
注意:上表中的 L1 集号可能需根据实际遴选调整。旧文档中的 36 课课表(L1.E2–E52)可作为初筛参考。
关于 L1.E1:欢迎视频无对话文稿,不作为正式课。实际可用 51 集,选 48 集。
2.4 rl-book-2:语法与表达(48 课)
核心资源:Let's Learn English Level 2(30 集)+ Everyday Grammar TV(18 集)
| 单元 | 课次 | 对话课 | 语法专题 | 核心语法 |
|---|---|---|---|---|
| U1 工作与学习 | 001–008 | L2.E1–5 | Grammar ×3 | 时态复习、现在完成时 |
| U2 旅行与交通 | 009–016 | L2.E6–10 | Grammar ×3 | 介词搭配、短语动词 |
| U3 健康与饮食 | 017–024 | L2.E11–15 | Grammar ×3 | 数量词、比较级进阶 |
| U4 人际与情感 | 025–032 | L2.E16–20 | Grammar ×3 | 条件句(if/when/unless) |
| U5 社会与文化 | 033–040 | L2.E21–25 | Grammar ×3 | 间接引语、情态动词进阶 |
| U6 语法巩固 | 041–048 | L2.E26–30 | Grammar ×3 | 被动语态、关系从句、综合练习 |
每单元结构:5 集情景对话(每个约 5 分钟)+ 3 集语法专题(每个约 2–3 分钟)。
为什么 LLE Level 2 只有 30 集?
VOA LLE Level 2 共 30 集,不足 48 课。补 18 集 Everyday Grammar TV 专题,正好构成「对话 + 语法」搭配。这比 v1.0 只补 6 集语法更充分。
2.5 rl-book-3:词汇与文化(48 课)
核心资源:
- Words and Their Stories(24 集)
- English in a Minute(12 集)
- News Words(12 集)
| 单元 | 课次 | 主轴 | 内容 |
|---|---|---|---|
| U1 日常习语 | 001–012 | Words and Their Stories ×8 + English in a Minute ×4 | 高频习语、比喻、谚语 |
| U2 商业与职场 | 013–024 | Words and Their Stories ×8 + English in a Minute ×4 | 职场用语、商务习语 |
| U3 新闻词汇 | 025–036 | News Words ×8 + Words and Their Stories ×4 | 时事词汇、新闻标题用语 |
| U4 文化深读 | 037–048 | Words and Their Stories ×4 + English in a Minute ×4 + News Words ×4 | 文化典故、综合词汇复习 |
为什么这样设计?
- v1.0 将 People in America(人物传记)放进 Book 3 不合适——传记属于长篇听力,应放到 Book 4。
- Book 3 的定位是「词汇量爆发期」。B1-B2 阶段最需要的是大量输入地道表达,而非挑战长文。
- Words and Their Stories 每集约 4-6 分钟,讲解一个习语的文化来源,天然适合做「1 个习语 = 1 课」的单元。
- English in a Minute 每集仅 1 分钟,News Words 每集约 2 分钟,适合作为调剂/补充。
2.6 rl-book-4:深度听力(48 课)
核心资源:
- American Stories(24 集,每集约 13-15 分钟)
- 人物/历史专题(12 集):America's Presidents、U.S. History 或 Arts & Culture
- 科普专题(12 集):Science & Technology + Health & Lifestyle
| 单元 | 课次 | 主轴 | 内容 |
|---|---|---|---|
| U1 短篇小说 | 001–012 | American Stories ×12 | 经典美国短篇故事(O. Henry、Mark Twain 等) |
| U2 人物传记 | 013–024 | 人物专题 ×8 + American Stories ×4 | 美国总统、历史人物、艺术家 |
| U3 科普世界 | 025–036 | Science & Technology ×6 + Health & Lifestyle ×6 | 科技新闻、健康科普 |
| U4 故事续篇 | 037–048 | American Stories ×8 + 综合专题 ×4 | 更多文学故事 + 综合复习 |
为什么这样设计?
- v1.0 把 People in America 放在 Book 3 不合理。人物传记是长篇叙事,需要 B2+ 听力水平。
- American Stories 是 VOA 的王牌节目之一,每集 13-15 分钟、用 1500 词表改写美国文学经典。它天然适合做 Book 4 的主轴。
- 科普专题(Science & Technology / Health & Lifestyle)对标 NCE 4 的说明文/论述文风格。
- 注意:People in America 在 VOA 网站上的独立页面似乎在改版后不太容易找到。必要时用 America's Presidents 或 U.S. History 替代。
2.7 与 NCE 的定位对照
| NCE 原版 | Record Learn(VOA 体系) | |
|---|---|---|
| Book 1 | 对话 → 语法 → 句型操练(144 课) | 会话短片 + 词汇理解(48 课) |
| Book 2 | 短文 + 语法关键句型(96 课) | 情景剧 + 语法专题视频(48 课) |
| Book 3 | 中长文章 + 写作技巧(60 课) | 习语故事 + 词汇积累(48 课) |
| Book 4 | 长篇论述/文学(48 课) | 短篇小说 + 科普/传记(48 课) |
| 语法教学 | 内嵌于课文,系统递进 | Everyday Grammar TV 专题补充 |
| 版权 | ❌ Pearson 私有 | ✅ 公共领域 |
| 音频 | 需单独购买 | 每课自带官方 MP3 |
| 现代性 | 1960-80 年代英国 | 2016-至今美国 |
坦率地说:VOA 体系无法完美复刻 NCE 的语法递进精度——因为 VOA 本来就不是语法教材。但换一个角度,VOA 在听力输入量、口语真实性、文化沉浸感上远超 NCE。这是两种不同的学习哲学:NCE 是"精学语法 → 辅助阅读",VOA 体系是"大量输入 → 语法补漏"。
三、VOA 学习节目完整链接目录 🆕
3.1 视频节目(Video Programs)
| 节目名称 | 用途 | Book | 链接 |
|---|---|---|---|
| Let's Learn English - Level 1 | 初级情景对话(52 集) | Book 1 | <https://learningenglish.voanews.com/p/5644.html> |
| Let's Learn English with Anna | 新版初级对话(2022+) | Book 1 备选 | <https://learningenglish.voanews.com/p/8326.html> |
| Let's Learn English - Level 2 | 中级情景剧(30 集) | Book 2 | <https://learningenglish.voanews.com/p/6765.html> |
| Everyday Grammar TV | 语法专题视频 | Book 2 | <https://learningenglish.voanews.com/z/4716> |
| English in a Minute | 1 分钟习语短片 | Book 3 | <https://learningenglish.voanews.com/z/3619> |
| English @ the Movies | 电影台词学英语 | 补充 | <https://learningenglish.voanews.com/z/4691> |
| News Words | 新闻词汇短片 | Book 3 | <https://learningenglish.voanews.com/z/3620> |
| How to Pronounce | 发音教学 | 补充(全级别) | <https://learningenglish.voanews.com/z/6042> |
| Let's Teach English | 教师资源 | 内部参考 | <https://learningenglish.voanews.com/p/6764.html> |
| News Literacy | 新闻素养 | 补充 | <https://learningenglish.voanews.com/p/6840.html> |
3.2 音频节目(Audio Programs)
| 节目名称 | 用途 | Book | 链接 |
|---|---|---|---|
| American Stories | 短篇小说(每集 ~13 分钟) | Book 4 | <https://learningenglish.voanews.com/z/1581> |
| Words & Their Stories | 习语故事(每集 ~5 分钟) | Book 3 | <https://learningenglish.voanews.com/z/987> |
| Arts & Culture | 文化艺术 | Book 4 备选 | <https://learningenglish.voanews.com/z/986> |
| Health & Lifestyle | 健康生活 | Book 4 | <https://learningenglish.voanews.com/z/955> |
| Science & Technology | 科学技术 | Book 4 | <https://learningenglish.voanews.com/z/1579> |
| America's Presidents | 美国总统传记 | Book 4 备选 | <https://learningenglish.voanews.com/p/6766.html> |
| U.S. History | 美国历史 | Book 4 备选 | <https://learningenglish.voanews.com/p/6353.html> |
| Education Tips | 学习技巧 | 补充 | <https://learningenglish.voanews.com/z/7468> |
| Ask a Teacher | 语法/用法问答 | 补充 | <https://learningenglish.voanews.com/z/5535> |
| Everyday Grammar(音频版) | 语法讲解 | 补充 | <https://learningenglish.voanews.com/z/4456> |
| As It Is | 时事短讯 | 补充 | <https://learningenglish.voanews.com/z/3521> |
| VOA Learning English Podcast | 每日播客 | 补充 | <https://learningenglish.voanews.com/z/1689> |
3.3 分级入口
| 级别 | 链接 |
|---|---|
| Beginning Level | <https://learningenglish.voanews.com/p/5609.html> |
| Intermediate Level | <https://learningenglish.voanews.com/p/5610.html> |
| Advanced Level | <https://learningenglish.voanews.com/p/5611.html> |
3.4 辅助资源
| 资源 | 链接 |
|---|---|
| VOA Learning English 首页 | <https://learningenglish.voanews.com/> |
| YouTube 频道 | <https://www.youtube.com/voalearningenglish> |
| Learning English Word Book(PDF 词表) | <https://docs.voanews.eu/en-US-LEARN/2022/06/07/c4dbd6af-5f63-4f28-bc42-0bd175f4e4b4.pdf> |
| 播客订阅 | <https://learningenglish.voanews.com/podcasts> |
| RSS Feeds | <https://learningenglish.voanews.com/rssfeeds> |
⚠️ 注意:VOA 网站在中国大陆可能被墙。脚本voa-fetch.js内置STATIC_HOST_MAP静态 IP + PowerShell WinHTTP 后备方案。
四、生产管线
3.1 机械化层(脚本自动化,零人工)
plan.json(一课一行)
│
▼
voa-fetch.js ─→ mp3/(下载音频)
─→ transcript/(抽取结构化台词 JSON)
─→ lrc/(按词数比例生成初版 LRC)
│
▼ (可选优化)
align-lrc.js ─→ lrc/(ffmpeg 静音检测精调,需安装 ffmpeg)
align-lrc-whisper.js ─→ lrc/(Whisper 词级时间戳,需安装 whisper,最准)
│
▼
gen-lesson-skeleton.js ─→ lessons/book1/group1.js(自动生成骨架,句子文本已填好)
3.2 人工层(需手写,每课约 15-20 分钟)
lesson 骨架
│
▼ 人工补充
├─ sentences[].cnText ← 中文翻译
├─ translation ← 课文中文概述
├─ knowledgePoints[] ← 核心单词 / 短语 / 语法点
├─ grammar.points[] ← 语法讲解 + 例句
├─ grammar.keySentences[] ← 关键句型
├─ quiz[] ← 3-5 道理解题
├─ summaryQA[] ← 2-5 道回答复述题
└─ grammarNote ← 一句话语法说明
3.3 注册层(脚本辅助)
subjects.js update-locally ← 自动更新 totalLessons
lessons/index.js ← import book1/group1 + 拼合(人工维护)
五、一课完整制作清单(8 步)
| 步 | 操作 | 谁 | 耗时 |
|---|---|---|---|
| 1 | 在 plans/rl-book-1.json 追加 lesson 行 | 管理员 | 1 分钟 |
| 2 | node voa-full-build.js plans/rl-book-1.json | 自动 | 30 秒 |
| 3 | 在 lessons/book1/group1.js 补 cnText + knowledgePoints + quiz | 管理员/AI | 15 分钟 |
| 4 | 核验 lrc 首句与音频对齐(拖进度条验证) | 管理员 | 2 分钟 |
| 5 | 需要时运行 align-lrc.js 或 align-lrc-whisper.js 精调 LRC | 管理员 | 1 分钟 |
| 6 | 运行 node voa-full-build.js --update-subjects 更新 totalLessons | 自动 | 1 秒 |
| 7 | pnpm dev → H5 页面冒烟自测(mp3 播放、LRC 高亮、翻译显示、quiz 作答) | 管理员 | 3 分钟 |
| 8 | 通过后发布 | — | — |
5.2 手工制作模式(全人工,无需脚本)
当你无法运行自动化脚本(如 VOA 被墙、ffmpeg/whisper 未安装),或只想逐课精细打磨时,可按以下流程手工制作一课。
#### 5.2.1 一课需要哪些文件?
| 文件 | 路径(以 book1 为例) | 说明 |
|---|---|---|
| MP3 音频 | frontend-record-learn/src/static/data/book1/mp3/{id}-{slug}.mp3 | 课文音频,手动下载或用工具抓取 |
| LRC 字幕 | frontend-record-learn/src/static/data/book1/lrc/{id}-{slug}.lrc | 句级时间戳,手工打轴或用工具生成 |
| Transcript JSON | frontend-record-learn/src/static/data/book1/transcript/{id}-{slug}.json | 结构化台词元数据(可选,供参考/归档) |
| Lesson 数据 | frontend-record-learn/src/static/data/lessons/book1/group{N}.js | 前端使用的完整课程对象,含翻译、知识点、quiz 等 |
#### 5.2.2 手工制作步骤(以 rl-b1-001 为例)
##### 步骤 1:准备 MP3 音频
从 VOA 或其他来源下载音频文件,放到指定目录:
frontend-record-learn/src/static/data/book1/mp3/rl-b1-001-hello.mp3
- 建议比特率 128kbps,单声道即可
- 文件名格式:
{lessonId}-{slug}.mp3 - 如果使用 CDN/对象存储,需修改
audioSrc为完整 URL
##### 步骤 2:制作 LRC 字幕文件
LRC 是纯文本文件,每行一个时间戳 + 一句台词。格式如下:
[ti:Lesson 2: Hello, I'm Anna!]
[ar:Voice of America Learning English]
[al:Let's Learn English]
[by:manual]
[00:01.10]Jonathan: Hey, Pete! Who's your friend?
[00:04.20]Pete: She is Anna. She is new to D.C.
[00:07.12]Jonathan: Where are you from?
[00:08.12]Anna: I am from a small town.
放到:
frontend-record-learn/src/static/data/book1/lrc/rl-b1-001-hello.lrc
打轴工具建议:
- Aegisub(免费,macOS/Windows):导入 MP3 + 台词文本,手动拖拽打轴,导出
.srt后转换为.lrc - Whisper(自动化):
whisper audio.mp3 --model small --word_timestamps True,然后从输出中提取时间戳 - 在线工具:如
lrc-maker等,一边听一边按快捷键标记时间
LRC 格式要点:
- 时间戳格式:
[mm:ss.cc](分钟:秒.百分秒)或[mm:ss.xx] - 元数据标签可选:
[ti:]标题、[ar:]艺术家/来源、[al:]专辑 - 每句一行,按时间升序排列
- 文本必须与后续 lesson 数据中的
sentences[].text完全一致(含 speaker 前缀)
##### 步骤 3:编写 Transcript JSON(可选)
此文件用于归档原始台词,供后续 AI 辅助生成参考。格式如下:
{
"id": "rl-b1-001",
"slug": "hello",
"voaUrl": "https://learningenglish.voanews.com/a/lets-learn-english-lesson-2-hello/3113733.html",
"srcMp3": "https://voa-audio.voanews.eu/vle/2016/02/10/xxx.mp3",
"title": "Lesson 2: Hello, I'm Anna!",
"durationSeconds": 48.0,
"fetchedAt": "2026-06-07T00:00:00.000Z",
"license": "public-domain",
"attribution": "Voice of America Learning English",
"lines": [
{ "speaker": "Jonathan", "text": "Hey, Pete! Who's your friend?" },
{ "speaker": "Pete", "text": "She is Anna. She is new to D.C." },
{ "speaker": "Jonathan", "text": "Where are you from?" }
]
}
放到:
frontend-record-learn/src/static/data/book1/transcript/rl-b1-001-hello.json
##### 步骤 4:编写 Lesson 数据对象(核心)
这是最核心的一步,需要手写完整的课程对象。在对应的 group 文件中添加一个 JavaScript 对象。
文件位置:
frontend-record-learn/src/static/data/lessons/book1/group1.js
完整示例(一课):
// group1.js 文件头部公共常量
const B = 'rl-book-1'
const S = 'english'
export const lessons = [
{
// ── 基础标识 ──
id: 'rl-b1-001', // 唯一 ID,与 plan.json 一致
bookId: B, // 对应 subjects.js 中 book.id
subjectId: S, // 对应 subjects.js 中 subject.id
stage: 1, // 1=Book1, 2=Book2, 3=Book3, 4=Book4
order: 1, // 课程序号(全书递增)
group: 'group1', // 分组标识
// ── 展示信息 ──
title: "Hello, I'm Anna!", // 英文标题
subtitle: '你好,我是安娜!', // 中文副标题
estimatedMinutes: 6, // 预估学习时长(分钟)
// ── 资源路径 ──
audioSrc: '/static/data/book1/mp3/rl-b1-001-hello.mp3',
lrcSrc: '/static/data/book1/lrc/rl-b1-001-hello.lrc',
// ── 逐句文本 + 翻译(必须与 LRC 文本一致)──
sentences: [
{ text: "Jonathan: Hey, Pete! Who's your friend?", cnText: '乔纳森:嘿,皮特!你的朋友是谁?' },
{ text: 'Pete: She is Anna. She is new to D.C.', cnText: '皮特:她是安娜。她是新来华盛顿特区的。' },
{ text: 'Jonathan: Where are you from?', cnText: '乔纳森:你来自哪里?' },
// ... 每句都需要 text(英文,与 LRC 完全一致)和 cnText(中文翻译)
],
// ── 课文概述翻译 ──
translation: '安娜刚搬到华盛顿,在公寓楼下遇到皮特和乔纳森。三人互相介绍...',
// ── 知识点(建议 ≥ 5 条)──
knowledgePoints: [
{
id: 'kp_b1_001_apartment', // 全局唯一 ID,建议格式:kp_b{册号}_{课号}_{单词}
bookId: B,
subjectId: S,
type: 'word', // 'word' | 'phrase' | 'grammar'
front: 'apartment', // 单词/短语正面
phonetic: '/əˈpɑːrtmənt/', // 音标
usPhonetic: '/əˈpɑːrtmənt/', // 美式音标(可选)
ukPhonetic: '/əˈpɑːtmənt/', // 英式音标(可选)
back: '公寓 (n.) 美式英语 / 英式英语常用 flat',
examples: [
{ en: 'I am in apartment C2.', cn: '我住 C2 公寓。' },
{ en: 'She moved into a new apartment.', cn: '她搬进了新公寓。' }
],
tags: ['rl-b1-001', 'noun', 'daily']
}
// ... 更多知识点
],
// ── 语法说明 ──
grammarNote: 'be 动词:I am / you are / he-she-it is。本课所有自我介绍都是这个结构。',
grammar: {
points: [
{
title: 'be 动词的人称变化',
explanation: '英语中"是"随主语变化:I→am;you/we/they→are;he/she/it→is。',
examples: [
{ en: 'I am Anna.', cn: '我是安娜。' },
{ en: 'She is new to D.C.', cn: '她是新来华盛顿的。' }
]
}
],
keySentences: [
{ en: 'I am from a small town.', cn: '我来自一个小镇。' }
]
},
// ── 课后测验(建议 3–5 题)──
quiz: [
{
question: 'Where is Anna from?',
options: ['A big city', 'A small town', 'Washington D.C.', 'New York'],
answer: 1, // 正确答案索引(0-based,即 options[1])
explanation: 'Anna 说 "I am from a small town." 所以她来自一个小镇。'
}
],
// ── 复述问答题(可选,2–5 题)──
summaryQA: [
{
question: 'Who does Anna meet at the apartment building?',
hint: 'She meets Pete and his friend...'
}
]
}
// ... 更多课追加在后面
]
关键约束:
sentences[].text必须与 LRC 文件中的台词文本逐字符一致knowledgePoints[].id必须全局唯一,建议格式kp_b{册}_{课号}_{词}quiz[].answer是options数组的索引(0-based),不是 A/B/C/Dgrammar.points[].examples和knowledgePoints[].examples格式相同:{ en, cn }summaryQA可选,留空数组[]亦可
##### 步骤 5:注册到 lessons/index.js
在 frontend-record-learn/src/static/data/lessons/index.js 中,确保你的 group 文件已被 import 并拼合:
import { lessons as b1g1 } from './book1/group1'
// 后续新增 group:
// import { lessons as b1g2 } from './book1/group2'
// import { lessons as b1g3 } from './book1/group3'
export const lessons = [...g1, ...g2, ...g3, ...g4, ...s1, ...b1g1 /*, ...b1g2, ...b1g3 */]
##### 步骤 6:更新 subjects.js 的 totalLessons
在 frontend-record-learn/src/static/data/subjects.js 中,找到对应 book,更新 totalLessons:
{
id: 'rl-book-1',
totalLessons: 3, // ← 每新增一课 +1;全部 36 课完成后改为 36
// ...
}
#### 5.2.3 快速参考:字段一览
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | string | ✅ | 全局唯一,格式 rl-b{册}-{3位序号} |
bookId | string | ✅ | 对应 subjects.js book.id |
subjectId | string | ✅ | 对应 subjects.js subject.id |
stage | number | ✅ | 1-4,对应 Book 1-4 |
order | number | ✅ | 全书递增序号 |
group | string | ✅ | 分组名,如 'group1' |
title | string | ✅ | 英文标题 |
subtitle | string | ✅ | 中文副标题 |
estimatedMinutes | number | - | 预估学习时长 |
audioSrc | string | ✅ | MP3 路径或 URL |
lrcSrc | string | ✅ | LRC 路径或 URL |
sentences | array | ✅ | [{ text, cnText }] |
translation | string | ✅ | 课文中文概述 |
knowledgePoints | array | - | 知识点数组 |
grammarNote | string | - | 一句话语法说明 |
grammar.points | array | - | 语法详解 |
grammar.keySentences | array | - | 关键句型 |
quiz | array | - | [{ question, options[], answer, explanation }] |
summaryQA | array | - | [{ question, hint }] |
#### 5.2.4 手工 vs 脚本对照
| 维度 | 自动化脚本 | 手工制作 |
|---|---|---|
| MP3 下载 | voa-fetch.js 自动下载 | 手动下载放到 mp3/ 目录 |
| LRC 生成 | voa-fetch.js 按词数比例 + align-lrc 精调 | Aegisub/Whisper 手工打轴 |
| Transcript | 自动抓取 VOA 页面解析 | 手工编写 JSON 或跳过 |
| Lesson 骨架 | gen-lesson-skeleton.js 自动生成 | 手工编写完整对象 |
| 中文翻译 | 人工补 | 人工编写 |
| Quiz/知识点 | 人工补 | 人工编写 |
| 适用场景 | 批量 10+ 课 | 逐课精磨 ≤ 5 课 |
六、资产目录约定
frontend-record-learn/src/static/data/
├── subjects.js # 学科 → Book 注册(totalLessons 需同步更新)
├── lessons/
│ ├── index.js # 总入口:import 各 group 并拼合
│ ├── book1/
│ │ ├── group1.js # Book 1 第 1–12 课(人工编制)
│ │ ├── group2.js # Book 1 第 13–24 课
│ │ └── group3.js # Book 1 第 25–36 课
│ ├── book2/ # Book 2(后续)
│ ├── nce2/ # 旧 NCE2 数据(过渡期保留)
│ └── starter/ # Aesop 寓言(保留)
├── book1/
│ ├── mp3/rl-b1-XXX-slug.mp3 # 音频文件
│ ├── transcript/rl-b1-XXX-slug.json # 结构化台词
│ ├── lrc/rl-b1-XXX-slug.lrc # 句级时间戳字幕
│ └── build-report.json # 最后一次构建报告
├── book2/ ... # 同结构
├── book3/ ...
└── book4/ ...
七、命名规范
- book_id:
rl-book-N(Record Learn Book N) - lesson_id:
rl-b<册号>-<3 位序号>,例rl-b1-001 - slug: 小写连字符英文短名,例
hello-im-anna - 文件命名:
{id}-{slug}.{ext},例rl-b1-001-hello-im-anna.mp3 - subjects.js:
rl-book-1展示名「Record Learn Book 1(新概念1 平替)」
八、质量验收标准(DoD)
每课上线前必须通过:
| 检查项 | 标准 |
|---|---|
| MP3 404 | 无 |
| LRC 404 | 无 |
| 跨域失败 | 无 |
| 首句对齐 | 音频开始 1.5 秒内首句 LRC 高亮出现 |
| 抽检精度 | 任意 10 句,LRC 高亮与人声误差 ≤ 300ms |
| 拖动恢复 | 拖进度条后,高亮句 1 句内恢复同步 |
| 文本一致性 | sentences 文本 = transcript.lines 文本 = LRC 文本 |
| 翻译完整性 | 每句 cnText 均已填写 |
| 知识点覆盖 | ≥ 5 条 knowledgePoints |
| Quiz 质量 | ≥ 3 题,每题 4 选项,答案正确,解释明晰 |
九、上线节奏(v2.0 更新)
| 批次 | 内容 | 课数 | 预计 |
|---|---|---|---|
| Batch A | rl-book-1 U1–U3(001–024) | 24 | 当前阶段 |
| Batch B | rl-book-1 U4–U6(025–048) | 24 | 紧随 |
| Batch C | rl-book-2 U1–U3(001–024) | 24 | 后续 |
| Batch D | rl-book-2 U4–U6(025–048) | 24 | 后续 |
| Batch E | rl-book-3 U1–U2(001–024) | 24 | 后续 |
| Batch F | rl-book-3 U3–U4(025–048) | 24 | 后续 |
| Batch G | rl-book-4 U1–U2(001–024) | 24 | 远期 |
| Batch H | rl-book-4 U3–U4(025–048) | 24 | 远期 |
总计:4 册 × 48 课 = 192 课。每批次 24 课,共 8 批次。
十、已知不一致与处理(v2.0 更新)
| 问题 | 处理 |
|---|---|
| VOA L1.E1 是 Welcome 视频,无对话文稿 | 不作为正式课。Book 1 共 51 集可用,选 48 集 |
| 旧文档将 Book 1 称为 rl-starter | 已统一为 rl-book-1,rl-starter 仅指 Aesop 附录 |
| 已上线 Aesop 两课 | 保留在 rl-starter → 作为「经典故事」附录,不占用主线课号 |
| 旧 NCE2 数据(96 课) | 过渡期保留,available: true 供现有用户继续使用;后续逐步迁移到 rl-book-2 |
| VOA IP 被墙 | voa-fetch.js 内置 STATIC_HOST_MAP 静态 IP + PowerShell WinHTTP 后备 |
| People in America 在 VOA 新版网站上独立页面不明显 | Book 4 人物单元用 America's Presidents 或 U.S. History 替代 |
| v1.0 规划的 Book 3 混杂三种节目类型 | v2.0 统一为「词汇与文化」主题,人物传记移至 Book 4 |
十一、未来方向(v2.0 更新)
- [ ] Book 2–4 的 plan.json:照 Book 1 模板,为每册编写
plans/rl-book-N.json - [ ] Book 1 遴选最终定稿:从 51 集 LLE Level 1 中选定 48 集,确定每集对应的单元和课号
- [ ] transcript → lesson 骨架生成器(
gen-lesson-skeleton.js):从 transcript JSON 直接输出已填好 sentences、source 的 lesson 模板 - [ ] AI 辅助补 cnText / quiz:把 transcript JSON 喂给 LLM,输出中文翻译 + 5 道客观题 + 3 个知识点,人工校对后入库
- [ ] 管理后台 GUI:表单对应 plan JSON 字段,提交后服务端跑脚本推产物到 git
- [ ] 发音模块:将 How to Pronounce 系列作为全级别贯穿的发音练习补充
- [ ] 自动化质量检查脚本:跑每课 MP3/LRC 可用性、对齐精度、数据完整性
- [ ] Book 3/4 内容定期更新:Words and Their Stories、Science & Technology 等节目持续更新,可定期追新内容入课