You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
8.5 KiB
8.5 KiB
Android AI功能文档
概述
Android应用集成了完整的AI功能,包括:
- 🤖 真实AI对话(DeepSeek、智谱AI)
- 🎤 语音识别(讯飞语音)
- 🔊 语音播报(讯飞TTS)
- 💬 本地Mock AI
功能列表
1. 真实AI对话
支持的AI提供商
DeepSeek
- API:
https://api.deepseek.com/v1/chat/completions - 模型:
deepseek-chat - 特点: 高性能、低成本
智谱AI (GLM-4)
- API:
https://open.bigmodel.cn/api/paas/v4/chat/completions - 模型:
glm-4 - 特点: 中文优化、理解能力强
本地Mock
- 完全离线运行
- 基于规则的响应
- 无需API密钥
使用方法
- 打开"增强AI助手"
- 选择AI提供商(下拉菜单)
- 输入问题并发送
- 等待AI响应
API配置
配置文件:AIConfig.java
// DeepSeek配置
public static final String DEEPSEEK_API_KEY = "sk-717ef9146311424daa2fbead8ed4682b";
public static final String DEEPSEEK_API_URL = "https://api.deepseek.com/v1/chat/completions";
public static final String DEEPSEEK_MODEL = "deepseek-chat";
// 智谱AI配置
public static final String ZHIPU_API_KEY = "5dc44da8d9dd4c28bf38cde316950f1e.nNIf7AXWrJXIcSyQ";
public static final String ZHIPU_API_URL = "https://open.bigmodel.cn/api/paas/v4/chat/completions";
public static final String ZHIPU_MODEL = "glm-4";
2. 语音识别
讯飞语音识别配置
public static final String XUNFEI_APP_ID = "ae4a0e4a";
public static final String XUNFEI_API_KEY = "7385e5cb32d3465474e613dfbfc69310";
public static final String XUNFEI_API_SECRET = "NTI2NzVlOWQ0ZTM5YTgzNGYzZDI5NjQx";
public static final String XUNFEI_SPEECH_URL = "https://iat-api.xfyun.cn/v2/iat";
使用方法
- 点击🎤按钮
- 授予录音权限(首次使用)
- 开始说话(录音5秒)
- 识别结果自动填入输入框
- 点击发送按钮发送消息
技术参数
- 采样率: 16000 Hz
- 音频格式: PCM 16bit
- 声道: 单声道
- 录音时长: 5秒
3. 语音播报
讯飞语音合成配置
public static final String XUNFEI_TTS_URL = "https://tts-api.xfyun.cn/v2/tts";
public static final String TTS_VOICE = "xiaoyan"; // 语音角色
public static final int TTS_SPEED = 50; // 语速(0-100)
public static final int TTS_VOLUME = 50; // 音量(0-100)
public static final int TTS_PITCH = 50; // 音调(0-100)
使用方法
- 等待AI回复
- 点击🔊按钮
- 系统自动播报最后一条AI回复
- 播报完成后可再次点击重播
支持的语音角色
- xiaoyan: 小燕(女声)
- aisjiuxu: 许久(男声)
- aisxping: 小萍(女声)
- aisjinger: 小婧(女声)
- aisbabyxu: 许小宝(童声)
核心类说明
AIConfig.java
AI服务配置类,包含所有API密钥和参数。
主要配置:
- AI提供商API密钥
- 讯飞语音配置
- 超时设置
- 音频参数
RealAIService.java
真实AI服务类,负责与DeepSeek和智谱AI通信。
主要方法:
// 发送聊天请求
public void chat(String message, AICallback callback)
// 设置AI提供商
public void setProvider(AIConfig.AIProvider provider)
// 获取当前提供商
public AIConfig.AIProvider getCurrentProvider()
回调接口:
public interface AICallback {
void onSuccess(String response);
void onError(String error);
}
SpeechRecognitionService.java
语音识别服务类,使用讯飞语音识别API。
主要方法:
// 初始化服务
public void initialize(Context context)
// 检查录音权限
public boolean hasRecordPermission()
// 开始录音识别
public void startRecording(RecognitionCallback callback)
// 停止录音
public void stopRecording()
回调接口:
public interface RecognitionCallback {
void onStart();
void onResult(String text);
void onError(String error);
}
TextToSpeechService.java
语音合成服务类,使用讯飞TTS API。
主要方法:
// 初始化服务
public void initialize(Context context)
// 文字转语音并播放
public void speak(String text, TTSCallback callback)
// 停止播放
public void stop()
回调接口:
public interface TTSCallback {
void onStart();
void onComplete();
void onError(String error);
}
EnhancedAIAssistantFragment.java
增强AI助手界面,集成所有AI功能。
功能:
- AI提供商选择
- 文字对话
- 语音输入
- 语音播报
- 状态显示
使用流程
完整对话流程
-
选择AI提供商
- 本地Mock:离线运行,快速响应
- DeepSeek:在线AI,高性能
- 智谱AI:在线AI,中文优化
-
输入方式
- 文字输入:直接在输入框输入
- 语音输入:点击🎤按钮录音
-
发送消息
- 点击"发送"按钮
- 等待AI处理(显示加载动画)
-
接收回复
- AI回复显示在聊天区域
- 自动滚动到最新消息
-
语音播报
- 点击🔊按钮
- 系统播报最后一条AI回复
权限要求
必需权限
<!-- 网络权限(真实AI需要) -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 录音权限(语音识别需要) -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- 音频设置权限(语音播报需要) -->
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
运行时权限
应用会在需要时请求以下权限:
- 录音权限(首次使用语音输入时)
错误处理
常见错误及解决方案
1. 网络错误
- 错误:
AI服务请求失败: HTTP error code: XXX - 解决:检查网络连接,确认API密钥有效
2. 录音权限错误
- 错误:
没有录音权限 - 解决:在设置中授予应用录音权限
3. 识别失败
- 错误:
识别失败: XXX - 解决:确保环境安静,说话清晰
4. 播报失败
- 错误:
播报失败: XXX - 解决:检查音量设置,确保设备支持音频播放
性能优化
网络请求优化
- 使用线程池管理并发请求
- 设置合理的超时时间(30秒)
- 自动重试机制(可选)
音频处理优化
- 使用合适的采样率(16kHz)
- 限制录音时长(5秒)
- 异步处理音频数据
内存管理
- 及时释放AudioRecord和AudioTrack
- 使用单例模式减少对象创建
- 在Fragment销毁时清理资源
安全考虑
API密钥安全
⚠️ 重要提示:
- 当前API密钥直接写在代码中,仅用于演示
- 生产环境应使用以下方案:
- 将密钥存储在服务器端
- 使用代理服务器转发请求
- 实现密钥加密和混淆
数据隐私
- 语音数据仅用于识别,不存储
- AI对话内容不上传到第三方
- 遵守用户隐私政策
测试指南
功能测试
-
本地Mock AI测试
- 选择"本地Mock"
- 发送各种问题
- 验证响应正确
-
真实AI测试
- 选择"DeepSeek"或"智谱AI"
- 发送问题
- 验证网络请求和响应
-
语音识别测试
- 点击🎤按钮
- 说话5秒
- 验证识别结果
-
语音播报测试
- 获取AI回复
- 点击🔊按钮
- 验证播报效果
性能测试
- 测试网络请求响应时间
- 测试语音识别准确率
- 测试语音播报流畅度
- 测试内存使用情况
故障排除
问题诊断步骤
- 检查日志输出(Logcat)
- 验证网络连接
- 确认权限已授予
- 检查API密钥有效性
- 测试设备音频功能
日志标签
RealAIService: AI服务日志SpeechRecognition: 语音识别日志TextToSpeech: 语音合成日志
未来增强
计划功能
-
多轮对话
- 保持对话上下文
- 支持连续对话
-
语音唤醒
- 支持"你好小智"唤醒
- 免提操作
-
情感识别
- 识别用户情绪
- 调整回复风格
-
多语言支持
- 支持英语、日语等
- 自动语言检测
-
离线语音
- 集成离线语音引擎
- 无网络也能使用
参考资料
API文档
相关技术
- Android AudioRecord
- Android AudioTrack
- HTTP/HTTPS请求
- JSON解析
- 异步编程
注意:本文档描述的功能需要有效的API密钥和网络连接。请确保在使用前正确配置所有参数。