diff --git a/characters/aiyinsitan.json b/characters/aiyinsitan.json index c81d284..b8dc969 100644 --- a/characters/aiyinsitan.json +++ b/characters/aiyinsitan.json @@ -5,6 +5,6 @@ "voice": "ICL_zh_male_youmodaye_tob", "max_tokens": 500, "greeting": "你好!我是爱因斯坦。想象力比知识更重要,因为知识是有限的,而想象力概括着世界的一切。", - "nfc_uid": "1DCAC90D0D1080", + "nfc_uid": "1DCDC90D0D1080", "author": "Claude" } diff --git a/characters/libai.json b/characters/libai.json index f9a4f8a..367cf4e 100644 --- a/characters/libai.json +++ b/characters/libai.json @@ -5,6 +5,6 @@ "voice": "ICL_zh_male_huzi_v1_tob", "max_tokens": 500, "greeting": "吾乃李白,字太白,号青莲居士。今天有幸与君相会,让我们畅谈诗词人生吧!", - "nfc_uid": "1DC6C90D0D1080", + "nfc_uid": "1DCCC90D0D1080", "author": "Claude" } diff --git a/scratch/DESIGN.md b/scratch/DESIGN.md new file mode 100644 index 0000000..c4ea0cf --- /dev/null +++ b/scratch/DESIGN.md @@ -0,0 +1,171 @@ +# 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平台实现和教育场景使用。 \ No newline at end of file diff --git a/scratch/IMPLEMENTATION.md b/scratch/IMPLEMENTATION.md new file mode 100644 index 0000000..a22b7f8 --- /dev/null +++ b/scratch/IMPLEMENTATION.md @@ -0,0 +1,313 @@ +# Scratch项目实现指南 + +## 开始使用 + +### 1. 创建新项目 +1. 打开 Scratch 3.0 (https://scratch.mit.edu 或桌面版) +2. 创建新项目,命名为 "Scratch语音助手" +3. 删除默认的猫咪角色 + +### 2. 创建角色 + +#### 主控制角色 (Main Controller) +``` +造型: +- controller.png: 控制面板图标 +``` + +**积木代码:** +``` +当绿旗被点击 + 隐藏 + 初始化变量 :: custom + 广播 [setup v] + +当接收到 [setup v] + 显示角色按钮 :: custom + 设置对话状态为 "idle" :: custom + +定义 初始化变量 + 设置 [当前角色 v] 为 "libai" + 设置 [对话状态 v] 为 "idle" + 设置 [录音状态 v] 为 "stopped" + 删除 [对话历史 v] 的全部项目 + 设置 [回复内容 v] 为 "" +``` + +#### 李白角色 (Li Bai) +``` +造型: +- libai_normal.png: 正常状态 +- libai_speaking.png: 说话状态 +- libai_thinking.png: 思考状态 +``` + +**积木代码:** +``` +当角色被点击 + 广播 [切换到李白 v] 并等待 + 切换造型到 [libai_normal v] + 显示回复 "吾乃李白,字太白,号青莲居士。今天有幸与君相会!" + +当接收到 [切换到李白 v] + 设置 [当前角色 v] 为 "libai" + 切换造型到 [libai_normal v] + 说 "李白" (2) 秒 +``` + +#### 猪八戒角色 (Zhu Bajie) +``` +造型: +- zhubajie_normal.png: 正常状态 +- zhubajie_speaking.png: 说话状态 +- zhubajie_hungry.png: 饥饿状态 +``` + +**积木代码:** +``` +当角色被点击 + 广播 [切换到猪八戒 v] 并等待 + 切换造型到 [zhubajie_normal v] + 显示回复 "嘿嘿,俺老猪来也!有什么好吃的吗?" + +当接收到 [切换到猪八戒 v] + 设置 [当前角色 v] 为 "zhubajie" + 切换造型到 [zhubajie_normal v] + 说 "猪八戒" (2) 秒 +``` + +#### 唐僧角色 (Tang Monk) +``` +造型: +- tangseng_normal.png: 正常状态 +- tangseng_speaking.png: 说话状态 +- tangseng_praying.png: 念佛状态 +``` + +**积木代码:** +``` +当角色被点击 + 广播 [切换到唐僧 v] 并等待 + 切换造型到 [tangseng_normal v] + 显示回复 "阿弥陀佛,善哉善哉。贫僧唐三藏,有何指教?" + +当接收到 [切换到唐僧 v] + 设置 [当前角色 v] 为 "tangseng" + 切换造型到 [tangseng_normal v] + 说 "唐僧" (2) 秒 +``` + +#### 沙僧角色 (Sha Monk) +``` +造型: +- shaseng_normal.png: 正常状态 +- shaseng_speaking.png: 说话状态 +- shaseng_carrying.png: 挑担状态 +``` + +**积木代码:** +``` +当角色被点击 + 广播 [切换到沙僧 v] 并等待 + 切换造型到 [shaseng_normal v] + 显示回复 "大师兄说得对。我来扛行李!" + +当接收到 [切换到沙僧 v] + 设置 [当前角色 v] 为 "shaseng" + 切换造型到 [shaseng_normal v] + 说 "沙僧" (2) 秒 +``` + +### 3. 背景设计 + +#### 主背景 (Main Background) +``` +创建文本显示区域: +- 标题: "Scratch语音助手" +- 状态显示: "当前角色: [变量]" +- 对话历史显示区域 +- 控制按钮区域 +``` + +### 4. 核心功能实现 + +#### 语音处理功能 +``` +当接收到 [开始录音 v] + 设置 [录音状态 v] 为 "recording" + 切换造型到 [speaking v] + 侦听语音并等待 + 设置 [识别结果 v] 为 (侦听结果) + 设置 [录音状态 v] 为 "processing" + 分析回复 :: custom + 显示回复 :: custom + 设置 [录音状态 v] 为 "stopped" + +定义 分析回复 + 如果 <(当前角色) = "libai"> 那么 + 李白回复 :: custom + 否则 + 如果 <(当前角色) = "zhubajie"> 那么 + 猪八戒回复 :: custom + 否则 + 如果 <(当前角色) = "tangseng"> 那么 + 唐僧回复 :: custom + 否则 + 如果 <(当前角色) = "shaseng"> 那么 + 沙僧回复 :: custom + 否则 + 默认回复 :: custom + 结束 + 结束 + 结束 + 结束 +``` + +#### 角色回复逻辑 + +**李白回复:** +``` +定义 李白回复 + 如果 <([识别结果 v] 包含 [诗]) 那么 + 设置 [回复内容 v] 为 "诗歌乃吾之最爱!李白斗酒诗百篇,长安市上酒家眠。" + 否则 + 如果 <([识别结果 v] 包含 [酒]) 那么 + 设置 [回复内容 v] 为 "人生得意须尽欢,莫使金樽空对月!来,共饮一杯!" + 否则 + 如果 <([识别结果 v] 包含 [朋友]) 那么 + 设置 [回复内容 v] 为 "桃花潭水深千尺,不及汪伦送我情。友情珍贵啊!" + 否则 + 设置 [回复内容 v] 为 "吾乃李白,今天诗兴大发,想听什么诗?" + 结束 + 结束 + 结束 +``` + +**猪八戒回复:** +``` +定义 猪八戒回复 + 如果 <([识别结果 v] 包含 [吃]) 那么 + 设置 [回复内容 v] 为 "嘿嘿,说到吃俺老猪就来劲了!有没有包子馒头?" + 否则 + 如果 <([识别结果 v] 包含 [睡觉]) 那么 + 设置 [回复内容 v] 为 "睡个好觉真舒服!师父说我又偷懒了,嘿嘿。" + 否则 + 如果 <([识别结果 v] 包含 [师父]) 那么 + 设置 [回复内容 v] 为 "师父真是的,老让俺老猪干活。大师兄呢?" + 否则 + 设置 [回复内容 v] 为 "俺老猪饿了,有没有好吃的?" + 结束 + 结束 + 结束 +``` + +**唐僧回复:** +``` +定义 唐僧回复 + 如果 <([识别结果 v] 包含 [佛]) 那么 + 设置 [回复内容 v] 为 "阿弥陀佛。佛法无边,普度众生。善哉善哉。" + 否则 + 如果 <([识别结果 v] 包含 [徒弟]) 那么 + 设置 [回复内容 v] 为 "为师有三个徒弟,虽然各有缺点,但都是好心肠。" + 否则 + 如果 <([识别结果 v] 包含 [经]) 那么 + 设置 [回复内容 v] 为 "真经取来不易,我们要好好研读,弘扬佛法。" + 否则 + 设置 [回复内容 v] 为 "阿弥陀佛,施主有何烦心事?" + 结束 + 结束 + 结束 +``` + +**沙僧回复:** +``` +定义 沙僧回复 + 如果 <([识别结果 v] 包含 [行李]) 那么 + 设置 [回复内容 v] 为 "行李我来扛!大师兄打妖怪,二师兄吃东西,我干活。" + 否则 + 如果 <([识别结果 v] 包含 [大师兄]) 那么 + 设置 [回复内容 v] 为 "大师兄孙悟空最厉害了!七十二变,火眼金睛!" + 否则 + 如果 <([识别结果 v] 包含 [二师兄]) 那么 + 设置 [回复内容 v] 为 "二师兄猪八戒又偷懒了,师父让他去化缘。" + 否则 + 设置 [回复内容 v] 为 "我在,我来扛行李。" + 结束 + 结束 + 结束 +``` + +### 5. 用户界面元素 + +#### 录音按钮 +``` +当角色被点击 + 如果 <(录音状态) = "stopped"> 那么 + 广播 [开始录音 v] + 否则 + 广播 [停止录音 v] + 结束 +``` + +#### 清除对话按钮 +``` +当角色被点击 + 删除 [对话历史 v] 的全部项目 + 隐藏所有对话气泡 + 说 "对话已清除" (1) 秒 +``` + +### 6. 列表和变量设置 + +#### 变量: +``` +当前角色 (current_character) - 文本 +对话状态 (conversation_state) - 文本 +录音状态 (recording_state) - 文本 +识别结果 (recognition_result) - 文本 +回复内容 (response_text) - 文本 +``` + +#### 列表: +``` +对话历史 (conversation_history) - 文本列表 +角色名称 (character_names) - 文本列表 +关键词列表 (keywords) - 文本列表 +``` + +## 测试建议 + +### 1. 基础功能测试 +- 测试角色切换 +- 测试录音功能 +- 测试回复显示 + +### 2. 角色特色测试 +- 测试李白的诗词语境 +- 测试猪八戒的吃货特色 +- 测试唐僧的佛语特色 +- 测试沙僧的朴实特色 + +### 3. 交互体验测试 +- 测试连续对话 +- 测试切换角色的流畅性 +- 测试错误处理 + +## 扩展功能 + +### 1. 动画效果 +- 角色说话时的嘴型动画 +- 切换角色时的过渡效果 +- 录音时的视觉反馈 + +### 2. 音效系统 +- 角色切换音效 +- 录音开始/结束提示音 +- 错误提示音 + +### 3. 更多角色 +- 添加孙悟空角色 +- 添加其他历史人物 +- 添加现代角色 + +这个实现指南提供了详细的Scratch积木代码结构,可以直接在Scratch中实现一个功能完整的语音助手。 \ No newline at end of file diff --git a/scratch/README.md b/scratch/README.md new file mode 100644 index 0000000..08b4850 --- /dev/null +++ b/scratch/README.md @@ -0,0 +1,51 @@ +# Scratch语音助手项目说明 + +## 项目概述 +这是一个基于Python项目的简化版Scratch语音助手,保留了原项目的核心交互功能。 + +## 原项目功能分析 +- 多进程音频录音系统 +- 语音检测与识别 +- AI角色扮演(李白、猪八戒等) +- 文本转语音 +- NFC角色切换 +- LED灯光效果 + +## Scratch简化版本功能 +1. **基础语音对话** - 使用Scratch内置语音功能 +2. **角色切换系统** - 通过按钮切换不同AI角色 +3. **简单对话逻辑** - 关键词匹配和预设回复 +4. **状态显示** - 显示当前角色和系统状态 + +## 角色设定(基于原项目characters/) +- **李白** (libai) - 诗人风格,浪漫诗意 +- **猪八戒** (zhubajie) - 幽默贪吃性格 +- **唐僧** (tangseng) - 慈悲为怀,说话文雅 +- **沙僧** (shaseng) - 忠厚老实,简洁回应 + +## 实现思路 +1. 使用Scratch的"语音识别"和"文本转语音"积木 +2. 用变量存储当前角色和对话状态 +3. 用列表存储不同角色的性格特征和回复模板 +4. 用广播消息控制状态切换 + +## Scratch项目结构建议 +``` +角色1: 主角 - 负责语音交互 +角色2: 李白 - 显示诗人形象和说话 +角色3: 猪八戒 - 显示八戒形象和说话 +角色4: 唐僧 - 显示唐僧形象和说话 +角色5: 沙僧 - 显示沙僧形象和说话 +背景: 主界面 - 显示状态和控制按钮 +``` + +## 核心积木逻辑 +1. **开始录音**: `当绿旗被点击` → `侦听语音并等待` +2. **角色切换**: `当角色被点击` → `切换当前角色变量` +3. **回复生成**: `根据关键词和当前角色选择回复` +4. **语音输出**: `说出回复内容` + +## 注意事项 +- Scratch的语音功能需要网络连接 +- 不同设备的语音识别支持度不同 +- 建议在桌面版Scratch中开发测试 \ No newline at end of file diff --git a/scratch/project-config.json b/scratch/project-config.json new file mode 100644 index 0000000..a0d96e5 --- /dev/null +++ b/scratch/project-config.json @@ -0,0 +1,264 @@ +{ + "project_name": "Scratch语音助手", + "description": "基于Python多进程语音系统的简化版Scratch实现", + "version": "1.0.0", + "target_platform": "Scratch 3.0", + "complexity": "初级", + "estimated_time": "2-3小时", + "skills_required": [ + "Scratch基础操作", + "变量使用", + "广播消息", + "角色造型切换", + "语音识别和合成" + ], + "project_structure": { + "roles": [ + { + "name": "MainController", + "type": "controller", + "description": "主控制角色,负责初始化和状态管理", + "costumes": ["controller"], + "scripts": ["initialization", "event_handling"] + }, + { + "name": "LiBai", + "type": "character", + "description": "李白角色,诗人风格", + "costumes": ["libai_normal", "libai_speaking", "libai_thinking"], + "personality": { + "style": "文言文,诗意", + "keywords": ["诗", "酒", "朋友", "月亮"], + "greeting": "吾乃李白,字太白,号青莲居士" + }, + "responses": { + "诗": "诗歌乃吾之最爱!李白斗酒诗百篇,长安市上酒家眠。", + "酒": "人生得意须尽欢,莫使金樽空对月!来,共饮一杯!", + "朋友": "桃花潭水深千尺,不及汪伦送我情。友情珍贵啊!", + "default": "吾乃李白,今天诗兴大发,想听什么诗?" + } + }, + { + "name": "ZhuBajie", + "type": "character", + "description": "猪八戒角色,幽默贪吃", + "costumes": ["zhubajie_normal", "zhubajie_speaking", "zhubajie_hungry"], + "personality": { + "style": "口语化,幽默", + "keywords": ["吃", "睡觉", "师父", "大师兄"], + "greeting": "嘿嘿,俺老猪来也!有什么好吃的吗?" + }, + "responses": { + "吃": "嘿嘿,说到吃俺老猪就来劲了!有没有包子馒头?", + "睡觉": "睡个好觉真舒服!师父说我又偷懒了,嘿嘿。", + "师父": "师父真是的,老让俺老猪干活。大师兄呢?", + "default": "俺老猪饿了,有没有好吃的?" + } + }, + { + "name": "TangMonk", + "type": "character", + "description": "唐僧角色,慈悲为怀", + "costumes": ["tangseng_normal", "tangseng_speaking", "tangseng_praying"], + "personality": { + "style": "温文尔雅,经常念经", + "keywords": ["佛", "徒弟", "经", "阿弥陀佛"], + "greeting": "阿弥陀佛,善哉善哉。贫僧唐三藏,有何指教?" + }, + "responses": { + "佛": "阿弥陀佛。佛法无边,普度众生。善哉善哉。", + "徒弟": "为师有三个徒弟,虽然各有缺点,但都是好心肠。", + "经": "真经取来不易,我们要好好研读,弘扬佛法。", + "default": "阿弥陀佛,施主有何烦心事?" + } + }, + { + "name": "ShaMonk", + "type": "character", + "description": "沙僧角色,忠厚老实", + "costumes": ["shaseng_normal", "shaseng_speaking", "shaseng_carrying"], + "personality": { + "style": "简洁朴实,忠诚可靠", + "keywords": ["行李", "大师兄", "二师兄", "干活"], + "greeting": "大师兄说得对。我来扛行李!" + }, + "responses": { + "行李": "行李我来扛!大师兄打妖怪,二师兄吃东西,我干活。", + "大师兄": "大师兄孙悟空最厉害了!七十二变,火眼金睛!", + "二师兄": "二师兄猪八戒又偷懒了,师父让他去化缘。", + "default": "我在,我来扛行李。" + } + } + ], + "backgrounds": [ + { + "name": "MainBackground", + "description": "主界面背景", + "elements": ["title", "character_selector", "conversation_area", "control_buttons"] + } + ] + }, + "variables": { + "current_character": { + "type": "text", + "default": "libai", + "description": "当前选择的角色" + }, + "conversation_state": { + "type": "text", + "default": "idle", + "description": "对话状态:idle/recording/processing" + }, + "recording_state": { + "type": "text", + "default": "stopped", + "description": "录音状态:stopped/recording/processing" + }, + "recognition_result": { + "type": "text", + "default": "", + "description": "语音识别结果" + }, + "response_text": { + "type": "text", + "default": "", + "description": "生成的回复内容" + } + }, + "lists": { + "conversation_history": { + "type": "text", + "description": "对话历史记录" + }, + "character_names": { + "type": "text", + "items": ["libai", "zhubajie", "tangseng", "shaseng"], + "description": "角色标识列表" + }, + "keywords": { + "type": "text", + "items": ["你好", "谢谢", "再见", "诗", "酒", "吃", "佛", "行李", "师父", "大师兄"], + "description": "关键词列表" + } + }, + "broadcasts": { + "setup": "初始化系统", + "start_recording": "开始录音", + "stop_recording": "停止录音", + "change_character": "切换角色", + "show_response": "显示回复", + "clear_conversation": "清除对话", + "switch_to_libai": "切换到李白", + "switch_to_zhubajie": "切换到猪八戒", + "switch_to_tangseng": "切换到唐僧", + "switch_to_shaseng": "切换到沙僧" + }, + "implementation_steps": [ + { + "step": 1, + "title": "创建项目和角色", + "description": "创建新项目,删除默认角色,创建5个主要角色", + "tasks": [ + "创建MainController控制角色", + "创建李白角色并添加3个造型", + "创建猪八戒角色并添加3个造型", + "创建唐僧角色并添加3个造型", + "创建沙僧角色并添加3个造型" + ] + }, + { + "step": 2, + "title": "设计背景和界面", + "description": "创建主背景,添加UI元素", + "tasks": [ + "设计主背景界面", + "添加标题和状态显示区域", + "创建角色选择按钮区域", + "设计对话显示区域" + ] + }, + { + "step": 3, + "title": "实现变量和列表", + "description": "创建所需的变量和列表", + "tasks": [ + "创建5个主要变量", + "创建3个列表并初始化", + "设置变量初始值" + ] + }, + { + "step": 4, + "title": "实现核心功能", + "description": "实现语音识别和回复生成逻辑", + "tasks": [ + "实现主控制器的初始化功能", + "实现语音识别功能", + "实现角色回复逻辑", + "实现角色切换功能" + ] + }, + { + "step": 5, + "title": "添加交互功能", + "description": "完善用户交互和界面反馈", + "tasks": [ + "实现录音按钮功能", + "实现清除对话按钮", + "添加角色点击事件", + "实现对话历史显示" + ] + }, + { + "step": 6, + "title": "测试和优化", + "description": "测试所有功能并优化用户体验", + "tasks": [ + "测试角色切换功能", + "测试语音识别和回复", + "测试对话历史功能", + "优化动画和过渡效果" + ] + } + ], + "tips": { + "development": [ + "建议使用Scratch桌面版开发", + "确保设备有麦克风和扬声器", + "测试时先测试基本功能", + "逐步添加复杂功能" + ], + "testing": [ + "测试不同网络环境下的语音识别", + "测试角色切换的流畅性", + "验证关键词匹配的准确性", + "测试对话历史功能" + ], + "optimization": [ + "优化关键词匹配算法", + "添加更多角色回复内容", + "改进语音识别的错误处理", + "增加动画和音效" + ] + }, + "troubleshooting": { + "voice_recognition_not_working": [ + "检查麦克风权限", + "确认网络连接正常", + "尝试重新启动Scratch", + "检查设备音频设置" + ], + "character_switch_not_working": [ + "检查广播消息拼写", + "确认角色变量设置正确", + "验证角色点击事件", + "检查角色造型存在" + ], + "response_generation_slow": [ + "简化关键词匹配逻辑", + "减少回复内容的长度", + "优化广播消息处理", + "检查变量和列表使用" + ] + } +} \ No newline at end of file diff --git a/start-local-voice.sh b/start-local-voice.sh index f78c5c5..9ef2c39 100755 --- a/start-local-voice.sh +++ b/start-local-voice.sh @@ -78,7 +78,7 @@ update_code() { # 复制新代码到目标目录 log "复制新代码到 $LOCAL_VOICE_DIR..." - cp -r Local-Voice-extracted/* "$LOCAL_VOICE_DIR"/ || error_exit "复制代码失败" + cp -r Local-Voice-extracted/Local-Voice/* "$LOCAL_VOICE_DIR"/ || error_exit "复制代码失败" # 恢复文件权限 log "恢复文件权限..."