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

4.1 KiB
Raw Permalink Blame History

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