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

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密钥

使用方法

  1. 打开"增强AI助手"
  2. 选择AI提供商下拉菜单
  3. 输入问题并发送
  4. 等待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";

使用方法

  1. 点击🎤按钮
  2. 授予录音权限(首次使用)
  3. 开始说话录音5秒
  4. 识别结果自动填入输入框
  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

使用方法

  1. 等待AI回复
  2. 点击🔊按钮
  3. 系统自动播报最后一条AI回复
  4. 播报完成后可再次点击重播

支持的语音角色

  • 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提供商选择
  • 文字对话
  • 语音输入
  • 语音播报
  • 状态显示

使用流程

完整对话流程

  1. 选择AI提供商

    • 本地Mock离线运行快速响应
    • DeepSeek在线AI高性能
    • 智谱AI在线AI中文优化
  2. 输入方式

    • 文字输入:直接在输入框输入
    • 语音输入:点击🎤按钮录音
  3. 发送消息

    • 点击"发送"按钮
    • 等待AI处理显示加载动画
  4. 接收回复

    • AI回复显示在聊天区域
    • 自动滚动到最新消息
  5. 语音播报

    • 点击🔊按钮
    • 系统播报最后一条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对话内容不上传到第三方
  • 遵守用户隐私政策

测试指南

功能测试

  1. 本地Mock AI测试

    • 选择"本地Mock"
    • 发送各种问题
    • 验证响应正确
  2. 真实AI测试

    • 选择"DeepSeek"或"智谱AI"
    • 发送问题
    • 验证网络请求和响应
  3. 语音识别测试

    • 点击🎤按钮
    • 说话5秒
    • 验证识别结果
  4. 语音播报测试

    • 获取AI回复
    • 点击🔊按钮
    • 验证播报效果

性能测试

  • 测试网络请求响应时间
  • 测试语音识别准确率
  • 测试语音播报流畅度
  • 测试内存使用情况

故障排除

问题诊断步骤

  1. 检查日志输出Logcat
  2. 验证网络连接
  3. 确认权限已授予
  4. 检查API密钥有效性
  5. 测试设备音频功能

日志标签

  • RealAIService: AI服务日志
  • SpeechRecognition: 语音识别日志
  • TextToSpeech: 语音合成日志

未来增强

计划功能

  1. 多轮对话

    • 保持对话上下文
    • 支持连续对话
  2. 语音唤醒

    • 支持"你好小智"唤醒
    • 免提操作
  3. 情感识别

    • 识别用户情绪
    • 调整回复风格
  4. 多语言支持

    • 支持英语、日语等
    • 自动语言检测
  5. 离线语音

    • 集成离线语音引擎
    • 无网络也能使用

参考资料

API文档

相关技术

  • Android AudioRecord
  • Android AudioTrack
  • HTTP/HTTPS请求
  • JSON解析
  • 异步编程

注意本文档描述的功能需要有效的API密钥和网络连接。请确保在使用前正确配置所有参数。