Local-Voice/scratch/DESIGN.md
2025-11-04 22:38:42 +08:00

171 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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