Ai_GirlFriend/语音对话快速开始.md
2026-03-05 17:18:04 +08:00

5.8 KiB
Raw Blame History

语音对话功能 - 快速开始

已完成的功能

  1. ASR 语音识别 - 用户语音转文字
  2. LLM 对话生成 - AI 智能回复
  3. TTS 语音合成 - AI 回复转语音
  4. 前端播放 - 播放 AI 语音

🚀 快速测试

1. 启动后端服务

双击运行启动项目.bat

这会自动启动:

应该看到两个窗口打开,显示:

[PHP 服务器] 正在启动...
[PHP 服务器] 端口: 30100

[Python 后端] 正在启动...
[Python 后端] 端口: 30101
INFO:     Uvicorn running on http://0.0.0.0:30101

2. 测试完整对话流程

在前端应用中:

  1. 打开语音通话页面
  2. 按住"按住说话"按钮
  3. 说话 2-3 秒:"你好,今天天气怎么样?"
  4. 松开按钮
  5. 等待处理(约 5-10 秒)
  6. 看到提示:"你说: 你好,今天天气怎么样?"
  7. 听到 AI 的语音回复

3. 查看日志

前端控制台:

📤 开始发送音频进行语音对话
📊 音频数据大小: XXX bytes
📤 发送语音对话请求...
✅ 对话响应: ...
✅ 识别结果: 你好,今天天气怎么样?
✅ AI回复: 今天天气很好哦...
🔊 开始播放 AI 语音回复...

后端日志:

INFO - 收到语音对话请求,用户: XXX, 格式: wav
INFO - 音频数据大小: XXX 字节
INFO - 开始 ASR 识别...
INFO - 音频已上传: https://...
INFO - ASR 任务创建: xxx
INFO - ASR 识别结果: 你好,今天天气怎么样?
INFO - 开始 LLM 对话生成...
INFO - LLM 回复: 今天天气很好哦...
INFO - 开始 TTS 语音合成...
INFO - TTS 合成完成,音频大小: XXX 字节

2. 验证服务运行

打开浏览器访问:

如果能正常访问,说明服务启动成功。

📋 对比:两种模式

模式 1: 仅 ASR 识别

端点: /voice/call/asr

流程:

用户录音 → ASR → 返回文字

用途:

  • 快速测试 ASR 功能
  • 仅需要语音转文字
  • 调试识别准确度

响应时间: 3-5 秒

模式 2: 完整语音对话(推荐)

端点: /voice/call/conversation

流程:

用户录音 → ASR → LLM → TTS → 返回文字+语音

用途:

  • 完整的语音对话体验
  • AI 智能回复
  • 自然的语音交互

响应时间: 7-15 秒

🎯 使用建议

什么时候用 ASR 模式?

  • 测试语音识别准确度
  • 调试录音功能
  • 快速验证音频质量
  • 不需要 AI 回复

什么时候用对话模式?

  • 正式的语音通话功能
  • 需要 AI 智能回复
  • 完整的用户体验
  • 生产环境使用

🔧 切换模式

前端代码修改

使用 ASR 模式:

const response = await uni.request({
  url: this.baseURLPy + '/voice/call/asr',
  method: 'POST',
  data: {
    audio_data: base64Audio,
    format: 'wav'
  }
})

// 只返回识别文字
const text = response.data.data.text

使用对话模式(当前默认):

const response = await uni.request({
  url: this.baseURLPy + '/voice/call/conversation',
  method: 'POST',
  data: {
    audio_data: base64Audio,
    format: 'wav'
  }
})

// 返回识别文字 + AI回复 + 语音
const userText = response.data.data.user_text
const aiText = response.data.data.ai_text
const audioData = response.data.data.audio_data

📊 功能对比表

功能 ASR 模式 对话模式
语音识别
AI 回复
语音合成
响应时间 3-5秒 7-15秒
网络流量
用户体验 基础 完整
适用场景 测试 生产

🎨 用户体验对比

ASR 模式体验

用户: [按住] "你好" [松开]
  ↓ (3秒)
界面: "识别: 你好"
  ↓
[结束,等待用户下一次操作]

对话模式体验(推荐)

用户: [按住] "你好" [松开]
  ↓ (3秒)
界面: "你说: 你好"
  ↓ (2秒)
界面: "AI: 你好呀,很高兴见到你~"
  ↓
[播放 AI 语音]
  ↓
[自然的对话体验]

🚀 下一步

立即可以做的

  1. 测试完整对话流程
  2. 调整 AI 回复风格(修改 personality_prompt
  3. 更换音色(修改 voice_id
  4. 优化录音时长

需要开发的

  1. 对话历史记录
  2. 多轮对话上下文
  3. 流式 TTS边生成边播放
  4. 打断功能

💡 优化建议

提升响应速度

  1. 使用更快的模型

    LLM_MODEL=qwen-flash  # 更快但质量略低
    
  2. 限制回复长度

    LLM_MAX_TOKENS=500  # 减少生成时间
    
  3. 优化网络

    • 使用 CDN 加速
    • 选择就近的 OSS 区域

提升对话质量

  1. 完善人格设定

    • 在数据库中设置详细的 personality_prompt
    • 包含性格、说话风格、兴趣爱好等
  2. 添加对话历史

    • 保存最近 5-10 轮对话
    • 提供更连贯的上下文
  3. 情感调节

    • 根据用户语气调整回复
    • 使用不同的 TTS 参数

📝 测试检查清单

基础功能

  • 录音功能正常
  • ASR 识别准确(准确率 > 90%
  • LLM 回复合理
  • TTS 语音自然
  • 播放功能正常

用户体验

  • 响应时间可接受(< 15秒
  • 提示信息清晰
  • 错误处理友好
  • 音质清晰

边界情况

  • 录音时间太短
  • 录音时间太长
  • 网络中断
  • 识别失败
  • 合成失败

🎉 恭喜!

你已经完成了完整的语音对话功能!现在可以:

  1. 用户说话AI 听懂
  2. AI 智能回复
  3. AI 用语音回答
  4. 自然的对话体验

享受与 AI 恋人的语音对话吧!💕


最后更新: 2026-03-05 版本: v2.0