240 lines
8.0 KiB
Markdown
240 lines
8.0 KiB
Markdown
|
|
# 语音评测功能实现总结
|
|||
|
|
|
|||
|
|
## 完成时间
|
|||
|
|
2025-01-XX
|
|||
|
|
|
|||
|
|
## 功能概述
|
|||
|
|
已成功实现语音评测功能(语文课程),包括语音跟读、语音朗读评测、第三方语音服务集成接口等。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 已完成功能
|
|||
|
|
|
|||
|
|
### 1. 数据库设计 ✅
|
|||
|
|
- 创建了 `voice_evaluation` 表
|
|||
|
|
- 包含评测ID、学员ID、课程ID、评测内容、音频路径、各项评分等字段
|
|||
|
|
- SQL脚本位置:`log/Sql/voice_evaluation_table.sql`
|
|||
|
|
|
|||
|
|
### 2. 后端实现 ✅
|
|||
|
|
|
|||
|
|
#### 2.1 实体类
|
|||
|
|
- `StudyVoiceEvaluation.java` - 语音评测实体类
|
|||
|
|
- 位置:`RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/domain/study/`
|
|||
|
|
|
|||
|
|
#### 2.2 Mapper层
|
|||
|
|
- `StudyVoiceEvaluationMapper.java` - Mapper接口
|
|||
|
|
- `StudyVoiceEvaluationMapper.xml` - MyBatis XML映射文件
|
|||
|
|
- 位置:`RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/mapper/study/`
|
|||
|
|
- XML位置:`RuoYi-Vue-redis/ry-news-system/src/main/resources/mapper/study/`
|
|||
|
|
|
|||
|
|
#### 2.3 Service层
|
|||
|
|
- `IStudyVoiceEvaluationService.java` - Service接口
|
|||
|
|
- `StudyVoiceEvaluationServiceImpl.java` - Service实现类
|
|||
|
|
- 位置:`RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/service/study/`
|
|||
|
|
|
|||
|
|
#### 2.4 Controller层
|
|||
|
|
- `StudyVoiceEvaluationController.java` - 控制器
|
|||
|
|
- 提供以下接口:
|
|||
|
|
- `POST /study/voiceEvaluation/uploadAndEvaluate` - 上传音频并评测(App端)
|
|||
|
|
- `GET /study/voiceEvaluation/my-records` - 获取我的评测记录(App端)
|
|||
|
|
- `GET /study/voiceEvaluation/list` - 查询评测列表(管理后台)
|
|||
|
|
- `GET /study/voiceEvaluation/{id}` - 获取评测详情
|
|||
|
|
- `DELETE /study/voiceEvaluation/{ids}` - 删除评测记录
|
|||
|
|
- `POST /study/voiceEvaluation/export` - 导出评测数据
|
|||
|
|
- 位置:`RuoYi-Vue-redis/ry-news-admin/src/main/java/com/ddnai/web/controller/study/`
|
|||
|
|
|
|||
|
|
#### 2.5 语音服务接口
|
|||
|
|
- `IVoiceEvaluationService.java` - 语音评测服务接口(支持第三方服务集成)
|
|||
|
|
- `VoiceEvaluationServiceImpl.java` - 语音评测服务实现类(当前为模拟实现)
|
|||
|
|
- 位置:`RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/service/voice/`
|
|||
|
|
|
|||
|
|
**注意**:当前使用模拟实现,实际使用时需要接入真实的第三方语音评测服务(科大讯飞、百度、腾讯云、阿里云等)。
|
|||
|
|
|
|||
|
|
### 3. UniApp端实现 ✅
|
|||
|
|
|
|||
|
|
#### 3.1 API接口
|
|||
|
|
- `voiceEvaluation.js` - 语音评测API封装
|
|||
|
|
- 位置:`frontend-uniapp/src/api/study/`
|
|||
|
|
|
|||
|
|
#### 3.2 页面
|
|||
|
|
- `evaluation.vue` - 语音评测页面
|
|||
|
|
- 功能:
|
|||
|
|
- 设置评测内容
|
|||
|
|
- 语音录制(开始/停止)
|
|||
|
|
- 播放录音
|
|||
|
|
- 重新录制
|
|||
|
|
- 上传音频并评测
|
|||
|
|
- 查看评测结果(总分、准确度、流畅度、完整度、发音)
|
|||
|
|
- 查看历史记录
|
|||
|
|
- 位置:`frontend-uniapp/src/pages/voice/evaluation.vue`
|
|||
|
|
|
|||
|
|
#### 3.3 路由配置
|
|||
|
|
- 已在 `pages.json` 中添加语音评测页面路由
|
|||
|
|
|
|||
|
|
### 4. 管理后台实现 ✅
|
|||
|
|
|
|||
|
|
#### 4.1 API接口
|
|||
|
|
- `voiceEvaluation.js` - 语音评测API封装
|
|||
|
|
- 位置:`RuoYi-Vue-redis/ruoyi-ui/src/api/study/`
|
|||
|
|
|
|||
|
|
#### 4.2 页面
|
|||
|
|
- `index.vue` - 语音评测管理页面
|
|||
|
|
- 功能:
|
|||
|
|
- 查询评测列表(支持按学员姓名、课程名称、时间范围筛选)
|
|||
|
|
- 查看评测详情(包含音频播放)
|
|||
|
|
- 删除评测记录
|
|||
|
|
- 导出评测数据
|
|||
|
|
- 位置:`RuoYi-Vue-redis/ruoyi-ui/src/views/study/voiceEvaluation/index.vue`
|
|||
|
|
|
|||
|
|
### 5. 接口文档 ✅
|
|||
|
|
- `语音评测模块接口文档.md` - 完整的API接口文档
|
|||
|
|
- 位置:`log/语音评测模块接口文档.md`
|
|||
|
|
- 包含:
|
|||
|
|
- 数据库表结构
|
|||
|
|
- 所有接口的详细说明
|
|||
|
|
- 第三方服务集成指南
|
|||
|
|
- 使用说明
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 功能特点
|
|||
|
|
|
|||
|
|
1. **完整的CRUD功能**:支持语音评测记录的增删改查
|
|||
|
|
2. **权限控制**:支持数据权限过滤(教师只能查看自己班级学员的记录)
|
|||
|
|
3. **音频上传**:支持mp3、wav、wma、m4a、aac等音频格式
|
|||
|
|
4. **评测结果**:包含总分、准确度、流畅度、完整度、发音等多项评分
|
|||
|
|
5. **历史记录**:支持查看历史评测记录
|
|||
|
|
6. **可扩展性**:提供了语音服务接口,方便集成第三方服务
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 待完善功能
|
|||
|
|
|
|||
|
|
### 1. 第三方语音服务集成 ⚠️
|
|||
|
|
**当前状态**:使用模拟实现
|
|||
|
|
|
|||
|
|
**需要完成**:
|
|||
|
|
1. 选择第三方服务商(推荐:科大讯飞)
|
|||
|
|
2. 获取API密钥
|
|||
|
|
3. 实现 `IVoiceEvaluationService` 接口
|
|||
|
|
4. 在配置文件中配置API密钥
|
|||
|
|
5. 替换 `VoiceEvaluationServiceImpl` 中的模拟实现
|
|||
|
|
|
|||
|
|
**参考文档**:`log/语音评测模块接口文档.md` 中的"第三方语音服务集成"章节
|
|||
|
|
|
|||
|
|
### 2. 菜单配置 ⚠️
|
|||
|
|
需要在RuoYi后台添加语音评测菜单:
|
|||
|
|
- 菜单名称:语音评测
|
|||
|
|
- 菜单路径:`/study/voiceEvaluation`
|
|||
|
|
- 权限标识:`study:voiceEvaluation:list`
|
|||
|
|
|
|||
|
|
### 3. 数据权限配置 ⚠️
|
|||
|
|
需要在Controller方法上添加 `@ClassDataScope` 注解(已添加),确保教师只能查看自己班级学员的记录。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 使用说明
|
|||
|
|
|
|||
|
|
### 1. 数据库初始化
|
|||
|
|
```bash
|
|||
|
|
mysql -u root -p ry_study < log/Sql/voice_evaluation_table.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. UniApp端使用
|
|||
|
|
```javascript
|
|||
|
|
// 跳转到语音评测页面
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: '/pages/voice/evaluation?courseId=1&courseName=语文课程&content=评测内容'
|
|||
|
|
})
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 管理后台使用
|
|||
|
|
1. 登录管理后台
|
|||
|
|
2. 进入"学习系统" -> "语音评测"(需要先配置菜单)
|
|||
|
|
3. 查看、管理语音评测记录
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 文件清单
|
|||
|
|
|
|||
|
|
### 数据库
|
|||
|
|
- `log/Sql/voice_evaluation_table.sql` - 数据库表创建脚本
|
|||
|
|
|
|||
|
|
### 后端代码
|
|||
|
|
- `RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/domain/study/StudyVoiceEvaluation.java`
|
|||
|
|
- `RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/mapper/study/StudyVoiceEvaluationMapper.java`
|
|||
|
|
- `RuoYi-Vue-redis/ry-news-system/src/main/resources/mapper/study/StudyVoiceEvaluationMapper.xml`
|
|||
|
|
- `RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/service/study/IStudyVoiceEvaluationService.java`
|
|||
|
|
- `RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/service/impl/study/StudyVoiceEvaluationServiceImpl.java`
|
|||
|
|
- `RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/service/voice/IVoiceEvaluationService.java`
|
|||
|
|
- `RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/service/impl/voice/VoiceEvaluationServiceImpl.java`
|
|||
|
|
- `RuoYi-Vue-redis/ry-news-admin/src/main/java/com/ddnai/web/controller/study/StudyVoiceEvaluationController.java`
|
|||
|
|
|
|||
|
|
### UniApp端代码
|
|||
|
|
- `frontend-uniapp/src/api/study/voiceEvaluation.js`
|
|||
|
|
- `frontend-uniapp/src/pages/voice/evaluation.vue`
|
|||
|
|
- `frontend-uniapp/src/pages.json`(已更新)
|
|||
|
|
|
|||
|
|
### 管理后台代码
|
|||
|
|
- `RuoYi-Vue-redis/ruoyi-ui/src/api/study/voiceEvaluation.js`
|
|||
|
|
- `RuoYi-Vue-redis/ruoyi-ui/src/views/study/voiceEvaluation/index.vue`
|
|||
|
|
|
|||
|
|
### 文档
|
|||
|
|
- `log/语音评测模块接口文档.md` - API接口文档
|
|||
|
|
- `log/语音评测功能实现总结.md` - 本文档
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 测试建议
|
|||
|
|
|
|||
|
|
### 1. 功能测试
|
|||
|
|
- [ ] 测试语音录制功能
|
|||
|
|
- [ ] 测试音频上传功能
|
|||
|
|
- [ ] 测试评测结果展示
|
|||
|
|
- [ ] 测试历史记录查看
|
|||
|
|
- [ ] 测试管理后台查询功能
|
|||
|
|
- [ ] 测试权限控制(教师只能查看自己班级的记录)
|
|||
|
|
|
|||
|
|
### 2. 集成测试
|
|||
|
|
- [ ] 测试第三方语音服务集成(接入真实服务后)
|
|||
|
|
- [ ] 测试音频文件格式兼容性
|
|||
|
|
- [ ] 测试大文件上传
|
|||
|
|
|
|||
|
|
### 3. 性能测试
|
|||
|
|
- [ ] 测试并发上传
|
|||
|
|
- [ ] 测试大量数据查询
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **第三方服务**:当前使用模拟实现,实际使用时必须接入真实的第三方语音评测服务
|
|||
|
|
2. **音频格式**:支持mp3、wav、wma、m4a、aac等格式
|
|||
|
|
3. **文件大小**:建议音频文件不超过10MB
|
|||
|
|
4. **录音时长**:建议录音时长不超过60秒
|
|||
|
|
5. **权限控制**:确保数据权限配置正确,教师只能查看自己班级学员的记录
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 后续优化建议
|
|||
|
|
|
|||
|
|
1. **语音服务优化**:
|
|||
|
|
- 接入真实的第三方语音评测服务
|
|||
|
|
- 支持多个服务商切换
|
|||
|
|
- 添加服务降级机制
|
|||
|
|
|
|||
|
|
2. **功能增强**:
|
|||
|
|
- 支持评测结果对比(多次评测对比)
|
|||
|
|
- 支持评测报告生成(PDF)
|
|||
|
|
- 支持评测数据统计分析
|
|||
|
|
|
|||
|
|
3. **用户体验优化**:
|
|||
|
|
- 优化录音界面UI
|
|||
|
|
- 添加录音波形显示
|
|||
|
|
- 优化评测结果展示
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**完成状态**:✅ 基础功能已完成,待接入第三方语音服务
|
|||
|
|
|