技术方案.md 3.7 KB

硬件对接技术方案

完整流程

用户            本地硬件              云端服务
 |                 |                    |
 | "小助手"        |                    |
 |--------------->|                    |
 |                 | 唤醒词检测(本地)  |
 |                 | ~10ms              |
 |                 |                    |
 |                 | 启动录音           |
 | "今天天气怎样"  |                    |
 |--------------->|                    |
 |                 | VAD 检测停顿       |
 |                 | ~1s                |
 |                 |                    |
 |                 | 上传音频           |
 |                 |----------------->|
 |                 |                    | ASR 转文字
 |                 |                    | 1-3s
 |                 |                    |
 |                 |                    | LLM 生成回复
 |                 |                    | "今天北京晴..."
 |                 |                    |
 |                 |                    | 调你的 TTS API
 |                 |                    |
 |                 | 返回音频流         |
 |                 |<-----------------|
 | "今天北京晴..." |                    |
 |<---------------|                    |
 |                 | 播放音频           |

端到端延迟优化

默认延迟(~5 秒)

唤醒       10ms
录音停顿   500ms
ASR        1500ms
LLM        2000ms
TTS        800ms
播放启动   100ms
─────────────────
总计       ~5s

优化后延迟(~3 秒)

  • 流式 ASR(边录边识别)
  • 流式 LLM(边识别边生成)
  • 流式 TTS(边生成边合成)
  • 流式播放(边合成边播放)

各模块技术选型

唤醒词

方案 树莓派 ESP32
Picovoice Porcupine ✅(官方支持)
Snowboy ❌ 已停止维护
关键词自定义

VAD(语音活动检测)

方案 树莓派 ESP32
webrtcvad
Silero VAD ⚠️ 资源紧张
能量检测 ✅(最简方案)

ASR

方案 推荐度 价格
OpenAI Whisper API ⭐⭐⭐⭐⭐ ¥0.006/分钟
阿里达摩院 Paraformer ⭐⭐⭐⭐ 按量计费
本地 Whisper.cpp ⭐⭐⭐ 免费(树莓派能跑)
讯飞 / 百度 ⭐⭐⭐ 价格不一

LLM

方案 推荐度 价格
DeepSeek ⭐⭐⭐⭐⭐ ¥1/百万 token(便宜)
GPT-4o ⭐⭐⭐⭐ $5/百万 token
通义千问 Qwen ⭐⭐⭐⭐ 按量计费
Ollama 本地 ⭐⭐⭐ 免费(但慢)

TTS(你的服务)⭐

参考 tts-sdk/README.md

内存与算力需求

树莓派 4B

  • 内存:1-2 GB 占用
  • CPU:单核 50%(音频处理时)
  • 网络:稳定 WiFi 即可

ESP32-S3

  • 内存:录音缓冲 < 1 MB
  • CPU:单核 80%(网络忙时)
  • 网络:必须 2.4GHz WiFi

常见问题

Q: 没网络时怎么办?

A: 预设回复("网络不好,请稍后重试") + 重试机制

Q: 弱网时延迟太高?

A: 流式处理 + 超时控制 + 降级方案

Q: 多人说话识别错?

A: 远场拾音需要麦克风阵列,单麦限制大

Q: 怎么调试延迟?

A: 每个模块打印耗时日志,定位瓶颈

安全性

API Key 保护

  • 不要硬编码在代码里
  • 使用环境变量或密钥管理
  • 不同环境用不同 Key

用户隐私

  • 录音不上传到第三方(除非必要)
  • 提示用户"正在录音"
  • 提供删除历史功能

设备安全

  • ESP32 OTA 升级签名验证
  • 防止恶意固件刷入
  • API 调用频率限制