【免费下载链接】hi-kid
HiKid - Your AI English Pal. A desktop app built with React and TypeScript, targeting children in non-English-speaking countries who want to practice English speaking and listening.
HiKid 是一款面向儿童的免费开源 AI 英语会话桌面应用,孩子对着麦克风说话,AI 小猫 Kitten 就会用英语回答、讲故事、玩单词游戏。任何语音对话产品都无法避免技术故障:识别没听清、大模型超时、语音合成失败、网络抖动。HiKid 的做法很有启发性——它不显示"错误代码",而是把每类技术故障都包装成角色台词,也就是"童话式错误处理",让孩子感受不到挫败感。这篇文章带你快速看懂这套儿童体验设计及其实现思路。
为什么错误提示要"童话化"
对儿童用户来说,Error、Timeout、Connection Refused这类词只会带来两件事:看不懂、被吓到。儿童应用设计里有一条朴素的原则:错误不是给机器看的,情绪才是给用户看的。
HiKid 的错误提示全部采用第一人称、口语化的角色语气,例如:
- 不是"ASR 识别结果为空",而是"没听清,能大声一点吗?"
- 不是"LLM 响应超时",而是"我走神了,再说一遍好吗?"
- 不是"TTS 服务异常",而是"我嗓子有点哑,换个问题吧!"
这种写法有两个好处:把"系统坏了"转述为"我(Kitten)出了点小状况",责任主体变成了友善的角色;同时台词里天然带出下一步动作(大声点、再说一遍、换个问题),孩子知道该做什么。
错误台词清单:一行错误,一句台词
所有错误文案集中在两个国际化文件里,中英文各一套,随系统语言自动切换:
| 技术错误类型 | 中文台词(zh.json) | 英文台词(en.json) |
|---|---|---|
ASR 识别为空error.asr_empty | 没听清,能大声一点吗? | My ears are sleepy, can you say it louder? |
LLM 超时error.llm_timeout | 我走神了,再说一遍好吗? | My brain got a little dizzy, let's try again! |
TTS 失败error.tts_failure | 我嗓子有点哑,换个问题吧! | My voice is hiding, can you ask me something else? |
服务未启动error.service_start | 还没准备好,等一会儿哦! | My toys are still waking up, please wait a moment! |
下载失败error.download_failed | 下载出错了,再试一次吧! | Oops, something went wrong while getting my toys! |
网络异常error.network | 网络不太稳定,再试一次吧! | The internet seems sleepy, can you try again? |
兜底错误error.generic | 哎呀,出了点小问题! | Oops, something unexpected happened! |
可以看出,英文版本同样遵守同一套原则:用 sleepy、hiding、taking a nap 这类拟人化词汇替代技术词汇。
一次"犯错"的完整流程:从技术异常到温柔提示
文案写好后,HiKid 用一条很短的链路把它送到界面上:
- 错误归类:主进程在 channels.ts 中维护一张错误类型到 i18n key 的映射表
ERROR_I18N_KEYS(如ASR_EMPTY → error.asr_empty),未知类型自动落到error.generic兜底。 - 本地化 + 落日志:
sendLocalizedError()先查出对应语言的台词,再调用logger.error把技术细节写进日志,最后通过 IPCerror通道发给渲染进程——技术细节进日志,情绪化台词进界面,两条线分开。 - 界面轻提示:渲染进程在 App.tsx 里把错误渲染成一个可手动关闭的轻提示条(error toast),不打断对话氛围;状态由 useConversation.ts 统一管理。
- 自动恢复:在自动监听(VAD)模式下,错误关闭后程序会等待 800 毫秒自动重新开启录音(见 useConversation.ts),孩子甚至不需要做任何操作,对话就继续了。
这套行为还有测试保障:i18n.test.ts 验证了 zh/en 语言返回正确台词、未知语言回退到英文、缺失 key 回退到 key 本身。
四条可复用的"童话式错误文案"原则
- 第一人称拟人:用角色的身体部位说话——"耳朵困了""嗓子哑了",把故障变成角色的"小意外"。
- 必须附带行动建议:每句台词都给出重试、等待或换话题等下一步,避免"卡死感"。
- 不暴露技术名词:孩子界面里不出现 TTS、ASR、超时等词;确实需要家长介入的(如
Ollama 好像没在运行,请检查一下!)才使用直白表述。 - 保持语气积极:用"哦、啦、吧"这类柔和语气词收尾,即使兜底错误也是"哎呀,出了点小问题!",而非"系统错误 500"。
相关模块路径速查
- 错误文案(中文):zh.json
- 错误文案(英文):en.json
- 错误映射与发送逻辑:channels.ts
- 前端错误提示 UI:App.tsx
- 会话状态与错误管理 Hook:useConversation.ts
- 安装与环境说明:INSTALL.md
把"报错"变成"角色在跟你说话",是儿童 AI 应用中成本很低、体验收益很高的一笔设计——HiKid 用不到 10 句台词,就完成了一次教科书级的童话式错误处理示范。
【免费下载链接】hi-kid
HiKid - Your AI English Pal. A desktop app built with React and TypeScript, targeting children in non-English-speaking countries who want to practice English speaking and listening.
相关推荐
dots 引擎的会话归档提示词解析:consolidator_archive.md 如何把长对话压缩成 SNIP 检查点
dots 引擎的会话归档提示词解析:consolidator_archive.md 如何把长对话压缩成 SNIP 检查点 本文以 dots 引擎(invisib
人工智能AI Agent浏览器控制gh_mirrors/dou/douyin数据库设计详解:SQLite3存储视频元数据的高效方案
gh_mirrors/dou/douyin数据库设计详解:SQLite3存储视频元数据的高效方案 gh_mirrors/dou/douyin是一款基于Golan
网页爬虫ChatTTS-ui多角色对话生成:构建互动式语音故事
ChatTTS ui多角色对话生成:构建互动式语音故事 在数字内容创作领域,语音交互正成为提升用户体验的关键技术。无论是教育课程、有声小说还是游戏剧情,多角色语
人工智能语音AI 应用本地部署后端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考