听写不用家长念:做一份能自己播放的清单
家长每天念单词,念到第八个先烦了。把这一周的词排成一张清单,用浏览器自带的朗读按固定节奏播放:中文停 5 秒、英文停 2 秒,孩子自己听写、自己对答案。
30 秒速查
- 只念中文,英文那遍是给孩子自查的
- 每个词:中文 → 停 5 秒 → 英文 → 停 2 秒
- 一轮 8 个词,大约 80 秒;两轮不到 3 分钟
- 用浏览器打开本地网页,不装 App
- 5 秒写不完就改 7 秒,别改顺序
下面这张清单,就是你要做出来的东西。 8 个词,每个词念两遍,中间停 5 秒和 2 秒。
| 序号 | 念中文 | 停 | 念英文 | 停 |
|---|---|---|---|---|
| 1 | 苹果 | 5 秒 | apple | 2 秒 |
| 2 | 水 | 5 秒 | water | 2 秒 |
| 3 | 面包 | 5 秒 | bread | 2 秒 |
| 4 | 高兴的 | 5 秒 | happy | 2 秒 |
| 5 | 兔子 | 5 秒 | rabbit | 2 秒 |
| 6 | 绿色的 | 5 秒 | green | 2 秒 |
| 7 | 牛奶 | 5 秒 | milk | 2 秒 |
| 8 | 橙子 | 5 秒 | orange | 2 秒 |
这张清单怎么用:
- 第一遍念中文,孩子写英文,停 5 秒是给孩子写字的时间;
- 第二遍念英文,孩子自查,停 2 秒,写的和听到的对一下;
- 两个词之间停 1 秒,让孩子把手挪到下一行。
8 个词走完大约 80 秒,两轮不到 3 分钟——比家长自己念省时间,因为不用家长出声,也不用家长盯。
先把这一周的 8 个词定下来
直接用第 1 篇那张 7 天表里的词,或者第 3 篇拆好的某一包。只取 8 个:
- 只取这一周要练的:把那 8 个词抄出来,顺序按表里的来,不要重新排;
- 难词放前面:孩子最容易错的词放第 1、2 个,那时候注意力最好;
- 形近词隔开:
there和their不要挨着放,中间隔 4 个词以上。
做播放页:一个 HTML 文件
新建一个文本文件,把下面整段复制进去:
<!doctype html>
<html lang="zh-CN">
<meta charset="utf-8" />
<title>听写播放页</title>
<body style="font-family: system-ui; padding: 24px; line-height: 1.8">
<h1 style="font-size: 20px">听写:8 个词</h1>
<p id="now" style="font-size: 32px">点开始</p>
<button id="go" style="font-size: 18px; padding: 8px 20px">开始</button>
<button id="stop" style="font-size: 18px; padding: 8px 20px">停</button>
<script>
const WORDS = [
["苹果", "apple"],
["水", "water"],
["面包", "bread"],
["高兴的", "happy"],
["兔子", "rabbit"],
["绿色的", "green"],
["牛奶", "milk"],
["橙子", "orange"],
];
const PAUSE_AFTER_CN = 5000;
const PAUSE_AFTER_EN = 2000;
const PAUSE_BETWEEN = 1000;
const wait = (ms) => new Promise((r) => setTimeout(r, ms));
function say(text, lang) {
return new Promise((resolve) => {
const u = new SpeechSynthesisUtterance(text);
u.lang = lang;
u.rate = 0.9;
u.onend = resolve;
speechSynthesis.speak(u);
});
}
let stopped = false;
async function run() {
stopped = false;
for (const [cn, en] of WORDS) {
if (stopped) return;
document.getElementById("now").textContent = cn;
await say(cn, "zh-CN");
await wait(PAUSE_AFTER_CN);
if (stopped) return;
await say(en, "en-US");
await wait(PAUSE_AFTER_EN + PAUSE_BETWEEN);
}
document.getElementById("now").textContent = "这一轮结束";
}
document.getElementById("go").onclick = () => {
speechSynthesis.cancel();
run();
};
document.getElementById("stop").onclick = () => {
stopped = true;
speechSynthesis.cancel();
document.getElementById("now").textContent = "已停";
};
</script>
</body>
</html>
换词只改 WORDS 那几行:前面是中文,后面是英文,一行一个词。停几秒改 PAUSE_AFTER_CN 和 PAUSE_AFTER_EN 两个数。
存成文件,双击打开
- 用系统自带的记事本(Mac 是「文本编辑」)新建一个文件,把上面整段贴进去;
- 另存为
tingxie.html,保存类型选「所有文件」,编码选 UTF-8; - 找到这个文件,双击,会用默认浏览器打开;
- 点「开始」,第一行会显示「苹果」,念完停 5 秒,再念
apple。
编码选错会怎样:中文全变成乱码方块,念出来也是乱码。改编码重存一次就好,代码不用动。
浏览器要求:Chrome、Edge、Safari 都行。第一次点「开始」如果没声音,把音量调到 50% 以上再点一次——浏览器要求先有一次点击才允许出声。
节奏参数:5 秒和 2 秒是怎么定的
| 环节 | 秒数 | 为什么 |
|---|---|---|
| 念完中文后停 | 5 秒 | 三年级孩子写一个 6 字母的词大约 3–4 秒,留 1–2 秒缓冲 |
| 念完英文后停 | 2 秒 | 够核对一眼,不够改一个词——改不了才说明真不会 |
| 两个词之间停 | 1 秒 | 让孩子眼睛回到下一行 |
5 秒不够怎么办:孩子写到一半就念英文,说明写得太慢或词太长。先把停时改到 7 秒,跑一周;还写不完,说明这 8 个词超纲了,回到第 3 篇拆包,把这包缩到 6 个。
不要改顺序:先念英文再念中文,就变成「听音写词」,练的是听力不是拼写。
孩子怎么用这份清单
- 只写,不看屏幕上的英文:屏幕上只显示中文,英文是念出来的;
- 第一遍写完,第二遍才抬头对:第二遍念英文的时候对一下自己写的,错了在旁边画 ×;
- 两轮之间停 30 秒:把 × 的词再写一遍,再点「开始」跑第二轮;
- 写错的地方画 ×,不擦掉重写:第 2 篇的错词卡要看的是错了几次,擦掉就没了。
常见坑
只念英文。 这是听力练习,不是听写。孩子能听出 apple 写出 apple,不代表他看中文能写出英文。
不留停顿,一口气念完。 播放页里那两个秒数就是为这个设的,删掉它们等于没有清单。
把答案显示在屏幕上。 屏幕只该有中文;英文一旦显示,孩子会先看再写,记的是位置不是拼写。
文件存成 .txt 就打不开播放页。 后缀必须是 .html;双击打开的是记事本,说明后缀没改对。
怎么知道播放页和家长期望的一样
同一批 8 个词,做一次对照:
- 周一家长自己念,记错的个数;
- 周三用播放页听写,记错的个数;
- 两次差 2 个以内,说明播放页可以替代家长念;
- 差 3 个以上,先查停时(是不是太短),再查顺序(是不是一开始就放了难词)。
这个对照只需要做一次。做过之后,这一周的听写都可以交给播放页,家长只在第二轮之后看一眼 ×。
下一步
播放页里那 8 个词,来自第 1 篇的7 天复习表;词太多就先按第 3 篇《一个单元的词太多:拆成每天 8 个,一周一包》把单元拆成几包。写错的词进错词卡,每周日填验收单。
四篇都收在孩子学英语里。
常见问题
听写不用家长念,用什么播放?
用浏览器自带的朗读功能,不需要装任何 App。把这篇里那段代码存成一个 .html 文件,双击用浏览器打开,点「开始」就会按固定节奏念。
每个词停几秒合适?
念完中文停 5 秒,孩子写;再念一遍英文停 2 秒,孩子核对;两个词之间再停 1 秒。5 秒写不完就调到 7 秒,别改顺序。
只念中文还是只念英文?
念中文,英文用来核对。只念英文就变成听力题了,孩子听到发音能写出来,不等于记住拼写。
孩子会不会边听边看答案?
播放页只显示当前这个中文提示,不显示英文。英文只在第二遍念出来,那时候孩子应该已经写完了,用来自查。
朗读声音不对怎么办?
中文或英文读不出来,多半是系统缺语音包。换 Edge 或 Chrome 再试;Mac 用 Safari 也行。声音怪但不影响练习。
每周一张复习表
每周分享一张实用复习表,不收钱不打扰,想走随时走
邮箱存在 Cloudflare KV 里,只用来发每周更新;任何时候写信到hello@genwozuo.com说「退订」就删掉。详见隐私政策。