Files
server/docs/TTS_CONNECTION_WARMUP_TEST.md
2025-12-06 22:41:44 +08:00

6.9 KiB
Raw Blame History

TTS连接预热优化测试指南

测试目标

验证TTS WebSocket连接预热和复用功能确保

  1. 用户连接时成功预热TTS连接
  2. 多句话复用同一个TTS连接
  3. 连接断开后自动重连
  4. 用户断开时正确清理连接
  5. 性能提升符合预期

测试环境准备

  1. 启动后端服务
  2. 确保MiniMax TTS API配置正确
  3. 使用微信小程序或WebSocket客户端

测试用例

测试1连接预热验证

目的验证用户连接时是否成功预热TTS连接

步骤

  1. 前端连接到语音流WebSocketws://your-server:8091/ws/voice-stream
  2. 观察后端日志

预期日志

[VoiceStreamHandler] 语音流WebSocket连接建立 - SessionId: xxx, UserId: null
[VoiceStreamService] 预热TTS连接 - SessionId: xxx
[MinimaxTtsStreamService] 开始预热TTS连接 - SessionId: xxx
[MinimaxTtsStreamService] MiniMax TTS连接已建立 - SessionId: xxx
[MinimaxTtsStreamService] 收到connected_success发送task_start - SessionId: xxx
[MinimaxTtsStreamService] 收到task_started连接就绪 - SessionId: xxx
[MinimaxTtsStreamService] TTS连接预热成功 - SessionId: xxx, 耗时: XXXms
[VoiceStreamHandler] TTS连接预热成功 - SessionId: xxx

成功标准

  • 连接建立后立即开始预热
  • 预热在1-2秒内完成
  • 连接状态变为IDLE

测试2连接复用验证

目的验证多句话是否复用同一个TTS连接

步骤

  1. 确保已建立连接并预热成功
  2. 发送一段音频(用户说:"你好,今天天气怎么样?"
  3. 等待AI回复多句话例如"你好!今天天气很好。阳光明媚。"
  4. 观察后端日志

预期日志

[VoiceStreamService] STT识别结果 - SessionId: xxx, Text: 你好,今天天气怎么样?
[VoiceStreamService] 检测到完整句子 - SessionId: xxx, Sentence: 你好!
[MinimaxTtsStreamService] 使用已有TTS连接 - SessionId: xxx, Text: 你好!
[MinimaxTtsStreamService] 缓冲音频块 - SessionId: xxx: 2048 bytes, 总计: 2048 bytes
...
[MinimaxTtsStreamService] TTS完成 - SessionId: xxx, Text: 你好!, 音频总大小: 24576 bytes
[MinimaxTtsStreamService] TTS完成 - SessionId: xxx, 耗时: 300ms复用连接节省约1秒
[VoiceStreamService] 检测到完整句子 - SessionId: xxx, Sentence: 今天天气很好。
[MinimaxTtsStreamService] 使用已有TTS连接 - SessionId: xxx, Text: 今天天气很好。
[MinimaxTtsStreamService] TTS完成 - SessionId: xxx, 耗时: 250ms复用连接节省约1秒

成功标准

  • 日志显示"使用已有TTS连接"而不是"创建MiniMax TTS连接"
  • 每句TTS完成时间在200-500ms而非1-1.5s
  • 日志显示"复用连接节省约1秒"
  • 没有重复的连接建立日志

测试3自动重连验证

目的:验证连接断开后是否自动重连

步骤

  1. 正常建立连接
  2. 手动关闭MiniMax TTS WebSocket连接模拟网络断开
  3. 发送一段音频触发TTS
  4. 观察后端日志

预期日志

[MinimaxTtsStreamService] MiniMax TTS连接关闭 - SessionId: xxx, Code: 1006, Reason: ..., Remote: true
[MinimaxTtsStreamService] 尝试自动重连TTS - SessionId: xxx, 第1次重连
[MinimaxTtsStreamService] 开始预热TTS连接 - SessionId: xxx
[MinimaxTtsStreamService] TTS连接预热成功 - SessionId: xxx, 耗时: XXXms
[MinimaxTtsStreamService] 使用已有TTS连接 - SessionId: xxx, Text: ...

成功标准

  • 检测到连接断开
  • 自动触发重连最多3次
  • 重连成功后可正常使用
  • 重连失败3次后停止尝试

测试4连接清理验证

目的验证用户断开时是否正确清理TTS连接

步骤

  1. 建立连接并预热成功
  2. 前端主动断开WebSocket连接
  3. 观察后端日志

预期日志

[VoiceStreamHandler] 语音流WebSocket连接关闭 - SessionId: xxx, Status: CloseStatus[code=1000, reason=null]
[VoiceStreamService] 关闭TTS连接 - SessionId: xxx
[MinimaxTtsStreamService] 关闭TTS连接 - SessionId: xxx
[MinimaxTtsStreamService] 发送task_finish - SessionId: xxx
[MinimaxTtsStreamService] MiniMax TTS连接关闭 - SessionId: xxx, Code: 1000, Reason: ...

成功标准

  • 正确发送task_finish
  • 正常关闭TTS连接
  • 从连接池中移除
  • 无内存泄漏

测试5性能对比验证

目的:验证性能提升是否符合预期

测试场景AI回复3句话

修改前性能

  • 首句延迟1-1.5秒
  • 第二句延迟1-1.5秒
  • 第三句延迟1-1.5秒
  • 总延迟3-4.5秒

修改后预期性能

  • 首句延迟0.5秒仅TTS合成
  • 第二句延迟0.2-0.3秒
  • 第三句延迟0.2-0.3秒
  • 总延迟0.9-1.1秒

性能提升:约 65-70%

验证方法

  1. 在日志中记录每句TTS的开始和结束时间
  2. 计算总耗时
  3. 与预期值对比

测试6并发测试

目的:验证多用户同时使用时的连接管理

步骤

  1. 创建3-5个WebSocket连接模拟多用户
  2. 每个连接同时发送音频
  3. 观察后端日志和性能

成功标准

  • 每个用户有独立的TTS连接
  • 连接之间互不影响
  • 无连接混乱
  • 性能稳定

性能监控指标

在日志中关注以下关键指标:

  1. 连接建立时间TTS连接预热成功 - SessionId: xxx, 耗时: XXXms
  2. 连接复用次数:统计"使用已有TTS连接"出现次数
  3. TTS合成时间TTS完成 - SessionId: xxx, 耗时: XXXms
  4. 重连次数尝试自动重连TTS - SessionId: xxx, 第X次重连
  5. 连接状态变化观察状态从CONNECTING → CONNECTED → TASK_STARTED → IDLE的转换

常见问题排查

问题1预热失败

现象TTS连接预热失败 - SessionId: xxx

可能原因

  • MiniMax API配置错误
  • 网络连接问题
  • API密钥过期

解决方法

  • 检查application.yml中的MiniMax配置
  • 验证API密钥是否有效
  • 检查网络连接

问题2连接未复用

现象每次TTS都显示"创建MiniMax TTS连接"

可能原因

  • 连接状态管理错误
  • 连接在使用前被关闭

解决方法

  • 检查连接状态日志
  • 确认is_final后状态设为IDLE而非关闭

问题3自动重连失败

现象重连3次后仍无法恢复

可能原因

  • MiniMax服务问题
  • 网络持续不稳定

解决方法

  • 检查MiniMax服务状态
  • 降级为按需创建连接

测试清单

  • 测试1连接预热验证
  • 测试2连接复用验证
  • 测试3自动重连验证
  • 测试4连接清理验证
  • 测试5性能对比验证
  • 测试6并发测试
  • 检查无内存泄漏
  • 检查无连接泄漏
  • 压力测试10+并发用户)

测试结论

完成所有测试后,记录:

  1. 实际性能提升百分比
  2. 连接复用成功率
  3. 自动重连成功率
  4. 发现的问题和改进建议