# Voice Agent — Từ Text Chat sang Gọi điện bằng AI

> **Tóm tắt:** Voice Agent là bước tiến tự nhiên tiếp theo — thay vì chỉ chat text, AI có thể **gọi điện tư vấn** hoặc **nhận cuộc gọi** từ khách hàng. Tài liệu này phân tích kiến trúc STT→LLM→TTS, lựa chọn công nghệ, và lộ trình tích hợp.

---

## 1. Tại sao cần Voice Agent?

| Kênh | Conversion Rate | Ưu điểm | Giới hạn |
|------|----------------|---------|----------|
| **Text Chat** | 5-15% | Tiện, không cần SĐT | Khách lười gõ, thiếu cảm xúc |
| **Voice Agent** | 15-35% | Tự nhiên, nhanh, cảm xúc | Cần infra phức tạp hơn |
| **Telesale người** | 20-40% | Linh hoạt nhất | Đắt, không scale, phụ thuộc nhân viên |

> **Use case Canifa:** Khách chat xong nhưng chưa chốt → AI tự động gọi lại sau 30 phút, giọng thân thiện: *"Chào chị, bên em có mẫu áo khoác chị vừa xem. Em có thể hỗ trợ đặt hàng luôn không ạ?"*

---

## 2. Kiến trúc Voice Agent Pipeline

### Luồng xử lý realtime (< 1.5 giây)

```
Khách nói   ──→  [Twilio Media Stream]  ──→  [Deepgram STT]  ──→  Text
                        │                                            │
                        │                                     ┌──────▼──────┐
                        │                                     │  Canifa LLM  │
                        │                                     │  (Classifier  │
                        │                                     │   + Stylist)  │
                        │                                     └──────┬──────┘
                        │                                            │
AI trả lời  ←──  [Twilio Play Audio]   ←──  [ElevenLabs TTS]  ←──  Text
```

### 3 thành phần chính

| Component | Công nghệ | Vai trò | Latency |
|-----------|-----------|---------|---------|
| **STT** (Speech-to-Text) | Deepgram Nova-2 / Whisper | Chuyển giọng nói → text | ~200ms |
| **LLM** (Brain) | Gemini Flash / GPT-4o-mini | Hiểu ý định + sinh response | ~300ms |
| **TTS** (Text-to-Speech) | ElevenLabs / XTTS-v2 | Chuyển text → giọng nói tự nhiên | ~400ms |

### Tổng latency mục tiêu: < 1.5 giây

Để đạt được, cần:
- **Streaming STT:** Không đợi khách nói hết → transcript từng chunk
- **Streaming TTS:** Không đợi LLM viết hết → bắt đầu đọc khi có câu đầu
- **Geographic proximity:** Server đặt cùng region với Twilio endpoint

---

## 3. Các bài toán kỹ thuật khó

### 3.1. Turn-Taking (Lượt nói)

**Vấn đề:** Ai nói trước? Khách cắt ngang thì sao?

| Tình huống | Giải pháp |
|-----------|----------|
| Khách cắt ngang AI đang nói | **Barge-in detection** — VAD (Voice Activity Detection) dừng TTS ngay |
| Khách im lặng 3 giây | AI hỏi lại: "Anh/chị còn đó không ạ?" |
| Tiếng ồn nền | Noise cancellation + confidence threshold của STT |

### 3.2. Echo Cancellation

AI không được "nghe" chính tiếng mình phát ra → tránh vòng lặp vô hạn. Giải pháp: Twilio Media Stream tách riêng inbound/outbound audio.

### 3.3. Human Handoff

Khi nào AI nên chuyển sang người:

| Trigger | Hành động |
|---------|----------|
| Khách nói "cho tôi gặp nhân viên" | Transfer call ngay |
| Sentiment score < 0.3 (bực bội) | Chuyển + kèm context |
| AI không hiểu sau 2 lần hỏi lại | Chuyển kèm transcript |

---

## 4. Lựa chọn công nghệ

### Option A: Managed Platform (Nhanh, ít code)

| Platform | STT | LLM | TTS | Giá |
|----------|-----|-----|-----|-----|
| **ElevenLabs Conversational AI** | Built-in | Any (OpenAI/Gemini) | ElevenLabs | $0.10/phút |
| **Deepgram Voice Agent API** | Deepgram | Built-in | Built-in | $0.07/phút |
| **Vapi.ai** | Deepgram | Any | ElevenLabs | $0.05/phút |

### Option B: Self-Build (Linh hoạt, kiểm soát hoàn toàn)

```
Twilio (SIP/Phone) → WebSocket Server (Python) → Deepgram STT → Canifa LLM → ElevenLabs TTS → Twilio
```

**Ưu điểm:** Toàn quyền kiểm soát logic, tích hợp sâu với Canifa Tool Registry.
**Nhược điểm:** Cần 3-4 tuần dev, phải xử lý edge cases (barge-in, echo, reconnect).

---

## 5. Use Cases cho Canifa

| Use Case | Mô tả | Priority |
|----------|-------|----------|
| **Outbound Follow-up** | Khách chat chưa chốt → AI gọi lại sau 30p | ⭐⭐⭐⭐⭐ |
| **Order Confirmation** | AI gọi xác nhận đơn (SĐT, địa chỉ, size) | ⭐⭐⭐⭐ |
| **Inbound Support** | Khách gọi hotline → AI trả lời trước | ⭐⭐⭐ |
| **Store Finder** | "Cửa hàng gần nhất ở đâu?" → tra cứu + đọc | ⭐⭐ |
| **Promotion Blast** | AI gọi thông báo KM cho khách VIP | ⭐⭐⭐ |

---

## 6. Tích hợp với hệ thống hiện tại

Voice Agent tái sử dụng 100% logic hiện tại:

| Component hiện tại | Tái sử dụng |
|-------------------|-------------|
| Classifier Agent | ✅ Nhận text từ STT → xử lý y hệt chat |
| Tool Registry | ✅ ProductSearch, StoreSearch, etc. |
| Stylist Agent | ✅ Viết response → feed vào TTS |
| InsightJSON | ✅ Cross-channel: chat insight → voice tiếp tục |
| 5 Modes (BROWSE→RETENTION) | ✅ Áp dụng y hệt cho voice |

**Chỉ cần thêm:** WebSocket bridge (Twilio ↔ Server) + STT adapter + TTS adapter.

---

## 7. Lộ trình triển khai

| Phase | Scope | Effort | Prerequisite |
|-------|-------|--------|-------------|
| **P1** | PoC: AI gọi xác nhận đơn hàng (outbound) | 2 tuần | Twilio account + ElevenLabs API |
| **P2** | Outbound follow-up cho lead chưa chốt | 2 tuần | P1 + n8n trigger |
| **P3** | Inbound hotline (AI trả lời trước) | 3 tuần | P2 + Human handoff logic |
| **P4** | Voice + Chat context sharing (omnichannel) | 2 tuần | P3 + Cross-session memory |

---

## References

1. Twilio (2025) — *"Media Streams WebSocket API"*
2. Deepgram (2025) — *"Voice Agent API: Real-time Conversation"*
3. ElevenLabs (2025) — *"Conversational AI Platform"*
4. Gartner (2025) — *"Voice AI in Retail: 35% higher close rate vs text-only"*
