412 lines
8.4 KiB
Markdown
412 lines
8.4 KiB
Markdown
# DeepSeek本地大模型智能语音评测配置指南
|
||
|
||
## 🎯 架构说明
|
||
|
||
```
|
||
录音(MP3)
|
||
↓
|
||
Whisper识别 → 文本
|
||
↓
|
||
DeepSeek分析 → 智能评分
|
||
↓
|
||
详细评测报告
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ 已完成的修改
|
||
|
||
### 1. 创建DeepSeek服务
|
||
**文件:** `DeepSeekService.java`
|
||
- 调用DeepSeek API进行智能评分
|
||
- 支持语义理解("你好"="您好")
|
||
- 提供详细反馈和建议
|
||
|
||
### 2. 集成评测流程
|
||
**文件:** `VoiceEvaluationServiceImpl.java`
|
||
- Whisper识别音频
|
||
- DeepSeek智能评分
|
||
- 多层降级机制
|
||
|
||
---
|
||
|
||
## 🚀 部署方案(3种)
|
||
|
||
### **方案1:使用Ollama(推荐)**
|
||
|
||
#### **优点:**
|
||
- ✅ 部署最简单
|
||
- ✅ 自动管理模型
|
||
- ✅ GPU加速支持
|
||
- ✅ OpenAI兼容接口
|
||
|
||
#### **部署步骤:**
|
||
|
||
**1. 安装Ollama**
|
||
```bash
|
||
# Windows
|
||
# 下载:https://ollama.com/download
|
||
|
||
# Linux
|
||
curl -fsSL https://ollama.com/install.sh | sh
|
||
```
|
||
|
||
**2. 下载DeepSeek模型**
|
||
```bash
|
||
# 下载DeepSeek-R1模型(推荐,准确度高)
|
||
ollama pull deepseek-r1:latest
|
||
|
||
# 或者下载更小的版本(速度快)
|
||
ollama pull deepseek-r1:7b
|
||
```
|
||
|
||
**3. 启动Ollama服务**
|
||
```bash
|
||
# Ollama会自动启动在 http://localhost:11434
|
||
# 无需额外操作
|
||
|
||
# 验证服务
|
||
curl http://localhost:11434/api/tags
|
||
```
|
||
|
||
**4. 配置Java服务**
|
||
|
||
编辑`DeepSeekService.java`第27-28行(已默认配置):
|
||
```java
|
||
private static final String DEEPSEEK_URL = "http://localhost:11434/v1/chat/completions";
|
||
private static final String MODEL_NAME = "deepseek-r1:latest";
|
||
```
|
||
|
||
**5. 启动完整服务**
|
||
```bash
|
||
# Terminal 1: 启动Whisper
|
||
cd Test/python
|
||
python whisper_server.py
|
||
|
||
# Terminal 2: 启动Java后端
|
||
cd Study-Vue-redis
|
||
mvn clean package -DskipTests
|
||
# 重启后端
|
||
```
|
||
|
||
**6. 测试**
|
||
|
||
查看后端日志:
|
||
```
|
||
🎤 Whisper识别结果: 你好世界
|
||
🧠 使用DeepSeek智能评分(语义理解)
|
||
✅ DeepSeek智能评测完成: 得分=95, 反馈=发音清晰,表达准确
|
||
```
|
||
|
||
---
|
||
|
||
### **方案2:使用vLLM(高性能)**
|
||
|
||
#### **优点:**
|
||
- ⚡ 速度最快
|
||
- 🔥 GPU推理优化
|
||
- 📈 支持批处理
|
||
|
||
#### **部署步骤:**
|
||
|
||
**1. 安装vLLM**
|
||
```bash
|
||
pip install vllm
|
||
```
|
||
|
||
**2. 启动DeepSeek服务**
|
||
```bash
|
||
python -m vllm.entrypoints.openai.api_server \
|
||
--model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
|
||
--port 8000
|
||
```
|
||
|
||
**3. 修改DeepSeekService配置**
|
||
```java
|
||
// 改为vLLM地址
|
||
private static final String DEEPSEEK_URL = "http://localhost:8000/v1/chat/completions";
|
||
private static final String MODEL_NAME = "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B";
|
||
```
|
||
|
||
---
|
||
|
||
### **方案3:使用Docker(生产环境)**
|
||
|
||
#### **优点:**
|
||
- 📦 环境隔离
|
||
- 🔄 易于迁移
|
||
- 🛡️ 稳定可靠
|
||
|
||
#### **Docker Compose配置:**
|
||
|
||
创建`docker-compose.yml`:
|
||
```yaml
|
||
version: '3'
|
||
services:
|
||
whisper:
|
||
image: python:3.9
|
||
volumes:
|
||
- ./Test/python:/app
|
||
working_dir: /app
|
||
command: python whisper_server.py
|
||
ports:
|
||
- "5001:5001"
|
||
deploy:
|
||
resources:
|
||
reservations:
|
||
devices:
|
||
- driver: nvidia
|
||
count: 1
|
||
capabilities: [gpu]
|
||
|
||
deepseek:
|
||
image: ollama/ollama
|
||
ports:
|
||
- "11434:11434"
|
||
volumes:
|
||
- ollama_data:/root/.ollama
|
||
deploy:
|
||
resources:
|
||
reservations:
|
||
devices:
|
||
- driver: nvidia
|
||
count: 1
|
||
capabilities: [gpu]
|
||
|
||
volumes:
|
||
ollama_data:
|
||
```
|
||
|
||
**启动:**
|
||
```bash
|
||
docker-compose up -d
|
||
|
||
# 下载DeepSeek模型
|
||
docker exec -it <容器ID> ollama pull deepseek-r1:latest
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 DeepSeek配置优化
|
||
|
||
### **1. 调整温度参数(影响输出稳定性)**
|
||
|
||
编辑`DeepSeekService.java`第68行:
|
||
```java
|
||
requestBody.put("temperature", 0.3); // 0.1-0.9
|
||
// 0.1 = 非常严格,输出一致
|
||
// 0.3 = 平衡 ✅ 推荐
|
||
// 0.7 = 更有创意
|
||
```
|
||
|
||
### **2. 调整最大Token数**
|
||
|
||
编辑`DeepSeekService.java`第164行:
|
||
```java
|
||
String response = chat(prompt, 500); // 增加到800
|
||
// 500 = 简短反馈
|
||
// 800 = 详细分析
|
||
```
|
||
|
||
### **3. 自定义评测标准**
|
||
|
||
编辑`DeepSeekService.java`第131-155行的提示词:
|
||
```java
|
||
private String buildEvaluationPrompt(String recognizedText, String standardText) {
|
||
return String.format("""
|
||
你是一位专业的中文语音评测专家...
|
||
|
||
评分标准:
|
||
- 准确度: 重点考察语义准确性(可调整)
|
||
- 完整度: 是否表达完整(可调整)
|
||
- 流利度: 语言流畅性(可调整)
|
||
- 发音: 发音清晰度(可调整)
|
||
|
||
特殊规则:
|
||
- "你好"和"您好"视为等价 ✅
|
||
- 语气词("嗯"、"啊")可忽略 ✅
|
||
- 停顿不影响得分 ✅
|
||
...
|
||
""", standardText, recognizedText);
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 DeepSeek智能评分优势
|
||
|
||
### **对比传统算法:**
|
||
|
||
| 评测项 | 传统算法 | DeepSeek智能评分 |
|
||
|-------|---------|-----------------|
|
||
| **语义理解** | ❌ "你好"≠"您好" | ✅ 理解同义词 |
|
||
| **语法检查** | ❌ 无法检查 | ✅ 自动检测错误 |
|
||
| **流利度** | ❌ 简单统计 | ✅ 理解语言流畅性 |
|
||
| **详细反馈** | ❌ 仅分数 | ✅ 具体建议 |
|
||
| **适应性** | ❌ 固定规则 | ✅ 自适应调整 |
|
||
|
||
### **示例对比:**
|
||
|
||
**输入:**
|
||
- 标准文本:"你好,今天天气很好"
|
||
- 识别文本:"您好,今天的天气非常不错"
|
||
|
||
**传统算法:**
|
||
```
|
||
得分: 60分(文字不匹配)
|
||
准确度: 40%
|
||
建议: 无
|
||
```
|
||
|
||
**DeepSeek智能评分:**
|
||
```
|
||
得分: 95分(语义正确)
|
||
准确度: 98%(您好=你好,非常不错=很好)
|
||
流利度: 95%(表达自然流畅)
|
||
建议: 表达准确,可以保持
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 降级机制
|
||
|
||
系统会自动选择最佳评测方案:
|
||
|
||
```
|
||
1. Whisper + DeepSeek ✅ 最佳(智能评分)
|
||
↓ 失败
|
||
2. Whisper单独评分 ⚡ 良好(简单算法)
|
||
↓ 失败
|
||
3. 百度API ☁️ 备用(云端服务)
|
||
```
|
||
|
||
**查看当前使用的方案(后端日志):**
|
||
```
|
||
🧠 使用DeepSeek智能评分(语义理解) ← 最佳
|
||
📊 使用Whisper内置评分(DeepSeek不可用) ← 降级1
|
||
☁️ 使用百度API进行评测(本地不可用) ← 降级2
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 测试验证
|
||
|
||
### **步骤1:启动所有服务**
|
||
|
||
```bash
|
||
# Terminal 1: Whisper
|
||
cd Test/python && python whisper_server.py
|
||
|
||
# Terminal 2: DeepSeek (Ollama)
|
||
# 自动运行,无需操作
|
||
|
||
# Terminal 3: Java后端
|
||
cd Study-Vue-redis && mvn spring-boot:run
|
||
```
|
||
|
||
### **步骤2:查看服务状态**
|
||
|
||
访问健康检查:
|
||
```bash
|
||
# Whisper
|
||
curl http://localhost:5001/health
|
||
|
||
# DeepSeek
|
||
curl http://localhost:11434/api/tags
|
||
|
||
# Java后端
|
||
curl http://localhost:30091/actuator/health
|
||
```
|
||
|
||
### **步骤3:测试语音评测**
|
||
|
||
在APP中录音测试,查看后端日志:
|
||
|
||
**预期日志(成功):**
|
||
```
|
||
🎤 Whisper识别结果: 你好世界
|
||
🧠 使用DeepSeek智能评分(语义理解)
|
||
调用DeepSeek: 你是一位专业的语音评测专家...
|
||
✅ DeepSeek响应成功
|
||
✅ DeepSeek评测成功: 总分=95, 反馈=发音清晰,表达准确
|
||
```
|
||
|
||
---
|
||
|
||
## ⚙️ 性能优化
|
||
|
||
### **1. GPU加速(推荐)**
|
||
|
||
如果有NVIDIA显卡:
|
||
```bash
|
||
# 确认GPU可用
|
||
nvidia-smi
|
||
|
||
# Ollama自动使用GPU,无需配置
|
||
# vLLM需要安装CUDA版本
|
||
pip install vllm[cuda]
|
||
```
|
||
|
||
**性能提升:**
|
||
- CPU: ~5秒/次
|
||
- GPU: ~0.5秒/次(10倍提升)
|
||
|
||
### **2. 模型量化**
|
||
|
||
使用量化模型减少内存和提升速度:
|
||
```bash
|
||
# 下载4-bit量化模型(推荐)
|
||
ollama pull deepseek-r1:7b-q4
|
||
|
||
# 修改配置
|
||
private static final String MODEL_NAME = "deepseek-r1:7b-q4";
|
||
```
|
||
|
||
**效果:**
|
||
- 内存占用:16GB → 4GB
|
||
- 速度提升:2倍
|
||
- 准确度损失:<5%
|
||
|
||
---
|
||
|
||
## 🎯 推荐配置
|
||
|
||
### **开发环境:**
|
||
```
|
||
Whisper: base模型(CPU)
|
||
DeepSeek: deepseek-r1:7b-q4(CPU)
|
||
评分方式: DeepSeek智能评分
|
||
```
|
||
|
||
### **生产环境:**
|
||
```
|
||
Whisper: small模型(GPU)
|
||
DeepSeek: deepseek-r1:latest(GPU)
|
||
评分方式: DeepSeek智能评分
|
||
部署方式: Docker Compose
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 成本对比
|
||
|
||
| 方案 | 硬件要求 | 成本 | 速度 | 准确率 |
|
||
|------|---------|------|------|--------|
|
||
| **百度API** | 无 | 免费5万/天 | 快 | 高 |
|
||
| **Whisper单独** | 4GB内存 | 免费 | 中 | 高 |
|
||
| **Whisper+DeepSeek(CPU)** | 16GB内存 | 免费 | 慢 | ✅ 很高 |
|
||
| **Whisper+DeepSeek(GPU)** | 8GB显存 | 免费 | ✅ 很快 | ✅ 很高 |
|
||
|
||
---
|
||
|
||
## ✅ 总结
|
||
|
||
**DeepSeek智能语音评测优势:**
|
||
1. ✅ 语义理解,智能评分
|
||
2. ✅ 详细反馈和建议
|
||
3. ✅ 完全本地化,数据私有
|
||
4. ✅ 免费无限次使用
|
||
5. ✅ 自动降级,高可用
|
||
|
||
**现在就可以开始使用!** 🎉
|