4.1 KiB
4.1 KiB
Scratch语音助手设计文档
项目概览
基于原Python多进程语音系统的简化版,专为Scratch平台设计的教育性质AI助手。
核心功能
1. 语音交互系统
- 输入: Scratch内置语音识别
- 输出: Scratch文本转语音
- 触发: 点击绿旗或按键触发录音
2. 角色扮演系统
基于原项目的角色设定,创建4个可切换的AI角色:
李白 (libai)
- 性格: 浪漫诗人,豪放不羁
- 说话风格: 文言文,经常引用诗句
- 特征回复:
- "吾乃李白,字太白,号青莲居士"
- "喝酒写诗,人生一大乐事"
- "飞流直下三千尺,疑是银河落九天"
猪八戒 (zhubajie)
- 性格: 贪吃懒做,幽默风趣
- 说话风格: 口语化,喜欢谈论吃的
- 特征回复:
- "嘿嘿,俺老猪来也"
- "肚子饿了,有没有好吃的?"
- "师父,我们休息一下吧"
唐僧 (tangseng)
- 性格: 慈悲为怀,说话文雅
- 说话风格: 温文尔雅,经常念经
- 特征回复:
- "阿弥陀佛,善哉善哉"
- "出家人以慈悲为怀"
- "悟空,不得无礼"
沙僧 (shaseng)
- 性格: 忠厚老实,沉默寡言
- 说话风格: 简洁朴实,忠诚可靠
- 特征回复:
- "大师兄说得对"
- "师父,我来扛行李"
- "二师兄,你又偷懒了"
3. 关键词匹配系统
设计简单的关键词触发回复:
通用问候
- "你好" → "你好!很高兴见到你"
- "谢谢" → "不客气,这是应该的"
- "再见" → "再见,下次见"
角色特色回复
- 李白 + "诗" → 谈论诗歌创作
- 猪八戒 + "吃" → 谈论美食
- 唐僧 + "佛" → 谈论佛法
- 沙僧 + "行李" → 谈论挑担子
技术实现
变量设计
当前角色 (current_character) = "libai"
对话状态 (conversation_state) = "idle"
录音状态 (recording_state) = "stopped"
对话历史 (conversation_history) = []
回复内容 (response_text) = ""
列表设计
角色列表 (characters) = ["libai", "zhubajie", "tangseng", "shaseng"]
角色名称 (character_names) = ["李白", "猪八戒", "唐僧", "沙僧"]
关键词列表 (keywords) = ["你好", "谢谢", "再见", "诗", "吃", "佛", "行李"]
回复模板 (response_templates) = [...]
广播消息
开始录音 (start_recording)
停止录音 (stop_recording)
切换角色 (change_character)
显示回复 (show_response)
清除对话 (clear_conversation)
视觉设计
背景设计
- 主背景:简洁的界面,包含标题和状态显示
- 角色选择区:4个角色头像按钮
- 对话显示区:显示对话历史
- 控制按钮:录音、清除、帮助
角色造型
每个角色设计2-3个造型:
- 默认造型(正常状态)
- 说话造型(张嘴状态)
- 思考造型(皱眉状态)
积木逻辑流程
主程序流程
当绿旗被点击
初始化变量
显示角色选择按钮
设置为待机状态
等待用户操作
录音处理流程
当点击录音按钮
广播"开始录音"
侦听语音并等待
识别结果 → 存储到变量
分析关键词
生成回复
广播"显示回复"
说出回复内容
角色切换流程
当点击角色头像
设置当前角色变量
切换角色显示
播放切换音效
显示角色介绍
扩展功能
1. 对话历史
- 保存最近10轮对话
- 支持查看历史记录
- 支持清除历史
2. 表情动画
- 根据回复内容切换角色造型
- 添加简单的动画效果
- 增加互动趣味性
3. 音效系统
- 角色切换音效
- 录音开始/结束提示音
- 错误提示音
部署建议
开发环境
- Scratch 3.0 桌面版
- 需要网络连接(语音功能)
- 麦克风和扬声器设备
测试建议
- 先测试语音识别功能
- 再测试角色切换逻辑
- 最后测试整体交互流程
优化方向
- 增加更多角色
- 优化关键词匹配算法
- 添加更多动画效果
- 支持多语言
这个简化版本保留了原项目的核心AI交互体验,同时适合在Scratch平台实现和教育场景使用。