Ai_GirlFriend/xuniYou/语音通话技术栈说明.md

222 lines
5.1 KiB
Markdown
Raw Permalink Normal View History

2026-02-28 18:04:34 +08:00
# 语音通话技术栈说明
## 🤖 使用的大模型和服务
### 1. 语音识别ASR
**服务商**:阿里云 DashScope
**模型**`paraformer-realtime-v2`
**配置**
```python
VOICE_CALL_ASR_MODEL = "paraformer-realtime-v2"
VOICE_CALL_ASR_SAMPLE_RATE = 16000 # 16kHz 采样率
```
**特点**
- 实时语音识别
- 支持流式输入
- 中文识别准确率高
- 低延迟
### 2. 大语言模型LLM
**服务商**:阿里云 DashScope通义千问
**默认模型**`qwen-flash`
**配置**
```python
LLM_MODEL = "gpt-3.5-turbo" # 默认配置
# 实际使用qwen-flash通义千问快速版
LLM_TEMPERATURE = 0.8
LLM_MAX_TOKENS = 2000
```
**可选模型**
- `qwen-flash` - 快速版,低延迟(推荐用于语音通话)
- `qwen-turbo` - 标准版
- `qwen-plus` - 增强版
- `qwen-max` - 旗舰版
**特点**
- 支持流式输出
- 中文理解能力强
- 响应速度快
- 支持多轮对话
### 3. 语音合成TTS
**服务商**:阿里云 DashScope
**模型**`cosyvoice-v2`
**默认音色**`longxiaochun_v2`
**配置**
```python
VOICE_CALL_TTS_MODEL = "cosyvoice-v2"
VOICE_CALL_TTS_VOICE = "longxiaochun_v2"
VOICE_CALL_TTS_FORMAT = "mp3" # 或 pcm
```
**支持的音色**
- 可以在数据库 `voice_library` 表中配置
- 支持自定义音色克隆
**特点**
- 高质量语音合成
- 支持多种音色
- 支持情感控制
- 低延迟
## 📊 完整的技术栈
### 后端框架
- **FastAPI** - Python 异步 Web 框架
- **SQLAlchemy** - ORM 数据库操作
- **MySQL** - 数据库
### AI 服务
- **阿里云 DashScope** - 统一的 AI 服务平台
- ASRParaformer 实时语音识别
- LLM通义千问系列模型
- TTSCosyVoice 语音合成
### 前端
- **uni-app** - 跨平台开发框架
- **Vue.js** - 前端框架
- **WebSocket** - 实时通信
## 🔄 语音通话流程
```
用户说话
[客户端] 录音PCM 16kHz
[WebSocket] 发送音频数据
[服务器] ASR 识别Paraformer
[服务器] LLM 生成回复(通义千问)
[服务器] TTS 合成语音CosyVoice
[WebSocket] 返回音频数据
[客户端] 播放语音
```
## ⚙️ 配置说明
### 必需的环境变量
`lover/.env` 文件中配置:
```bash
# 阿里云 DashScope API Key必需
DASHSCOPE_API_KEY=sk-xxxxxxxxxxxxx
# LLM 模型配置
LLM_MODEL=qwen-flash
LLM_TEMPERATURE=0.8
LLM_MAX_TOKENS=2000
# 语音通话配置
VOICE_CALL_ASR_MODEL=paraformer-realtime-v2
VOICE_CALL_ASR_SAMPLE_RATE=16000
VOICE_CALL_TTS_MODEL=cosyvoice-v2
VOICE_CALL_TTS_VOICE=longxiaochun_v2
VOICE_CALL_TTS_FORMAT=mp3
VOICE_CALL_IDLE_TIMEOUT=60
VOICE_CALL_MAX_HISTORY=20
```
### 获取 API Key
1. 访问 [阿里云 DashScope 控制台](https://dashscope.console.aliyun.com/)
2. 注册/登录账号
3. 创建 API Key
4. 配置到 `.env` 文件
## 💰 成本估算
### 阿里云 DashScope 定价(参考)
1. **ASR语音识别**
- 约 ¥0.0004/秒
- 5 秒语音 ≈ ¥0.002
2. **LLM通义千问 qwen-flash**
- 约 ¥0.0004/1000 tokens
- 一次对话200 tokens≈ ¥0.00008
3. **TTS语音合成**
- 约 ¥0.002/100 字符
- 50 字回复 ≈ ¥0.001
**单次对话成本**:约 ¥0.003-0.005(不到 1 分钱)
## 🔧 性能优化建议
### 1. 使用更快的模型
```python
LLM_MODEL = "qwen-flash" # 最快
# 而不是 qwen-max最慢但最准确
```
### 2. 减少历史消息数量
```python
VOICE_CALL_MAX_HISTORY = 10 # 从 20 降到 10
```
### 3. 降低 LLM 输出长度
```python
LLM_MAX_TOKENS = 1000 # 从 2000 降到 1000
```
### 4. 使用流式输出
```python
# 已实现,无需修改
stream = chat_completion_stream(messages)
```
### 5. 优化 TTS 分段
```python
# 在 voice_call.py 中已优化
threshold = 8 if self.tts_first_chunk else 18
```
## 🆚 模型对比
| 模型 | 速度 | 质量 | 成本 | 推荐场景 |
|------|------|------|------|----------|
| qwen-flash | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 语音通话(推荐) |
| qwen-turbo | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 文字聊天 |
| qwen-plus | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 复杂任务 |
| qwen-max | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | 专业场景 |
## 📝 代码位置
- **LLM 封装**`lover/llm.py`
- **TTS 封装**`lover/tts.py`
- **语音通话路由**`lover/routers/voice_call.py`
- **配置文件**`lover/config.py`
- **环境变量**`lover/.env`
## 🔗 相关文档
- [阿里云 DashScope 文档](https://help.aliyun.com/zh/dashscope/)
- [通义千问 API 文档](https://help.aliyun.com/zh/dashscope/developer-reference/api-details)
- [Paraformer ASR 文档](https://help.aliyun.com/zh/dashscope/developer-reference/paraformer-realtime-v2)
- [CosyVoice TTS 文档](https://help.aliyun.com/zh/dashscope/developer-reference/cosyvoice-v2)
## 🎯 总结
语音通话使用的是**阿里云 DashScope 全家桶**
- ASRParaformer 实时语音识别
- LLM通义千问 qwen-flash
- TTSCosyVoice v2
这套方案的优势:
- ✅ 全中文支持
- ✅ 低延迟
- ✅ 高质量
- ✅ 成本低
- ✅ 易于集成