深度实战:为老人打造一款“能听会说”的 AI 智能助手
摘要:本文介绍了一款专为老年人设计的AI智能助手"小智",采用语音交互(ASR/TTS)和简洁UI设计,集成天气查询、时间推算、情感陪聊等功能。系统基于SpringBoot+Vue3架构,使用Qwen3-8B大模型实现语义理解,通过LangChain4j实现功能调用。特别优化了语音识别稳定性,并采用IP定位提供个性化服务。未来计划扩展健康提醒、定时备忘等功能,帮助老年人跨越数字
这是一款专为智慧养老场景设计的 AI 智能助手。它不仅是一个聊天机器人,更是一个集成了语音识别(ASR)、语音合成(TTS)、实时天气查询和时间推算功能的“数字陪伴者”。
目录
1. 智能大脑:LangChain4j + Function Calling
一、 项目背景与愿景
在智慧养老场景下,老年人常面临“数字鸿沟”。本项目旨在打造一个名为小智的 AI 助手。
-
交互方式:支持语音输入(ASR)与语音播报(TTS),降低操作门槛。
-
核心功能:具备情感陪聊、实时天气查询、时间节日推算等感知能力。
-
设计理念:采用大字号、高对比度、毛玻璃质感的 UI 界面,适配老年人视觉习惯。
二、 全栈技术架构
本项目采用前后端分离架构,通过大模型驱动核心逻辑。
| 维度 | 技术栈 | 作用 |
| 后端框架 | Spring Boot 3 + LangChain4j | 核心业务流控与大模型编排 |
| 大语言模型 | Qwen3-8B (SiliconFlow) | 语义理解、逻辑推理、情感交互 |
| 语音能力 | 百度 AI 极速版 (ASR/TTS) | 实现“能听会说”的交互闭环 |
| 地理位置 | Ip2region | 基于 IP 自动识别用户所在城市 |
| 前端界面 | Vue 3 + Recorder-core | 毛玻璃 UI 视觉与音频高保真采集 |
三、 核心功能实现原理
1. 智能大脑:LangChain4j + Function Calling
实现原理:AI 不再是死板的聊天机器人,而是通过 AiTools 绑定了外部感知能力。当用户问“明天几号?”或“天气如何?”时,AI 会根据语义自动触发对应的工具方法。
核心代码实现 (AiTools.java):
@Component
public class AiTools {
@Autowired
private WeatherService weatherService;
// 工具定义:AI 会根据提示词自动决定是否调用此方法
@Tool("获取当前北京时间,包含年、月、日、星期。用于回答今天几号或推算春节等节日。")
public String getCurrentDateTime() {
return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EEEE"));
}
@Tool("根据城市名称查询当地的实时天气状况")
public String getWeather(String city) {
return weatherService.getWeatherByCity(city);
}
}
2. 语音闭环:解决 ASR 与 TTS 的痛点
痛点方案:前端录音常报 3312 错误。我们通过固定采样率(16000Hz)和强制 WAV 格式转换,并在后端对音频 Header 进行校验,确保识别率。
语音转文字逻辑 (BaiduAsrService.java):
public String transcribe(byte[] audioData) {
HashMap<String, Object> options = new HashMap<>();
options.put("dev_pid", 1537);
options.put("speech_rate", 1);
// 强制使用wav格式
JSONObject res = client.asr(audioData, "wav", 16000, options);
if (res.optInt("err_no") == 0) {
return res.optJSONArray("result").optString(0, "").trim();
}
return "";
}
3. 环境感知:IP 定位与天气联动
实现逻辑:系统首先利用 Ip2region 数据库解析用户的真实 IP 获取城市名,再将其转换为气象台所需的 LocationKey,从而提供精准的天气预报和穿衣建议。
四、 数据库与记忆管理
为了让 AI “记得”之前的谈话,我们使用了 MessageWindowChatMemory 维护一个最近 10 条消息的滑动窗口,并将所有记录同步持久化到 MySQL 数据库中。
数据库结构 (ChatRecord.java):
-
Role: 标识消息来源(User 或 AI)。
-
Content: 存储对话文本内容。
-
UserId: 实现多用户隔离。
五、 前端:专为老人优化的交互设计
设计要点:
-
大按键操作:底部巨大的“按住说话”按钮,支持触屏长按。
-
视觉反馈:录音时出现蓝色流光动画,告知用户系统正在“倾听”。
-
自动播报:AI 回复后前端自动调用 TTS 接口播放音频,无需老人阅读文字。
毛玻璃样式代码片段:
.top-bar {
background: rgba(255, 255, 255, 0.2);
backdrop-filter: blur(45px);
-webkit-backdrop-filter: blur(45px);
border-bottom: 1px solid rgba(255, 255, 255, 0.4);
}
六、 未来规划:定时与备忘功能
针对老年人易忘事的特点,我们计划在下一版本中:
-
定时功能:通过 AI 理解“提醒我下午 3 点吃药”,自动在后端开启定时任务。
-
健康备忘:建立老人专属的健康日记,记录每日血压、心情等指标。
-
主动提醒:结合天气情况,在清晨主动语音播报:“张爷爷,今天降温了,记得加件外套”。
-
MCP:未来将使用MCP,让AI更加智能,回答的信息更加准确。
七、界面展示:


更多推荐


所有评论(0)