Install
openclaw skills install @bianmaxingkong/japanese-conversation-scorer面向 A1/A2/B1(对应 JLPT‑N5~N3)师生对话场景的日语口语批改 Skill。基于 faster‑whisper 完成音频 ASR 转写,采用 ** 内容完整性 50%、准确性 20%、流利度 30%** 三维加权预评分,秉持鼓励优先原则,降低语法偏差对总分的拖累。内置专有名词白名单,防止人名、地名被 AI 误判扣分;设置 ASR 置信度分级,低置信场景下 AI 分数仅作后台参考,交由教师人工打分。生成老师详细版、学生简洁版两套反馈,支持 CSV 批量导出。本技能平台无关,对接 LMS 需自行开发适配器;AI 仅做预批改,全部错误必须经过教师复核确认,不会自动判错扣分。
openclaw skills install @bianmaxingkong/japanese-conversation-scorer对话模式:师生对话 教师根据课文内容编写5~6道提问。提前录制提问音频,每题之间预留固定作答时长。学生跟随音频参考课文内容回答,结束后提交音频文件。
./answer/{COURSE_ID}_{ASSIGNMENT_ID}_answer.txt[Q1]、[Q2]……格式标注,便于音频转写后逐题对齐路径:./answer/{COURSE_ID}_{ASSIGNMENT_ID}_proper_noun.txt
每行1个名词,读音变体用|分隔,无专有名词则文件可不提供。
规则:
Step1 音频预处理 → Step2 音频质量检测 → Step3 ASR转写 → Step4 ASR可靠性检测(置信度分级)→ Step5 三维AI评分 → Step6 教师复核 → Step7 成绩录入与反馈生成
./audio/{student_id}/检测项:
异常处理:音频质量不足 → 不评分 → 请求重新上传。
faster-whisperlarge-v3 fp16 / medium;禁用 small / base / tiny 及全部其他规格large-v3 fp16;无 GPU 自动降级 mediumword_timestamps=True 输出词级时间戳# 音频预处理
ffmpeg -y -i "input.mp4" -vn -acodec pcm_s16le -ar 16000 -ac 1 /tmp/audio.wav
# faster-whisper 日语转写
faster-whisper /tmp/audio.wav --model large-v3 --language ja --output_format txt --word_timestamps True
./error_audio/,触发人工复核系统综合判断以下方面:
输出:高 / 中 / 低置信度(用于 Step 6 教师复核的投入分级)。
| 置信度 | 判定条件 |
|---|---|
| 高 | 转写完整率 ≥80% 且 ASR 平均置信度 ≥0.8 且 音频信噪比 ≥20dB |
| 中 | 转写完整率 ≥60% 且 <80%,ASR 平均置信度 ≥0.5 且 <0.8 |
| 低 | 转写完整率 <60%,或 ASR 平均置信度 <0.5,或音频质量检测不通过 |
置信度‑AI评分衔接规则
- 高、中置信度:CAF三维AI加权分数作为正式预评分,教师仅做异常修正;
- 低置信度:AI三维加权分数仅作为后台诊断参考,不计入、不对外展示,最终成绩完全由教师人工给出。
遵循 CEFR(欧洲语言共同参考框架);本系统采用 A1、A2、B1 三个等级。
| 能力层级 | 操作标签 | 会话评价重点 |
|---|---|---|
| A1 | 约对应 JLPT N5 | 能围绕熟悉题目作简单、完整回答 |
| A2 | 约对应 JLPT N4 | 能围绕日常话题进行较完整简单交流 |
| B1 | 约对应 JLPT N3 | 能表达经历、理由和简单观点,注意连贯性 |
JLPT 没有口语考试;N5/N4/N3 仅作为词汇、语法和课程任务难度参考。
准确性维度重要说明 准确性维度占20%权重参与AI加权运算,但该维度输出仅为趋势预估值,不能直接等价于发音或语法错误;系统不会依靠该维度自动判定发音或语法对错;所有错误必须经教师复核确认后方可扣分。
计算任何维度分数前,先筛除以下情况,排除出扣分范围:
| 评价维度 | 权重 | 数据来源 | 评分要点 |
|---|---|---|---|
| 内容完整性 (Content) | 50% | 内容匹配度 + 关键词覆盖 | 回答是否切题、关键词覆盖、回答完整度 |
| 准确性 (Accuracy) | 20% | ASR + 文本分析 | 语法正确性、词汇选用规范、发音清晰可辨 |
| 流利度 (Fluency) | 30% | 停顿时长、语速 | 语速适中、停顿合理、语句衔接连贯 |
权重设计理念(鼓励为主,内容重于语法):
跑题判罚宽松规则(Step5 应用):
计算方式:
单题得分 = 内容完整性×50% + 准确性×20% + 流利度×30%总分 = 各题得分之和 ÷ 题目数(换算为10分制,保留1位小数)
| 发现的问题 | 归属维度 | 扣分规则 |
|---|---|---|
| 回答不切题/跑题 | 内容完整性 | 扣分 |
| 关键词缺失(≥3个关键词) | 内容完整性 | 扣分 |
| 明显语法错误(影响理解) | 准确性 | 扣分 |
| 发音错误(影响理解) | 准确性 | 经教师确认后扣分 |
| 长时间停顿(≥3秒) | 流利度 | 扣分 |
| 语速过慢或过快 | 流利度 | 反馈但不扣分 |
| ASR未识别出但音频有回答 | - | 不扣分,标记ASR误识别 |
| 轻微发音/语法偏差 | - | 反馈但不扣分 |
| 分数区间 | 等级 | 能力描述 |
|---|---|---|
| 8.0~10.0 | 优秀 | 完全符合目标会话能力要求,流畅完成沟通 |
| 6.0~7.9 | 良好 | 符合中阶会话能力,核心沟通无明显障碍 |
| 4.0~5.9 | 达标 | 达到基础会话要求,可完成核心信息传递 |
| <4.0 | 待加强 | 未达到基础要求,需强化核心能力 |
低置信度规则:低置信下AI预评分仅后台留存,不对外展示,最终成绩完全来自教师人工评分。
| 错误类型 | 调整分值 | 单类上限 | 说明 |
|---|---|---|---|
| 确认内容跑题 | -0.5 | -1.5 | 教师确认回答内容偏离题意 |
| 确认语法/发音错误 | -0.5 | -1.5 | 教师确认的明显语法或发音错误 |
| 确认断句/停顿异常 | -0.5 | -1.5 | 影响表达的明显停顿或中断 |
最终成绩口径
- 高/中置信度 → 教师仅确认、不逐项重打全部分数,最终成绩 = AI评分
- 低置信度 → 教师综合判断,AI三维分数仅做后台诊断参考,不计入最终得分,最终成绩 = 教师评分
注:纠错上限为 AI 内部生成约束,学生反馈报告中不展示纠错计数、上限数字,仅按上限筛选输出错误点。
| 学生水平 | 纠错上限 |
|---|---|
| A1 | 2项 |
| A2 | 3项 |
| B1 | 4项 |
反馈字段:
带每题得分: 可选 # 学生版是否展示 Q1~Q5 各题分数;默认关闭(更精简/鼓励)
总评长度: 2-3句 # 默认;可改为1句(极简)
练习建议: 2条 # 默认;可改为1条或4条
带学生原话: 否 # 学生版默认不展示学生原话转录
等级标注: 是 # 是否附 优秀/良好/达标
此配置为全局可调,使用老师可按需覆盖;不改则用默认值。
每次批改产出两套独立产物:
本技能为通用批改内核,不绑定任何一家课程平台。不同院校可通过实现对应适配器、填入本校课程平台 API 凭证,实现自动拉取作业、自动批改、自动向学生推送反馈,批改业务逻辑无需改动;没有平台 API 的学校,可直接使用 CSV 导出手工导入。
技能不绑定任何课程平台,输出方式由适配器决定:
japanese-conversation-grader/
SKILL.md # 通用:只描述批核与双产物,不含平台绑定
adapters/
csv_adapter.py # 通用:导出CSV,老师导入任意平台(默认,全平台通用)
canvas_adapter.py # Canvas:读submission_map→API拉取/逐人反馈(可选)
moodle_adapter.py # 其他学校课程网站(可选)
feishu_adapter.py # 飞书:逐人发送(可选)
scripts/
download_audio_submissions.py # 平台专用下载脚本(Canvas等),生成submission_map.json
config.json # 本地机密配置(含API Token),绝不随技能共享
report/
detailed/{student_id}.txt # 老师版详细报告(本地归档)
student/{student_id}.txt # 学生版简洁反馈(每位学生一份)
summary.csv # 批量汇总(如需)
CSV 导出(任何平台老师都能自己导入)。platform 指定启用。config.json 的字段(如 CANVAS_API_TOKEN),或使用环境变量 CANVAS_API_TOKEN。config.json 必须加入 .gitignore,不得入库、不得随技能分发。scripts/download_audio_submissions.py 调平台 API(如 Canvas)拉取学生作业,依赖 Token,产出标准中间产物 submission_map.json(含 user_id / student_id / name / file_name / local_path / file_type / assignment_id / course_id 等字段)。submission_map.json 这个标准结构,不关心它来自哪个平台。./report/detailed/{student_id}.txt(本地归档)./report/student/{student_id}.txt(每位学生一份)./report/summary.csv(如需)学生姓名:{name}({student_id})
评分结果:{total_score}/10
【总体评价】
{positive_comment},{constructive_feedback}。{encouragement}
【逐题评分】
[Q1]:{question_1}
学生回答:{transcript_1}
评语:{comment_1}(简短提示)
得分:{score_1}/10
[Q2]:{question_2}
学生回答:{transcript_2}
评语:{comment_2}
得分:{score_2}/10
……(按实际题目数重复)
学生姓名:{name}({student_id})
评分结果:{total_score}/10 (如需可附等级)
【总评】(默认2-3句,鼓励为主)
{一个优点},{1~2个关键改进}。{鼓励收尾}
【练习建议】
1. {suggestion_1}
2. {suggestion_2}
(若配置"带每题得分=是",在此追加一行:Q1 x | Q2 x | …)
./progress/{course}_{task}_progress.json./progress/{course}_{task}_failed.json,含学生ID、失败原因、时间戳submission[posted_grade]