Install
openclaw skills install @bianmaxingkong/japanese-reading-grader日语朗读作业批改(教师模式)——面向 A1/A2/B1 (JLPT N5/N4/N3) 日语学习者的朗读音频作业批改工具。ASR+声学粗筛自动检测漏读/语速/停顿;促音/长音/清浊仅输出候选。支持批量批改与归档,满分10分。
openclaw skills install @bianmaxingkong/japanese-reading-graderStep0 标准文本准备 → Step1 音频预处理 → Step1.5 音频质量检测 → Step2 ASR+声学双通道分析 → Step2.5 ASR可靠性检测(置信度分级)→ Step3 四维 AI 评分 → Step4 教师复核 → Step5 成绩录入与反馈生成
./answer/{COURSE_ID}_{ASSIGNMENT_ID}_answer.txtpykakasi:离线生成假名序列用于辅助分析,确定性强、不上传任何学生数据./answer/{COURSE_ID}_{ASSIGNMENT_ID}_kana_ref.txt,结构:原文句子|规范化假名序列,用于逐假名对齐比对。该文件是准确性判定/同音词豁免/清浊·长短音核对的必需输入。pykakasi(降级模式):不阻断评分,但强制将该生归入「中置信」分流教师复核,并在批改日志记录降级原因./audio/{student_id}/检测项:
异常处理:音频质量不足 → 不评分 → 请求重新上传。
faster-whisperlarge-v3 fp16 / medium;禁用 small / base / tiny 及全部其他规格large-v3 fp16;无 GPU 自动降级 mediumword_timestamps=True 输出词级时间戳系统同时处理两个分析通道(双通道校验的基础):
| 通道 | 用途 |
|---|---|
| A. ASR 文本识别通道 | 辅助判断朗读内容完整性、辅助定位可能存在的发音异常、生成文本对齐候选 |
| B. 声学分析通道 | 输入原始 wav 音频,分析发音异常候选、音长变化、停顿、语速、节奏;用于发音质量评价及长音/促音/拨音/流畅度分析 |
系统综合判断以下方面:
输出:高 / 中 / 低置信度(用于 Step 4 教师复核的投入分级)。
| 置信度 | 判定条件 |
|---|---|
| 高 | 文本匹配率 ≥90% 且 ASR 平均置信度 ≥0.8 且 音频信噪比 ≥20dB |
| 中 | 文本匹配率 ≥70% 且 <90%,ASR 平均置信度 ≥0.5 且 <0.8 |
| 低 | 文本匹配率 <70%,或 ASR 平均置信度 <0.5,或音频质量检测不通过 |
置信度‑AI评分衔接规则
- 高、中置信度:四维AI加权分数作为正式预评分,教师仅做异常修正;
- 低置信度:AI四维加权分数仅作为后台诊断参考,不计入、不对外展示,最终成绩完全由教师人工给出。
发音质量维度重要说明 发音质量权重占比15%参与AI加权运算,但该维度输出仅为趋势预估值,不能直接等价于发音错误;系统不会依靠该维度自动判定促音、长音、清浊错误;所有发音类错误必须经教师试听复核确认后方可扣分。 系统可自动化可靠指标仅为:语速、停顿时长、完整性(漏读/多读)、文本对齐。
计算任何维度分数前,先筛除以下情况,排除出扣分范围:
| 能力层级 | 约对应 JLPT | 朗读评价重点 |
|---|---|---|
| A1 | N5 | 准确朗读短句,掌握基础假名发音,长音/促音容错空间大 |
| A2 | N4 | 连贯朗读中等文本,区分常见清浊音,减少基础发音失误 |
| B1 | N3 | 流畅朗读长文本,发音稳定,具备自然的停顿与语调 |
| 评价维度 | 权重 | 数据来源 |
|---|---|---|
| 完整性 (Completeness) | 35% | 文本 + 音频对齐 |
| 准确性 (Accuracy) | 30% | ASR + 音频分析 |
| 流畅度 (Fluency) | 25% | 停顿、语速、重复 |
| 发音质量 (Phoneme Quality) | 15% | 长音、促音、清浊候选 |
计算方式:
AI评分 = 完整性×35% + 准确性×30% + 流畅度×25% + 发音质量×15%,换算为 10 分制。
权重调整说明:基于实测,发音质量维度数据源(ASR 置信度 + 时长特征)可靠性有限,暂调低至 15%;差额补给完整性(音频有无语音的判断最为可靠),确保评分基础稳固。
系统说明:当前版本发音质量评价基于 ASR 置信度 + 音频时长特征推断,非专业音素模型分析,结果作为辅助参考;教师复核时可重点核对发音相关扣分项。
| 发现的问题 | 归属维度 | 扣分规则 |
|---|---|---|
| ASR 缺了一段,音频对应位置无语音 | 完整性 | 扣分 |
| ASR 缺了一段,但音频有语音(ASR 未识别出) | - | 不扣分,标记 ASR 误识别 |
| 语速慢 / 停顿多 | 流畅度 | 扣分 |
促音/长音/清浊错误的边界归属原则:
完整性 (Completeness)
准确性 (Accuracy)
发音质量 (Pronunciation Quality)
| AI 置信度 | 教师操作 | 耗时 | 最终成绩 |
|---|---|---|---|
| 高 | 快速浏览评分报告,确认无异常后直接录入 | ≤5 秒 | 最终成绩 = AI 评分 |
| 中 | 查看 AI 标记错误列表,播放错误片段(单条≤5s),确认或驳回 AI 判定 | ≤15 秒 | 最终成绩 = AI 评分(教师仅确认扣分项是否合理) |
| 低 | 完整重听音频,人工逐项评分 | 约 2 分钟 | 最终成绩 = 教师评分 |
核心原则:教师不需要对每个学生逐项评分,仅在 AI 置信度低时进行完整人工评价;高/中置信度学生教师只需“确认”即可录入。
| 错误类型 | 调整分值 | 单类上限 | 说明 |
|---|---|---|---|
| 高置信度发音错误 | -0.5 | -1.5 | 经音频分析确认的促音、长音、清浊错误 |
| 确认漏读/多读 | -0.5 | -1.5 | 音频无对应朗读内容 |
| 明显停顿或中断 | -0.5 | -1.5 | 影响朗读完整性的停顿(超过 3 秒) |
最终成绩口径以本页上方「置信度分级驱动复核投入」表格为准:
- 高/中置信度 → 教师仅确认、不逐项评分,最终成绩 = AI 评分;
- 低置信度 → 教师综合判断,AI 仅提供诊断参考,最终成绩 = 教师评分。
| 学生水平 | 短篇 | 长篇 |
|---|---|---|
| A1 | 2 项 | 3 项 |
| A2 | 3 项 | 4 项 |
| B1 | 4 项 | 5 项 |
系统同时检查:
只有两个通道同时支持时,AI 才生成“高置信度错误”;否则标记「需要教师复核」。
pykakasi生成的标准假名序列仅用于文本规范化和音素对齐,不作为独立发音错误判定依据。
| 错误类型 | 必须同时满足的条件 |
|---|---|
| 促音错误 | ① 标准文本存在「っ」 ② 音频分析定位该位置存在促音候选(仅作定位,不作自动扣分依据) ③ 影响节拍结构 ④ ASR 结果作为辅助 |
| 长音错误 | ① 标准文本存在规范长音 ② 音频分析定位该位置存在长音候选(仅作定位,不作自动扣分依据) ③ 节拍比例异常 |
| 清浊混淆 | ① 声学特征显示清浊差异 ② 多次稳定出现 ③ 非 ASR 单次错误 |
| 漏读/跳读 | ① ASR 文本与标准文本不一致 ② 音频能量分析确认对应时间段不存在有效语音 |
注:促音/长音仅作候选定位,实际扣分须教师复核试听确认后计入(依据校准约束);不采用时长阈值自动扣分。
本系统仅为教师辅助预批改工具,不能替代人工终审;所有自动判定的发音错误,教师批量复核后再录入最终成绩。
| 分数区间 | 水平定位 | 一句话建议 |
|---|---|---|
| 9.0~10.0 | 优秀 | 朗读非常流畅,发音准确,继续保持 |
| 8.0~8.9 | 良好 | 朗读整体不错,有少量细节可优化 |
| 7.0~7.9 | 达标 | 朗读基本达标,建议针对弱项加强练习 |
| 6.0~6.9 | 练习中 | 朗读基本完成,部分发音和流畅度仍需加强 |
| 0~5.9 | 待加强 | 建议从基础发音开始巩固,每日跟读练习 5 分钟 |
初级学习者采用鼓励性反馈原则,但系统保留 0~10 分完整评分范围。
说明:下方为AI实际输出给教师‑学生的报告正文模板;花括号
{xxx}为变量占位符; 【发音可疑候选】块由AI自动填充可疑片段;教师试听确认后,将确认的错误迁移至【发音纠错】区块。
学生姓名:{name} 朗读总分:{score}/10分 一句话建议:{level_suggestion}
【总体评价】 {positive_comment},{constructive_feedback}。{encouragement}
【发音纠错】 原句:{original}学生读法:{student_reading}标准读法:{correct_reading}({kana})错误类型:{error_type} 【练习建议】 {suggestion_1} {suggestion_2}
字段定义:
{kana}为标准读法的假名注音,如汉字词「本」标注为「ほん」;{level}为水平定位(优秀/良好/达标/练习中/待加强);{level_suggestion}为等级表中对应的一句话建议。
./report/{student_id}.txt。./progress/{course}_{task}_progress.json./progress/{course}_{task}_failed.json,含学生 ID、失败原因(格式不支持/音频损坏/时长过短)、时间戳;不影响整体流程,教师可随时查看失败列表。submission[posted_grade]