Voicemail Detection

  • Trạng thái: Đã phê duyệt
  • Ngày hiệu lực: 19-06-2026 (Cập nhật mới nhất: 23-06-2026)
  • Đội ngũ sở hữu: Voice Engine Team
  • Đối tượng tài liệu: Business Analyst (BA) / Tài liệu đặc tả logic nghiệp vụ

1. Ngữ cảnh nghiệp vụ (Context)

Khi thực hiện cuộc gọi ra tự động (Outbound calls), hệ thống thường xuyên kết nối vào hệ thống hộp thư thoại (voicemail) của nhà mạng thay vì gặp người thật. Bot cần phải phát hiện điều này thật nhanh để ngắt cuộc gọi chủ động. Nếu không, Bot sẽ lãng phí thời gian cước gọi để “độc thoại” với băng ghi âm, đồng thời làm sai lệch dữ liệu báo cáo thống kê cuộc gọi (analytics).

Vì không có một tín hiệu đơn lẻ nào đáng tin cậy 100%, hệ thống quyết định kết hợp đồng thời 3 loại tín hiệu:

  • Tiếng bíp (Beep): Là bằng chứng gần như chắc chắn của voicemail, nhưng không phải nhà mạng hay thuê bao nào cũng cấu hình phát tiếng bíp.
  • Sự im lặng (Silence): Sau khi kết nối thành công mà đầu dây bên kia không có tiếng động là một dấu hiệu mạnh mẽ, tuy nhiên người thật phản ứng chậm cũng có thể giữ im lặng vài giây đầu.
  • Nội dung văn bản dịch (Transcription Content): Các câu thoại đặc trưng như “Vui lòng để lại lời nhắn sau tiếng bíp”, “Hộp thư thoại của thuê bao hiện tại đã đầy” là tín hiệu chính xác nhất, nhưng phụ thuộc vào thời gian xử lý của bộ dịch âm thanh sang văn bản (STT) và thời gian phản hồi từ mô hình ngôn ngữ lớn (LLM), nên đây là tín hiệu chậm nhất.

Giải pháp nghiệp vụ: Chạy song song cả 3 cổng kiểm tra này cùng lúc. Chỉ cần bất kỳ cổng nào báo về là hộp thư thoại (áp dụng cơ chế logic OR), hệ thống sẽ lập tức kết luận cuộc gọi gặp voicemail và xử lý ngắt cuộc gọi ngay.


2. Logic Xử Lý & Các Quyết Định Nghiệp Vụ

D1 — Cơ chế hoạt động song song (Logic OR)

  • Hệ thống tự động chèn hai nút kiểm tra vào luồng xử lý: Cổng âm thanh (Audio Gate) kiểm tra ngay sau khi nhận tín hiệu âm thanh đầu vào, và Cổng văn bản (Transcription Classifier) kiểm tra ngay sau khi có dữ liệu text từ bộ STT.
  • Không chặn câu chào của Bot: Cơ chế kiểm tra này hoàn toàn là “quan sát độc lập” (observational). Luồng âm thanh vẫn được truyền đi bình thường, Bot vẫn nói câu chào và tương tác với khách hàng chứ không bị giữ lại để chờ kết quả phân loại. Nếu có bất kỳ cổng nào xác định là voicemail, hệ thống sẽ ghi nhận vào tổng kết cuộc gọi (Call Summary) và phát lệnh hủy cuộc gọi an toàn độc lập.

D2 — Logic phát hiện Tiếng Bíp (Beep Detection)

Hệ thống phân tích tần số âm thanh đầu vào (FFT) liên tục trong dải tần số từ 300–3500 Hz để tìm ra đặc trưng của tiếng bíp:

  • Năng lượng: Tại dải tần này phải chiếm ít nhất 30% tổng năng lượng âm thanh (để loại bỏ các tạp âm nhỏ bên ngoài dải tần bíp).
  • Độ tập trung đỉnh tín hiệu: Peak/Mean Ratio phải vượt ngưỡng quy định (năng lượng tập trung cao độ tại một điểm - đặc trưng của âm thanh đơn sắc dạng tiếng bíp, khác hoàn toàn với tiếng người nói có dải âm trải rộng).
  • Bộ lọc nhiễu: Để tránh nhiễu do tiếng động đột ngột hoặc tiếng click nhiễu trên đường truyền, âm thanh phải đạt tiêu chuẩn tiếng bíp liên tục trong ít nhất 3 khung hình (frames) thì hệ thống mới chính thức kích hoạt lệnh chặn voicemail.

D3 — Logic phát hiện Im Lặng (Silence Detection)

  • Thời gian chờ tối đa (Timeout): Được cấu hình mặc định là 3.0 giây.
  • Cơ chế kích hoạt: Bộ đếm thời gian im lặng không chạy ngay khi thiết lập cuộc gọi (setup), mà chỉ bắt đầu tính từ lúc nhận được khung dữ liệu âm thanh thực tế đầu tiên sau khi cuộc gọi được kết nối thành công (sau khi nhà mạng trả về trạng thái Đã kết nối / 200 OK / CONFIRMED).
  • Ý nghĩa: Đảm bảo thời gian đổ chuông dài hay ngắn không bị tính nhầm vào thời gian im lặng. Nếu hết 3.0 giây kể từ khi kết nối mà không nhận được tiếng người nói hoặc âm thanh có lượng vượt ngưỡng (ngưỡng âm lượng PCM16 RMS > 30), hệ thống sẽ ngắt máy và kết luận voicemail do im lặng. Mọi tín hiệu tiếng bíp hoặc tiếng nói của con người xuất hiện trong cửa sổ này sẽ hủy bộ đếm thời gian im lặng ngay lập tức.

D4 — Bộ phân loại văn bản (Transcription Classifier)

Hệ thống tự động lựa chọn một trong hai chế độ xử lý tùy thuộc vào cấu hình kịch bản cuộc gọi:

Chế độ LLM (Mặc định cho kịch bản thông thường)

  • Tài nguyên tách biệt: Sử dụng một cụm tài nguyên LLM riêng biệt, tách độc lập với LLM xử lý hội thoại chính để đảm bảo tốc độ phản hồi tối đa.
  • Định dạng phản hồi nghiêm ngặt: Sử dụng câu lệnh (Prompt) tiếng Việt chuyên dụng. Định dạng phản hồi buộc LLM trả về đúng 2 dòng: Dòng 1 là nhãn phân loại (VOICEMAIL hoặc CONVERSATION), Dòng 2 là lý do ngắn gọn. Hệ thống chỉ đọc nhãn ở dòng 1 để ra quyết định.
  • Ưu tiên độ chính xác cao: Để không bị nhầm lẫn giữa một câu chào ngắn của người thật với lời mở đầu của tổng đài, hệ thống không phân loại ngay từ câu nói đầu tiên. Nó sẽ gom ngữ cảnh và chỉ gọi lên LLM khi tích lũy đủ ít nhất 2 câu nói (utterances) của người dùng, HOẶC đã quá 8.0 giây kể từ khi Bot bắt đầu nói câu đầu tiên.

Chế độ Từ khóa (Keyword Mode - Dành riêng cho kịch bản chỉ bắt từ khóa)

  • Tối ưu hóa: Tự động kích hoạt khi kịch bản cuộc gọi được cấu hình dạng chỉ nghe từ khóa tĩnh, không check ý định phức tạp. Chế độ này không sử dụng LLM nhằm tiết kiệm chi phí và thời gian xử lý.

D5 — Cấu hình kích hoạt linh hoạt theo cuộc gọi

Tính năng phát hiện voicemail được cấu hình bật mặc định ở cấp độ hệ thống. Tuy nhiên, luồng xử lý hỗ trợ tham số cho phép tắt tính năng này theo từng cuộc gọi cụ thể nếu doanh nghiệp muốn giữ nguyên hành vi của hệ thống cũ.

D6 — Ghi nhận kết quả cuộc gọi phục vụ Báo cáo (Call Summary Metrics)

Hệ thống xuất ra các trường dữ liệu chuẩn hóa sau đây để BA có thể trực tiếp kéo dữ liệu làm báo cáo phân tích hoặc nghiệm thu kịch bản:

Tên trường dữ liệu Giá trị trả về Ý nghĩa nghiệp vụ cho BA
voicemail_detected True / False Xác định cuộc gọi có gặp voicemail hay không. Giá trị là True nếu tầng mạng (SIP) trả về mã lỗi 430 HOẶC do hệ thống phân tích tự động phát hiện được.
voicemail_detection_source "sip" / "pipeline" / None Nguồn phát hiện ra voicemail. Trong trường hợp cả nhà mạng và hệ thống cùng báo về, "pipeline" sẽ được ưu tiên ghi nhận vì đây là kết quả dò quét chủ động, chính xác từ hệ thống.
voicemail_detection_reason Chuỗi văn bản / None Lý do cụ thể dẫn đến quyết định ngắt máy (ví dụ: tên từ khóa khớp cụ thể, lý do chi tiết từ LLM trả về, hoặc do cổng âm thanh báo hiệu “beep” hoặc “silence”). Nếu chỉ nhận được tín hiệu từ mạng, trường này hiển thị giá trị mặc định là "SIP 430 (voicemail)".
voicemail_classification_text Chuỗi văn bản / None Toàn bộ đoạn hội thoại bằng văn bản đã thu thập được từ phía người nghe trước khi hệ thống ra quyết định ngắt máy. Nếu cuộc gọi bị ngắt bởi cổng âm thanh (bíp/im lặng), trường này sẽ lưu giá trị rỗng ("").

3. Hệ quả hệ thống & Lưu ý thiết kế kịch bản (Consequences for BA)

  • Cổng âm thanh là chốt chặn vòng đầu: Cổng âm thanh (phát hiện bíp hoặc im lặng) chỉ hoạt động như một bộ lọc phản ứng nhanh ở những giây đầu tiên của cuộc gọi. Ngay khi phát hiện có tiếng người nói bình thường vượt ngưỡng âm lượng, cổng âm thanh sẽ tự động đóng lại và nhường toàn bộ quyền quyết định sau đó cho bộ phân loại văn bản (STT + LLM). Nó không duy trì việc kiểm tra liên tục suốt cuộc gọi.
  • Rủi ro chặn nhầm người thật (False-Positive): Nếu một khách hàng là người thật nhấc máy nhưng hoàn toàn giữ im lặng trong vòng 3.0 giây đầu tiên, hệ thống sẽ tự động ngắt máy và ghi nhận là voicemail. BA cần theo dõi sát sao tỷ lệ ngắt máy trong các chiến dịch để phối hợp điều chỉnh tham số thời gian chờ im lặng này (tăng giây để giảm chặn nhầm nhưng sẽ tốn tiền cước cho các cuộc gọi gặp voicemail thật).
  • Đặc thù ngôn ngữ: Toàn bộ tập dữ liệu từ khóa tĩnh và câu lệnh Prompt cho LLM hiện tại đang được tối ưu riêng cho tiếng Việt. Đối với các cuộc gọi sử dụng ngôn ngữ khác (tiếng Anh, v.v.), hệ thống hiện tại chỉ có thể phụ thuộc vào cổng âm thanh (tiếng bíp/im lặng) hoặc khả năng hiểu ngữ cảnh chung của mô hình LLM chứ không bắt được từ khóa cứng.