VoiceTeach

VoiceTeach (言传声教) - 教学辅助语音Agent

🎙️ 基于TTS大模型微调的教学辅助Agent移动端应用,支持语音交互、教学答疑、有声PPT课件生成

Android Java MVVM MIT License PRs Welcome


📋 目录


📱 项目简介

VoiceTeach(言传声教)是一款面向教育场景的智能教学辅助Agent移动端应用,基于GPT-SoVITS TTS大模型微调构建。应用整合了智能语音交互、教学答疑、有声PPT课件生成、蓝牙设备控制及文件管理等核心能力,为教师和学生提供个性化的教学语音服务。

🌟 设计理念

🎯 核心价值


✨ 核心功能特性

1. 智能语音交互 · 高效沟通

2. 蓝牙设备管理 · 便捷连接

3. 本地音乐播放 · 沉浸式体验

4. 多类型文件上传 · 智能处理

5. 本地文件管理 · 便捷操作


🔧 技术栈选型

类别 技术/工具 说明
开发语言 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 音乐播放时保持屏幕常亮(可选) 普通权限

📌 说明:


📥 安装指南

前置条件

安装步骤

1. 获取代码

# 克隆项目
git clone https://github.com/HanphoneJan/voice-teach.git

# 进入项目目录
cd voice-teach

2. 导入项目

3. 配置设备

4. 构建运行

常见问题排查

| 问题现象 | 解决方案 | | :————————— | :———————————————————– | | 依赖下载失败 | 检查网络连接,配置国内 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+

📖 使用说明

1. 语音交互使用流程

  1. 启动应用后,默认进入主界面,顶部显示功能导航栏
  2. 选择输入方式:
    • 语音输入:点击底部「麦克风图标」,按住说话(松开后自动提交)
    • 文字输入:点击「输入框」,手动编辑文字内容
  3. 配置参数(可选):点击输入框下方「模型设置」,选择 AI 模型、语音情感、语速等
  4. 点击「发送」按钮,等待 AI 处理(显示加载动画)
  5. 处理完成后展示回复结果(文字+语音朗读可选),支持复制、导出、重新生成

2. 蓝牙设备连接流程

  1. 在主界面点击「蓝牙」图标,进入蓝牙管理界面
  2. 开启设备蓝牙(应用引导开启,或手动在系统设置中开启)
  3. 点击「扫描设备」按钮,搜索附近可用蓝牙设备(实时更新结果)
  4. 点击目标设备名称,按提示完成配对(部分设备需输入配对码)
  5. 连接成功后显示「已连接」状态,可通过蓝牙设备播放语音回复、音乐
  6. 断开连接:点击「断开」按钮,或在系统蓝牙设置中关闭连接

3. 音乐播放操作流程

  1. 在主界面点击「音乐」图标,进入音乐播放界面,应用自动扫描本地音频文件
  2. 播放控制:
    • 点击歌曲名称开始播放,底部控制栏支持播放/暂停、上一曲/下一曲
    • 拖动进度条快进/快退,点击「音量图标」调节音量
  3. 模式切换:点击控制栏「模式」按钮,切换顺序播放/单曲循环/列表循环
  4. 沉浸式播放:点击「全屏图标」,进入全屏模式,支持歌词同步显示(需 .lrc 歌词文件)

4. 文件上传处理流程

  1. 在主界面点击「上传」图标,进入文件上传界面
  2. 选择上传方式:
    • 本地文件:点击「选择音频文件」或「选择文本文件」,从本地目录选择
    • 实时录音:点击「录音」按钮,录制完成后自动上传
  3. 配置参数:选择 AI 模型类型、处理精度、输出格式等

Star History

Star History Chart

</a>