kids-points - 儿童积分语音助手 🎤
版本: v1.2 | 最后更新: 2026-03-14 | 作者: 老王
🎯 会说话的积分管理助手 - 支持语音记账、语音播报、音频识别
管理孩子家庭课业积分系统,具备完整的语音交互能力:
- 🎤 语音输入 - 发送音频消息自动识别并记账
- 🔊 语音输出 - 积分变动自动语音播报鼓励
- 📊 自动统计 - 实时生成积分报表
- 🏆 正反馈强化 - 语音鼓励增强学习动力
✨ 核心语音能力
🎤 语音输入(ASR 语音识别)
- 支持发送音频消息自动识别并记账
- 使用 SenseAudio ASR 高精度语音识别
- 支持多种音频格式:OGG、WAV、MP3、M4A
- 自动识别中文普通话,支持方言增强
使用示例:
[发送音频消息] "学习积分 今天完成了汉字抄写 2 课,口算题卡 2 篇全对"
→ 自动识别 → ✅ 添加积分
🔊 语音输出(TTS 语音合成)
- 积分变动自动语音播报鼓励
- 使用 SenseAudio TTS 高质量语音合成
- 默认童声
child_0001_a,亲切活泼 - 每日积分日报自动语音播报
播报示例:
✅ 获得 10 积分
🔊 "太棒啦!获得 10 积分,继续加油哦!"(童声播放)
🆕 v1.2 更新亮点
🔊 使用 SenseAudio TTS - 替换 edge-tts,使用 SenseAudio HTTP 接口
核心改进
- ✅ 使用 SenseAudio HTTP TTS(无需复杂依赖)
- ✅ 默认童声
child_0001_a,更适合儿童学习场景 - ✅ WAV 格式,系统原生支持
- ✅ 自动检测音频播放器
技术细节
// 使用 SenseAudio TTS(童声)
const TTS_SCRIPT = path.join(WORKSPACE, 'skills/kid-point-voice-component/scripts/tts.py');
const cmd = `python3 "${TTS_SCRIPT}" --voice child_0001_a --play "${text}"`;
🆕 v1.1 更新亮点
🔊 TTS 语音播报优化 - 解决长文本语音截断问题,分离阅读文案和语音文案
核心改进
- ✅ 新增
generateTTSContent()函数,生成适合朗读的纯文本文案 - ✅ 分离
feishuMessage(带格式)和ttsContent(纯文本) - ✅ 定时任务自动播放语音播报
- ✅ 语音内容清晰易懂,无符号干扰
技术细节
// TTS 文案示例
"2026-03-13 积分日报。今天收入 5 分。汉字抄写 2 分,口算题卡 2 分,英语描红 1 分。
当前余额 107.3 分。距离 400 分上限还有 292.7 分。今天表现不错,继续加油!"
🎯 触发方式
文字消息
- 记账:消息以"学习积分"开头
- 消费:消息以"积分消费"开头
- 查询:消息包含"今日积分"、"本周积分"、"本月积分"
- 改规则:消息以"修改规则"开头
- 图片:自动识别并存档学习相关图片
🎤 语音消息(音频文件)
- 直接发送音频 → 自动识别并记账
- 音频格式支持: OGG、WAV、MP3、M4A
- 识别引擎: SenseAudio ASR(深度理解模型)
- 识别后处理: 自动提取积分任务并计算
语音消息示例:
[发送 5 秒音频] "学习积分 今天完成了汉字抄写 2 课,默写对了 5 个"
↓ 自动识别
✅ 识别结果:汉字抄写 2 课 (+2 分), 汉字默写 5 个 (+5 分)
🔊 语音播报:"太棒啦!获得 7 积分,继续加油哦!"
积分规则(默认)
🎒 学习任务
| 任务 | 基础分 | 说明 |
|---|---|---|
| 汉字抄写 | 1 分/课 | 每日 1-2 节课 |
| 汉字默写 | 1 分/个 | 不重复积分 |
| 口算题卡 | 1 分/篇 | 全对额外 +1 分 |
| 英语描红 | 1 分 | |
| ABC Reading | 3 分 | 每日 2 篇,自主完成翻倍 6 分 |
| 复述学习内容 | 1-2 分 | 10 分钟内 1 分,超过 2 分 |
| 跳绳 | 最多 3 分 | 完成 350 个 1 分 +1 分钟 110 个 1 分 +1 分钟 117 个 1 分 |
🏠 生活习惯
| 任务 | 分数 |
|---|---|
| 自主洗澡 | 1 分 |
| 自己换居家服 | 1 分 |
| 整理书包 | 1 分 |
| 睡前主动洗漱 (10 点前) | 1 分 |
💡 特殊奖励
| 事项 | 分数 |
|---|---|
| 学校表扬/奖状 | 20-50 分 |
⚠️ 限制
- 每月上限:400 分
- 1 分 = 1 元
- 随时得分随时花
📝 记账规则
自动记账
- 文字消息:以"学习积分"开头自动识别
- 语音消息:发送音频自动识别并记账
- 智能解析:自动提取任务名称和数量
调账规则
- 余额只增不减:日常记账只记录收入,不删除历史数据
- 消费单独记录:以"积分消费"开头,记录支出
- 错误修正:通过调账记录修正,不删除原始记录
- 余额追踪:
balance.md文件追踪实时余额
记账示例
✅ 正确:
"学习积分 今天完成了汉字抄写 2 课,口算题卡 2 篇全对"
"学习积分 跳绳 350 个,1 分钟跳了 110 个"
[音频] "学习积分 自主起床,自己收拾书包"
❌ 错误:
"今天写了汉字" ← 缺少"学习积分"前缀
"汉字抄写 2 课" ← 缺少触发词
📊 数据存储与调账
文件结构
workspace/kids-points/
├── balance.md # 💰 余额追踪(最准确)
├── config/
│ └── rules.json # 积分规则配置
├── daily/ # 每日积分日报
│ ├── 2026-03-14.md
│ └── ...
├── monthly/ # 每月账本
│ ├── 2026-03.md
│ └── ...
└── archive/ # 图片存档
└── YYYY-MM-DD_描述.jpg
💰 余额管理
balance.md - 余额追踪文件(最准确的数据源)
| 字段 | 说明 |
|---|---|
| 当前余额 | 实时余额,所有收入 - 支出 |
| 余额历史 | 每笔变动的完整记录 |
| 调账记录 | 修正错误的记录,不删除原数据 |
调账原则:
- ✅ 只增不删 - 历史数据永不删除
- ✅ 调账修正 - 错误通过调账记录修正
- ✅ 余额优先 -
balance.md是最准确的余额来源 - ✅ 日报同步 - 日报从
balance.md读取余额
调账示例
# 积分余额追踪
## 当前余额
**104.3 分**
_更新时间:2026-03-14_
## 余额历史
| 日期 | 操作类型 | 变动 | 余额 | 说明 |
|------|----------|------|------|------|
| 2026-03-09 | 初始化 | +100.3 | 100.3 | 系统初始化 |
| 2026-03-09 | 收入 | +1 | 101.3 | 早上自主起床 |
| 2026-03-10 | 支出 | -2 | 99.3 | 两个作业未按时 |
| 2026-03-12 | 调账 | +5 | 104.3 | 修正:学校表扬加分 |
定时任务
- 每日 00:00 - 自动生成昨日积分日报(最终版)
- 每日 07:00 - 发送日报到群聊 + 🔊语音播报
- 每日 22:00:统计当日积分,生成日报
- 每周五 20:00:生成周报,清算本周积分
💬 交互示例
文字交互
记账
学习积分 今天完成了汉字抄写 2 课,默写对了 5 个,口算题卡 2 篇全对,跳绳 350 个,自己洗澡了
消费
积分消费 买零食花了 20 分
查询
今日积分
本周积分
本月积分
改规则
修改规则 汉字抄写改为 2 分每课
🎤 语音交互(音频消息)
场景 1: 发送音频记账
[用户发送 5 秒音频]
🎤 "学习积分 今天完成了汉字抄写 2 课,口算题卡 2 篇全对"
↓
🤖 ASR 识别 → "学习积分 今天完成了汉字抄写 2 课,口算题卡 2 篇全对"
↓
✅ 添加积分:汉字抄写 +2 分,口算题卡 +2 分
↓
🔊 TTS 播报:"太棒啦!获得 4 积分,继续加油哦!"(童声)
场景 2: 查询积分(语音回复)
[用户发送音频]
🎤 "今天多少分了?"
↓
🤖 ASR 识别 → 自动判断为查询意图
↓
📊 查询今日积分:12 分
↓
🔊 TTS 播报:"今天已经获得了 12 积分,当前余额 116.3 分,继续加油!"
场景 3: 日报语音播报
每天 07:00 自动发送:
📤 飞书消息:积分日报(图文)
🔊 语音消息:"2026-03-14 积分日报。今天收入 15 分...当前余额 120.3 分..."
相关文件
scripts/parse-input.js- 解析自然语言输入scripts/calculate-points.js- 计算积分scripts/generate-report.js- 生成报表scripts/generate-daily-report.js- 生成每日日报(含 TTS 文案)scripts/send-daily-report.sh- 定时任务脚本(发送飞书 + 语音播报)config/rules.json- 积分规则配置
🎤 语音交互技术细节
🔊 语音输出(TTS)
TTS 文案生成
日报生成时会自动生成两个版本的文本:
| 字段 | 用途 | 内容特点 |
|---|---|---|
feishuMessage | 飞书消息 | 带 markdown 格式、表格、emoji,适合阅读 |
ttsContent | 语音播报 | 纯文本,无符号,适合朗读 |
TTS 配置
| 配置项 | 值 | 说明 |
|---|---|---|
| 引擎 | SenseAudio HTTP TTS | 高质量语音合成 |
| 声音 | child_0001_a | 童声,亲切活泼 |
| 格式 | WAV | 系统原生支持 |
| 采样率 | 32000 Hz | 高质量音频 |
| 播放 | 自动检测播放器 | aplay > paplay > ffplay |
🎧 语音输入(ASR)
ASR 识别流程
音频文件 → SenseAudio ASR → 文本 → 积分解析 → 添加积分
ASR 配置
| 配置项 | 值 | 说明 |
|---|---|---|
| 引擎 | SenseAudio HTTP ASR | 高精度语音识别 |
| 模型 | sense-asr-deepthink | 深度理解模型 |
| 支持格式 | OGG, WAV, MP3, M4A | 常见音频格式 |
| 语言 | 中文普通话 | 支持方言增强 |
| 响应 | JSON | 返回识别文本 |
支持的音频场景
| 场景 | 示例 | 处理 |
|---|---|---|
| 记账 | "学习积分 今天完成了..." | 识别 → 解析 → 添加积分 |
| 查询 | "今天多少分了?" | 识别 → 判断意图 → 查询回复 |
| 消费 | "积分消费 买零食..." | 识别 → 解析 → 扣除积分 |
| 闲聊 | "真棒!" | 识别 → 友好回复 |
TTS 文案规则
- 包含内容:总收入、总支出、净收益、当前余额、距离上限、鼓励短语
- 排除内容:表格、markdown 符号、emoji、详细明细列表
- 语音风格:使用
child_0001_a(童声,亲切活泼,适合儿童) - 音频格式:WAV(系统原生支持)
示例
TTS 文案输出:
2026-03-13 积分日报。昨天收入 10 分。汉字抄写 2 分,口算题卡 3 分,跳绳 5 分。净赚 10 分。当前余额 112.3 分。距离 400 分上限还有 287.7 分。昨天表现不错,继续加油!
定时任务流程
# 每日 22:00 执行
1. 运行 generate-daily-report.js → 生成日报 + feishuMessage + ttsContent
2. 发送飞书消息(使用 feishuMessage)
3. 播放语音播报(使用 ttsContent + edge-tts)
📦 ClawHub 发布准备
发布信息
# 登录 ClawHub
clawhub login
# 查看当前用户
clawhub whoami
# 发布技能(从 workspace 根目录执行)
clawhub publish ./skills/kids-points \
--slug kids-points \
--name "孩子积分管理" \
--version 1.1.0 \
--changelog "v1.1: TTS 语音播报优化,分离阅读文案和语音文案,解决长文本截断问题"
🔧 系统依赖
运行环境:
- Node.js v18+ (技能主体)
- Python 3.8+ (语音处理)
Python 依赖:
pip3 install requests # SenseAudio TTS/ASR HTTP 接口
音频播放器(至少一个):
aplay(ALSA) - ✅ 推荐,WAV 原生支持paplay(PulseAudio) - 支持多种格式ffplay(FFmpeg) - 功能最强
安装音频播放器:
# Ubuntu/Debian
sudo apt-get install alsa-utils # aplay
sudo apt-get install pulseaudio # paplay
sudo apt-get install ffmpeg # ffplay
🔗 依赖技能
核心功能(无需额外技能)
✅ 文字记账、查询、统计等功能可以直接使用,无需安装额外技能!
语音功能(可选增强)
| 技能 | 用途 | 必需 | 说明 |
|---|---|---|---|
kid-point-voice-component | TTS 语音合成 | ⚠️ 可选 | 语音播报、鼓励语音 |
kid-point-voice-component | ASR 语音识别 | ⚠️ 可选 | 音频消息识别 |
schedule-manager | 定时任务 | ⚠️ 可选 | 自动日报 |
feishu-doc | 飞书文档 | ⚠️ 可选 | 日报存储 |
💡 提示:
- 没有
kid-point-voice-component/asr也可以使用所有文字功能 - 安装后可解锁语音输入/输出功能
- SenseAudio 目前基本免费,推荐申请使用
🔑 API 配置
需要配置 SenseAudio API Key:
// ~/.openclaw/openclaw.json
{
"env": {
"SENSE_API_KEY": "sk-xxx..."
}
}
获取 API Key:
- 访问 https://senseaudio.cn
- 注册账号
- 创建应用获取 API Key
- 添加到
openclaw.json的env配置
🎯 语音能力说明
支持的语音场景
| 场景 | 输入 | 输出 | 说明 |
|---|---|---|---|
| 音频记账 | 音频消息 | 语音确认 | 自动识别并添加积分 |
| 语音查询 | 音频消息 | 语音回复 | 查询今日/本周/本月积分 |
| 日报播报 | 定时触发 | 语音播报 | 每天早上 7 点自动播放 |
| 鼓励反馈 | 积分变动 | 语音鼓励 | 实时播放鼓励语音 |
语音特性
- ✅ 童声播报 - 使用
child_0001_a童声,亲切自然 - ✅ 智能识别 - SenseAudio 深度理解模型,准确率高
- ✅ 多格式支持 - OGG、WAV、MP3、M4A 自动识别
- ✅ 实时反馈 - 积分变动立即语音反馈
- ✅ 自动播报 - 日报自动语音播放
|
schedule-manager| 定时任务调度 | ✅ 是(自动日报) | |feishu-doc| 飞书消息发送 | ✅ 是(飞书集成) |
配置清单
环境变量(可选):
export WORKSPACE="/home/wang/.openclaw/agents/kids-study/workspace"
export POINTS_DIR="/home/wang/.openclaw/agents/kids-study/workspace/kids-points"
export TZ="Asia/Shanghai"
定时任务(cron 示例):
# 每日 22:00 生成积分日报
0 22 * * * cd ~/.openclaw/agents/kids-study/workspace && bash skills/kids-points/scripts/send-daily-report.sh
测试清单
- 积分记账功能正常
- 积分消费功能正常
- 今日积分查询正常
- 日报生成功能正常
- TTS 语音播报清晰可懂
- 长文本无截断问题
- 定时任务脚本可执行
文件清单
skills/kids-points/
├── SKILL.md # 技能说明(必需)
├── README.md # 使用文档
├── USAGE.md # 详细用法
├── config.md # 配置说明
├── package.json # Node.js 依赖
├── agent-handler.js # OpenClaw 集成入口
├── config/
│ └── rules.json # 积分规则配置
└── scripts/
├── index.js # 命令行入口
├── handler.js # 主处理器(含 TTS 调用)
├── parse-input.js # 输入解析
├── generate-daily-report.js # 日报生成(含 TTS 文案)
├── send-daily-report.sh # 定时任务脚本
├── daily-summary.js # 每日总结
└── handle-image.js # 图片处理
升级说明
从 v1.0 升级到 v1.1:
- 更新
generate-daily-report.js(新增 TTS 文案生成) - 更新
send-daily-report.sh(使用 ttsContent 播放语音) - 确保安装 kid-point-voice-component 依赖:
pip3 install requests
最后更新:2026-03-13 | 维护者:老王
📚 完整文档索引
| 文档 | 用途 | 说明 |
|---|---|---|
| RULES.md | 📋 完整规则说明 | 包含所有积分规则、记账规则、调账规则、语音交互规则 |
| SKILL.md | 🔧 技能技术文档 | 技能架构、API、配置、依赖 |
| README.md | 🚀 快速入门 | 快速了解核心功能和使用方法 |
| USAGE.md | 📖 使用指南 | 详细使用说明和示例 |
| CONFIG.md | ⚙️ 配置说明 | 规则配置详解 |
推荐阅读顺序: README.md → RULES.md → USAGE.md → SKILL.md
⚠️ 重要依赖提示
本技能严重依赖 SenseAudio 语音能力,请确保已安装:
- ✅ kid-point-voice-component - TTS 语音合成(语音播报)
- ✅ kid-point-voice-component - ASR 语音识别(音频输入)
- ✅ requests - Python HTTP 库
- ✅ 音频播放器 - aplay/paplay/ffplay
- ✅ SENSE_API_KEY - API 密钥配置
📋 详细安装说明:查看 DEPENDENCIES.md