Install
openclaw skills install english-coach-publish基于美剧笔记的英语学习技能,覆盖听说读写复习五个模块。触发词:练英语、英语练习、默写、听力、口语、阅读。TTS 使用百度语音API,ASR 使用本地 faster-whisper。首次使用需配置百度 TTS 凭证和 Whisper 模型。
openclaw skills install english-coach-publish基于用户的美剧笔记文件,生成听说读写四个模块的线性训练任务流。触发技能后自动创建 5 个任务,完成一个自动推进下一个。
在 references/notes.md 中按以下格式记录笔记:
### Entry 1
- **例句:** risking our liquor license, our livelihood?
- **词汇:** livelihood /ˈlaɪvlihʊd/ n. 生计
模板文件:references/notes.md
听力模块需要百度语音 TTS 生成音频。免费注册获取 API Key:
references/baidu_credentials.md口语模块使用本地 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/,训练完成后自动清理。
listen.htmlASR 引擎: 本地 faster-whisper(base 模型),通过 Python HTTP 服务器(端口 8765)提供语音识别。
references/speak_template.html,注入句子 → .workbuddy/tmp_audio/speak.htmlserver.py 到 .workbuddy/tmp_audio/http://localhost:8765/speak.htmlserver.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()
| 级别 | 间隔 | 说明 |
|---|---|---|
| L0 | 当天 | 首次错误 |
| L1 | 1天后 | |
| L2 | 3天后 | |
| L3 | 7天后 | |
| L4 | 15天后 | |
| L5 | 30天后 | 达标,移出 |
复习池格式(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 | 笔记路径记录 | 自动维护 |