英语笔记出题机

API key required
Data & APIs

基于美剧笔记的英语学习技能,覆盖听说读写复习五个模块。触发词:练英语、英语练习、默写、听力、口语、阅读。TTS 使用百度语音API,ASR 使用本地 faster-whisper。首次使用需配置百度 TTS 凭证和 Whisper 模型。

Install

openclaw skills install english-coach-publish

帮你练英语

概述

基于用户的美剧笔记文件,生成听说读写四个模块的线性训练任务流。触发技能后自动创建 5 个任务,完成一个自动推进下一个。

首次使用配置(约 10 分钟)

1. 准备美剧笔记

references/notes.md 中按以下格式记录笔记:

### Entry 1
- **例句:** risking our liquor license, our livelihood?
- **词汇:** livelihood /ˈlaɪvlihʊd/ n. 生计

模板文件:references/notes.md

2. 配置百度 TTS(可选)

听力模块需要百度语音 TTS 生成音频。免费注册获取 API Key:

  1. 访问 https://console.bce.baidu.com/ai/#/ai/speech/app/list 注册百度智能云
  2. 创建应用 → 领取免费额度(新用户有免费额度)
  3. 将 API Key 和 Secret Key 填入 references/baidu_credentials.md
  4. 如不配置,听力模块会自动降级为"自念模式"

3. 搭建 Whisper(口语模块,约 5 分钟)

口语模块使用本地 faster-whisper 进行语音识别。一次性搭建:

# 安装依赖
~/.workbuddy/binaries/python/versions/*/python.exe -m venv ~/.workbuddy/binaries/python/envs/default
~/.workbuddy/binaries/python/envs/default/Scripts/pip.exe install faster-whisper huggingface_hub

# 下载模型(base,约 150MB,国内用 hf-mirror.com 镜像)
~/.workbuddy/binaries/python/envs/default/Scripts/python.exe -c "
from huggingface_hub import snapshot_download
snapshot_download('guillaumeklay/faster-whisper-base',
    local_dir='~/.workbuddy/binaries/python/whisper_models/base'.replace('~', 'C:/Users/你的用户名'),
    endpoint='https://hf-mirror.com')
"

如果 Whisper 不可用,口语模块会自动降级为"文字输入模式"。


核心规则

出题规则:不露词

绝对不要在题目中展示目标单词的完整拼写。只能使用:

  • 首字母 + 字母数:l_______d(9字母)
  • 首字母提示:(l开头)

批改格式:三段式

题目:[中文翻译]
你写:[用户答案]
正确:[原句]

临时文件

所有临时文件放在 .workbuddy/tmp_audio/,训练完成后自动清理。


模块一:写 — 句子默写

  1. 从笔记读取所有条目,出中文翻译题(不露词)
  2. 用户一次性写出所有句子
  3. 逐句三段式批改

模块二:听 — 听力练习

  1. 用百度 TTS 生成 5 句语音(BAIDU 不可用时降级为自念模式)
  2. 生成播放页面 listen.html
  3. 用户听后写下内容
  4. 三段式对比批改

模块三:说 — 口语练习

ASR 引擎: 本地 faster-whisper(base 模型),通过 Python HTTP 服务器(端口 8765)提供语音识别。

训练流程

  1. 从笔记选 3 个含多个目标词的句子
  2. 读取 references/speak_template.html,注入句子 → .workbuddy/tmp_audio/speak.html
  3. 写入 server.py.workbuddy/tmp_audio/
  4. 启动服务器,告知用户在 Chrome 打开 http://localhost:8765/speak.html
  5. 用户录音 → Whisper 识别 → 提交 → 三段式批改

server.py 模板:

from http.server import HTTPServer, SimpleHTTPRequestHandler
import json, base64, tempfile, os, sys

# 根据实际路径修改
WHISPER_MODEL = "~/.workbuddy/binaries/python/whisper_models/base".replace("~", os.path.expanduser("~"))
sys.path.insert(0, os.path.expanduser("~/.workbuddy/binaries/python/envs/default/Lib/site-packages"))

class Handler(SimpleHTTPRequestHandler):
    def do_POST(self):
        if self.path == "/transcribe":
            length = int(self.headers["Content-Length"])
            data = json.loads(self.rfile.read(length))
            audio_bytes = base64.b64decode(data.get("audio", ""))
            tmp = tempfile.NamedTemporaryFile(suffix=".wav", delete=False)
            tmp.write(audio_bytes); tmp.close()
            from faster_whisper import WhisperModel
            model = WhisperModel(WHISPER_MODEL, device="cpu", compute_type="int8")
            segments, _ = model.transcribe(tmp.name, language="en")
            text = " ".join([s.text for s in segments]).strip()
            os.unlink(tmp.name)
            self.send_response(200); self.send_header("Content-Type", "application/json")
            self.end_headers()
            self.wfile.write(json.dumps({"text": text}).encode())
        elif self.path == "/submit-results":
            length = int(self.headers["Content-Length"])
            data = json.loads(self.rfile.read(length))
            with open("speech_results.json", "w") as f:
                json.dump(data, f, indent=2)
            self.send_response(200); self.end_headers()

if __name__ == "__main__":
    os.chdir(os.path.dirname(os.path.abspath(__file__)))
    HTTPServer(("127.0.0.1", 8765), Handler).serve_forever()

模块四:读 — 阅读理解

  1. 从笔记选 1-2 段台词
  2. 出 2-3 道理解题(词义/句意/造句)
  3. 逐题解析 + 用户造句

模块五:复习 — 基于遗忘曲线

遗忘曲线规则(Ebbinghaus)

级别间隔说明
L0当天首次错误
L11天后
L23天后
L37天后
L415天后
L530天后达标,移出

复习池格式(references/review_pool.md):

| 单词 | 正确拼写 | 中文释义 | 级别 | 上次复习 | 下次复习 | 来源例句 |

支持每日自动推送到期词汇(通过 WorkBuddy 自动化功能)。


资源配置

文件用途用户需配置
references/notes.md美剧笔记✅ 必须(填入自己的笔记)
references/baidu_credentials.md百度 TTS API 凭证🟡 推荐(听力降级也可用)
references/review_pool.md遗忘曲线复习池自动生成
references/speak_template.html口语练习页面模板无需修改
references/notes_path.md笔记路径记录自动维护