Ai_GirlFriend/xuniYou/语音通话技术栈说明.md
2026-02-28 18:04:34 +08:00

5.1 KiB
Raw Blame History

语音通话技术栈说明

🤖 使用的大模型和服务

1. 语音识别ASR

服务商:阿里云 DashScope 模型paraformer-realtime-v2 配置

VOICE_CALL_ASR_MODEL = "paraformer-realtime-v2"
VOICE_CALL_ASR_SAMPLE_RATE = 16000  # 16kHz 采样率

特点

  • 实时语音识别
  • 支持流式输入
  • 中文识别准确率高
  • 低延迟

2. 大语言模型LLM

服务商:阿里云 DashScope通义千问 默认模型qwen-flash 配置

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 配置

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 文件中配置:

# 阿里云 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 控制台
  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. 使用更快的模型

LLM_MODEL = "qwen-flash"  # 最快
# 而不是 qwen-max最慢但最准确

2. 减少历史消息数量

VOICE_CALL_MAX_HISTORY = 10  # 从 20 降到 10

3. 降低 LLM 输出长度

LLM_MAX_TOKENS = 1000  # 从 2000 降到 1000

4. 使用流式输出

# 已实现,无需修改
stream = chat_completion_stream(messages)

5. 优化 TTS 分段

# 在 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 全家桶

  • ASRParaformer 实时语音识别
  • LLM通义千问 qwen-flash
  • TTSCosyVoice v2

这套方案的优势:

  • 全中文支持
  • 低延迟
  • 高质量
  • 成本低
  • 易于集成