🎙️ 基于TTS大模型微调的教学辅助Agent移动端应用,支持语音交互、教学答疑、有声PPT课件生成
VoiceTeach(言传声教)是一款面向教育场景的智能教学辅助Agent移动端应用,基于GPT-SoVITS TTS大模型微调构建。应用整合了智能语音交互、教学答疑、有声PPT课件生成、蓝牙设备控制及文件管理等核心能力,为教师和学生提供个性化的教学语音服务。
| 类别 | 技术/工具 | 说明 |
|---|---|---|
| 开发语言 | Java | Android平台主流开发语言,兼容性强 |
| 开发框架 | Android SDK | 基于官方SDK构建,确保跨版本适配性 |
| 架构模式 | MVVM | 数据与视图分离,提升代码可维护性与测试性 |
| 导航组件 | Android Navigation Component | 统一页面导航管理,简化页面跳转逻辑 |
| 媒体播放 | ExoPlayer | Google官方播放器,支持多格式、低延迟 |
| UI组件 | Material Design Components | 符合Material Design规范,视觉体验统一 |
| 蓝牙技术 | Android Bluetooth API | 实现蓝牙设备扫描、连接与数据通信 |
| 网络请求 | Retrofit + OkHttp | 高效处理HTTP请求,支持拦截器、缓存 |
| 数据存储 | Room Database | 本地数据库管理,优化文件元数据存储 |
| 异步处理 | Kotlin Coroutines | 简化异步任务逻辑,提升性能 |
| 依赖注入 | Dagger Hilt | 简化组件依赖管理,提升代码可测试性 |
| 图片加载 | Glide | 高效图片加载与缓存,支持多种格式 |
| 构建工具 | Gradle | 自动化构建与依赖管理 |
| 代码规范 | Checkstyle + Spotless | 统一代码风格,提升代码质量 |
├── app/src/main/ # 应用核心目录
│ ├── java/com/yuanchuanshengjiao/voiceteach/ # 业务代码目录
│ │ ├── bluetooth/ # 蓝牙功能模块(扫描、连接、状态管理)
│ │ │ ├── Bluetooth.java # 蓝牙核心管理类
│ │ │ ├── BluetoothDeviceInfo.java # 蓝牙设备信息类
│ │ │ ├── BluetoothGattCustom.java # BLE GATT连接类
│ │ │ ├── CustomBluetoothDeviceAdapter.java # 设备列表适配器
│ │ │ └── BluetoothConnectionListener.java # 状态监听接口
│ │ ├── files/ # 文件管理模块(浏览、播放、分享)
│ │ │ └── UriManager.java # URI持久化管理
│ │ ├── message/ # 消息处理模块(AI对话、数据解析)
│ │ │ ├── MessageInfo.java # 消息实体类
│ │ │ ├── CustomMessageAdapter.java # 消息列表适配器
│ │ │ └── CustomBindingAdapter.java # 数据绑定适配器
│ │ ├── ui/ # 界面组件模块
│ │ │ ├── bluetooth/ # 蓝牙相关界面(设备列表、连接页)
│ │ │ ├── files/ # 文件管理界面(文件列表、详情页)
│ │ │ ├── home/ # 应用主界面(教学对话、语音交互)
│ │ │ ├── music/ # 音乐播放界面(播放器、歌单)
│ │ │ └── upload/ # 文件上传界面(文件选择、参数配置)
│ │ └── MainActivity.java # 应用入口主活动
│ └── res/ # 资源文件目录
│ ├── layout/ # 界面布局文件
│ ├── drawable/ # 图片资源(图标、背景)
├── values/ # 字符串、颜色、尺寸配置
│ └── menu/ # 菜单配置文件
├── gradle/ # Gradle构建配置目录
├── docs/ # 项目文档(开发指南、FAQ、截图)
├── LICENSE # 开源许可证
└── README.md # 项目说明文档(本文件)
为保障应用核心功能正常运行,需申请以下系统权限(均为功能必需,无冗余权限):
| 权限名称 | 用途说明 | 是否必需 | 权限等级 |
|---|---|---|---|
RECORD_AUDIO |
语音输入、实时录音功能 | 是 | 危险权限 |
BLUETOOTH / BLUETOOTH_ADMIN |
蓝牙设备扫描、连接与管理 | 是 | 普通权限 |
BLUETOOTH_SCAN / BLUETOOTH_CONNECT |
Android 12+ 蓝牙操作必需权限 | 是 | 危险权限 |
ACCESS_FINE_LOCATION |
Android 6.0-11 蓝牙扫描必需权限 | 是(适配旧版本) | 危险权限 |
READ_EXTERNAL_STORAGE / WRITE_EXTERNAL_STORAGE |
读取/写入本地文件(音乐、文本) | 是 | 危险权限 |
INTERNET |
与AI服务交互、获取模型配置 | 是 | 普通权限 |
ACCESS_WIFI_STATE |
检测网络状态,优化AI服务请求策略 | 否 | 普通权限 |
WAKE_LOCK |
音乐播放时保持屏幕常亮(可选) | 否 | 普通权限 |
📌 说明:
- 应用会在首次使用对应功能时动态申请权限,并明确说明权限用途
- 用户可随时在系统设置中关闭权限(关闭后对应功能将不可用)
- 严格遵循Android权限最佳实践,不滥用权限,保护用户隐私
# 克隆项目
git clone https://github.com/HanphoneJan/voice-teach.git
# 进入项目目录
cd voice-teach
| 问题现象 | 解决方案 |
| :————————— | :———————————————————– |
| 依赖下载失败 | 检查网络连接,配置国内 Maven 镜像,或手动下载依赖包放入本地仓库 |
| 构建报错 “Could not find…” | 确保 Gradle 版本与 Android Gradle Plugin 版本匹配(参考 build.gradle) |
| 设备无法识别 | 安装对应设备的 USB 驱动,重新启用 USB 调试模式,或更换 USB 线缆 |
| 权限申请后功能仍不可用 | 检查设备系统设置 → 应用 → VoiceTeach → 权限,确保所需权限已开启 |
| 类别 | 要求说明 |
|---|---|
| 系统版本 | Android 6.0 (API Level 23) 及以上 |
| 硬件要求 | 支持蓝牙 4.0+,设备内存 2GB+,存储空间 100MB+ |
| 网络要求 | 需连接互联网(Wi-Fi/移动网络)以使用 AI 交互功能 |
| 其他要求 | 开启设备麦克风、蓝牙权限(功能必需) |
| 推荐配置 | Android 10.0+,设备内存 4GB+,存储空间 500MB+ |
</a>