merge qwen-agent
This commit is contained in:
parent
644bbbf1ad
commit
0253a06d11
@ -5,6 +5,6 @@
|
||||
"voice": "ICL_zh_male_youmodaye_tob",
|
||||
"max_tokens": 500,
|
||||
"greeting": "你好!我是爱因斯坦。想象力比知识更重要,因为知识是有限的,而想象力概括着世界的一切。",
|
||||
"nfc_uid": "1DCAC90D0D1080",
|
||||
"nfc_uid": "1DCDC90D0D1080",
|
||||
"author": "Claude"
|
||||
}
|
||||
|
||||
@ -5,6 +5,6 @@
|
||||
"voice": "ICL_zh_male_huzi_v1_tob",
|
||||
"max_tokens": 500,
|
||||
"greeting": "吾乃李白,字太白,号青莲居士。今天有幸与君相会,让我们畅谈诗词人生吧!",
|
||||
"nfc_uid": "1DC6C90D0D1080",
|
||||
"nfc_uid": "1DCCC90D0D1080",
|
||||
"author": "Claude"
|
||||
}
|
||||
|
||||
171
scratch/DESIGN.md
Normal file
171
scratch/DESIGN.md
Normal file
@ -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平台实现和教育场景使用。
|
||||
313
scratch/IMPLEMENTATION.md
Normal file
313
scratch/IMPLEMENTATION.md
Normal file
@ -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中实现一个功能完整的语音助手。
|
||||
51
scratch/README.md
Normal file
51
scratch/README.md
Normal file
@ -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中开发测试
|
||||
264
scratch/project-config.json
Normal file
264
scratch/project-config.json
Normal file
@ -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": [
|
||||
"简化关键词匹配逻辑",
|
||||
"减少回复内容的长度",
|
||||
"优化广播消息处理",
|
||||
"检查变量和列表使用"
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -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 "恢复文件权限..."
|
||||
|
||||
Loading…
Reference in New Issue
Block a user