添加知识库与子代理功能。添加 debug 模式。
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
# 安智伴 · AI 数字人陪护终端(Android)
|
||||
|
||||
English | [中文](./README_zh.md)
|
||||
|
||||
> 本项目与 [digital-human-monitor-v2](https://github.com/user/digital-human-monitor-v2)(家属监护 Web 端)配合使用,共同构成完整的"AI 数字人 + 家庭远程关怀"解决方案。
|
||||
> 本项目与 家属监护 Web 端配合使用,共同构成完整的"AI 数字人 + 家庭远程关怀"解决方案。
|
||||
|
||||
---
|
||||
|
||||
@@ -61,13 +60,14 @@ DUIX SDK 仅负责"给定 PCM 音频 → 渲染对应口型/表情动画",不
|
||||
|
||||
这种解耦使得 AI 模型可独立升级,不影响渲染管线。
|
||||
|
||||
### 3. 工具调用实现双向留言
|
||||
### 3. 工具调用 + 实现双向留言
|
||||
|
||||
通过 Qwen 的 Function Calling 能力,在 AI 对话中注册两个工具函数:
|
||||
通过 Qwen 的 Function Calling 能力,在 AI 对话中注册三个工具函数:
|
||||
- `consult_psychology_knowledge_base`:Omni 提炼老人问题 → Android 端调用 qwen3.6-plus,并把 WHO ICOPE 2024 全文作为上下文 → 返回权威说明
|
||||
- `leave_message_for_family`:老人口述 → AI 提取内容 → 调用工具 → 消息存入云端
|
||||
- `fetch_family_messages`:老人想听留言 → AI 调用工具 → 拉取消息 → 口播转达
|
||||
|
||||
AI 自主判断何时调用工具,无需老人学习任何操作指令。
|
||||
AI 自主判断何时调用工具,无需老人学习任何操作指令。涉及权威照护依据时,实时语音模型不会直接吞入整份知识库上下文,而是把问题转交给长上下文子代理处理。
|
||||
|
||||
### 4. 面向老人的交互设计
|
||||
|
||||
@@ -132,9 +132,9 @@ AI 自主判断何时调用工具,无需老人学习任何操作指令。
|
||||
| 层级 | 技术 |
|
||||
|------|------|
|
||||
| **数字人渲染** | NCNN (端侧推理) + OpenCV 4.6 + OpenGL ES 2.0 + ONNX Runtime |
|
||||
| **AI 对话** | 千问 Qwen 3.5 Omni Plus Realtime (WebSocket) |
|
||||
| **AI 对话** | 千问 Qwen 3.5 Omni Plus Realtime (WebSocket) + Qwen 3.6 Plus 知识子代理 (HTTP) |
|
||||
| **音频处理** | AudioRecord (16kHz) → PCM → Base64 → WebSocket;AudioTrack 播放 |
|
||||
| **网络通信** | OkHttp 4 (HTTP API) + OkHttp WebSocket (Qwen Realtime) |
|
||||
| **网络通信** | OkHttp 4 (HTTP API / qwen3.6-plus) + OkHttp WebSocket (Qwen Realtime) |
|
||||
| **本地存储** | SharedPreferences (设备 UUID、配置) |
|
||||
| **构建系统** | Gradle 8.13.2 + AGP 8.9.1 + JDK 17 (Temurin) |
|
||||
| **语言** | Kotlin (应用层) + Java (SDK 层) + C++ (Native 推理层) |
|
||||
@@ -159,23 +159,28 @@ dh_aigc_android/
|
||||
│ └── third/ # 预编译依赖 (NCNN, OpenCV, ONNX, libjpeg)
|
||||
│
|
||||
├── test/ # 演示应用(应用模块)
|
||||
│ └── src/main/java/ai/guiji/duix/test/
|
||||
│ ├── ui/activity/
|
||||
│ │ ├── MainActivity.kt # 主页:模型选择与下载管理
|
||||
│ │ ├── CallActivity.kt # 核心:数字人渲染 + AI 对话 + 留言桥梁
|
||||
│ │ ├── SettingsActivity.kt # 设备设置
|
||||
│ │ └── VoiceCloneSetupActivity.kt # 声音克隆配置
|
||||
│ ├── service/
|
||||
│ │ ├── FamilyBridgeService.kt # 家庭监护 API 客户端
|
||||
│ │ ├── OmniRealtimeClient.kt # Qwen Omni WebSocket 客户端
|
||||
│ │ ├── QwenTtsRealtimeClient.kt # Qwen TTS 客户端
|
||||
│ │ ├── VoiceCloneService.kt # 声音克隆服务
|
||||
│ │ └── DashScopeConfig.java # API 配置常量
|
||||
│ ├── audio/
|
||||
│ │ ├── AudioResampler.java # PCM 重采样
|
||||
│ │ └── StreamingAudioRecorder.java # 实时麦克风录音
|
||||
│ └── camera/
|
||||
│ └── CameraFrameCapture.java # 摄像头帧采集
|
||||
│ └── src/main/
|
||||
│ ├── java/ai/guiji/duix/test/
|
||||
│ │ ├── ui/activity/
|
||||
│ │ │ ├── MainActivity.kt # 主页:模型选择与下载管理
|
||||
│ │ │ ├── CallActivity.kt # 核心:数字人渲染 + AI 对话 + 留言桥梁 + 知识子代理
|
||||
│ │ │ ├── SettingsActivity.kt # 设备设置
|
||||
│ │ │ └── VoiceCloneSetupActivity.kt # 声音克隆配置
|
||||
│ │ ├── realtime/
|
||||
│ │ │ ├── OmniRealtimeClient.java # Qwen Omni WebSocket 客户端
|
||||
│ │ │ └── QwenTtsRealtimeClient.kt # Qwen TTS 客户端
|
||||
│ │ ├── service/
|
||||
│ │ │ ├── FamilyBridgeService.kt # 家庭监护 API 客户端
|
||||
│ │ │ ├── PsychologyKnowledgeAgentService.kt # qwen3.6-plus 长上下文知识子代理
|
||||
│ │ │ ├── VoiceCloneService.kt # 声音克隆服务
|
||||
│ │ │ └── DashScopeConfig.java # API 配置常量
|
||||
│ │ ├── audio/
|
||||
│ │ │ ├── AudioResampler.java # PCM 重采样
|
||||
│ │ │ └── StreamingAudioRecorder.java # 实时麦克风录音
|
||||
│ │ └── camera/
|
||||
│ │ └── CameraFrameCapture.java # 摄像头帧采集
|
||||
│ └── assets/knowledge/
|
||||
│ └── who_icope_2024.txt # WHO ICOPE 2024 权威知识库全文
|
||||
│
|
||||
└── qwen-docs/ # 千问 Omni-Realtime API 参考文档
|
||||
├── main.md # 协议总览
|
||||
@@ -277,6 +282,7 @@ pushPcm(音频) → MFCC特征提取 → NCNN口型网络推理
|
||||
|
||||
| 工具名 | 参数 | 用途 |
|
||||
|--------|------|------|
|
||||
| `consult_psychology_knowledge_base` | `question` (核心问题), `focus` (聚焦点,可选) | 调用 qwen3.6-plus + WHO ICOPE 全文,返回权威照护说明 |
|
||||
| `leave_message_for_family` | `recipientRelation` (称谓), `message` (内容), `importance` (优先级) | 老人留言给家人 |
|
||||
| `fetch_family_messages` | `count` (数量 1-5) | 拉取家人留言 |
|
||||
|
||||
@@ -390,15 +396,9 @@ API 密钥和服务地址在 `DashScopeConfig.java` 中配置:
|
||||
```java
|
||||
MONITOR_BASE_URL // 监护 Web 服务地址
|
||||
REALTIME_BASE_URL // Qwen Omni WebSocket 地址
|
||||
MULTIMODAL_GENERATION_URL // qwen3.6-plus HTTP 地址
|
||||
DEFAULT_API_KEY // DashScope API Key
|
||||
PSYCHOLOGY_SUBAGENT_MODEL // 心理学知识子代理模型
|
||||
PSYCHOLOGY_KNOWLEDGE_ASSET_PATH // 内置 WHO ICOPE 知识库 asset 路径
|
||||
AUDIO_SAMPLE_RATE // 音频采样率 (24000)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 关联项目
|
||||
|
||||
| 项目 | 角色 | 仓库 |
|
||||
|------|------|------|
|
||||
| **dh_aigc_android**(本项目) | 老人端:AI 数字人陪护 + 设备行为上报 | 当前仓库 |
|
||||
| **digital-human-monitor-v2** | 家属端:远程监护 Web 面板 + 消息管理 + 推送通知 | [digital-human-monitor-v2](../digital-human-monitor-v2/) |
|
||||
```
|
||||
Reference in New Issue
Block a user