# 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平台实现和教育场景使用。