0
0
Lập trình
TT

Bedrock Polly: Xây dựng Chatbot Giọng Nói Tương Tác

Đăng vào 5 tháng trước

• 5 phút đọc

Bedrock Polly: Xây dựng Chatbot Giọng Nói Tương Tác

Tại Sự kiện Tokyo CommunityBuilders Night #2 / Hợp tác với Jr.Champions, tôi đã trình bày cách thực hiện một chatbot giọng nói tương tác bằng cách kết hợp Amazon BedrockAmazon Polly.

Liên kết sự kiện

Bài viết này tóm tắt phiên họp và hướng dẫn qua kiến trúc, mã thực thi và mẹo thực tiễn.


TL;DR

  • Sử dụng Bedrock để tạo kịch bản đối thoại, sau đó chuyển đổi chúng thành giọng nói nam/nữ xen kẽ với Polly.
  • Kiểm soát tốc độ nói và khoảng dừng với SSML, tạo trải nghiệm tự nhiên giữa hai bên.
  • Đề cập đến các tính năng của Polly, giá cả và mẹo sẵn sàng sản xuất, với mã mẫu kèm theo.

Bài viết bắt đầu bằng việc giải thích bối cảnh, sau đó đi vào kiến trúc → ví dụ thực thi để bạn có thể nhanh chóng nắm bắt bức tranh tổng thể.


Bối Cảnh

Tại Sao “Chatbot Giọng Nói Tương Tác”?

Chúng ta đều đã từng trải qua:

  • Bạn bắt đầu đọc một bài viết dài nhưng cảm thấy mệt mỏi và rời khỏi trang.
  • Bạn muốn tiếp thu thông tin trong khi di chuyển, nhưng nhìn vào màn hình không thực tế.

Sau COVID, với việc đi làm và du lịch trở lại trong thói quen của chúng ta, nhu cầu về “học tập không cần tay trong khi làm điều gì khác” đã tăng lên đáng kể.

Mặc dù nhiều công cụ GenAI đã cung cấp các tính năng chuyển văn bản thành giọng nói, nhưng giọng nói đơn điệu, cơ học rất nhanh chóng trở nên nhàm chán. Người nghe mất tập trung hoặc thậm chí ngủ gật.

Đó là lý do tại sao chúng tôi đã khám phá kể chuyện theo kiểu đối thoại:

  • Một người nói cung cấp thông tin chi tiết.
  • Một người khác đưa ra tóm tắt, câu hỏi hoặc phản hồi.

Điều này tạo ra nhịp điệu và khiến nó cảm thấy như một chương trình phát thanh—dễ dàng lắng nghe đến cuối.

  • Hiệu ứng cá nhân hóa: giọng điệu đối thoại cải thiện khả năng hiểu và ghi nhớ.
  • Hiệu ứng số lượng giọng nói: thay đổi giọng nói giúp làm mới sự chú ý và tăng khả năng thuyết phục.

Tổng Quan Về Amazon Polly

Amazon Polly là một dịch vụ Chuyển Văn Bản Thành Giọng Nói (TTS) dựa trên đám mây, biến văn bản thành giọng nói sống động.

Với giọng nói Neural, nó tạo ra âm thanh tự nhiên, chất lượng phát thanh viên. Kết hợp với SSML, bạn có thể điều chỉnh ngữ điệu, tốc độ và khoảng dừng để gần gũi hơn với các cuộc hội thoại thực tế.

Các Tính Năng Chính

  • 29 ngôn ngữ, hơn 60 giọng nói (bao gồm cả tiếng Nhật)
  • Vùng Tokyo (ap-northeast-1) hỗ trợ giọng nói StandardNeural
  • Tổng hợp độ trễ thấp

Một số giọng nói phổ biến tiếng Nhật:

Biến thể ngôn ngữ ID giọng nói Giới tính Standard Neural
Nhật Bản ja-JP Mizuki Nữ
Nhật Bản ja-JP Takumi Nam
Nhật Bản ja-JP Kazuha Nữ
Nhật Bản ja-JP Tomoko Nữ

Đối với một chatbot đối thoại, sự kết hợp tự nhiên nhất là Takumi (Nam, Neural) + Kazuha (Nữ, Neural).


Chi Phí Tại Khu Vực Tokyo

Giá cả được tính theo ký tự được tổng hợp.

Loại Giọng Giá trên 1 triệu ký tự Khoảng JPY
Standard \$4.00 ~¥600
Neural \$16.00 ~¥2,400

Ví dụ: cấu hình đối thoại với 500 ký tự/session × 10/ngày × 30 ngày = 150k ký tự/tháng

  • Chỉ Standard → ~¥90/tháng
  • Chỉ Neural → ~¥360/tháng
  • Hỗn hợp (Standard+Neural) → ~¥225/tháng

👉 Rất tiết kiệm cho việc sử dụng sản xuất.


Mẹo Sản Xuất

  • Sử dụng thẻ SSML <break> sau dấu câu để có nhịp điệu tự nhiên
  • Giảm tốc độ nói (rate="slow") cho các thuật ngữ kỹ thuật hoặc từ ngữ chuyên ngành
  • Triển khai fallbacks: nếu tổng hợp Neural thất bại, quay lại giọng Standard (ví dụ: Kazuha → Mizuki)

Kiến Trúc

  1. Người dùng → CloudFront → API Gateway + Lambda
  2. Lambda → Bedrock (tạo kịch bản đối thoại)
  3. Lambda định dạng văn bản thành SSML, phân chia theo vai nam/nữ
  4. Lambda → Polly (Takumi / Kazuha, giọng Neural) → đầu ra âm thanh
  5. API Gateway + Lambda → CloudFront → Người dùng
  • Bảo vệ S3 với OAC, phục vụ chỉ thông qua CloudFront
  • Thêm kiểm tra tiêu đề tùy chỉnh giữa CloudFront → API Gateway để chặn các cuộc gọi API trực tiếp.

Ví Dụ Triển Khai

Cấu trúc dự án:

Copy
bedrock-polly-chatbot/
├── bin/bedrock-polly-chatbot.ts    # Điểm vào CDK
├── cdk-stack.ts                    # Định nghĩa hạ tầng
├── lambda/app.py                   # Bộ xử lý Lambda
├── lambda/requirements.txt         # Các phụ thuộc Python
└── index.html                      # Giao diện đơn giản

Mã đầy đủ: https://qiita.com/srkw7/items/5f197986bebee4c7cadd

  • CDK triển khai CloudFront, API Gateway, Lambda và lưu trữ trang S3.
  • Lambda gọi Bedrock + Polly với xử lý SSML.
  • index.html là một giao diện tối thiểu với các mẫu câu ví dụ + đoạn SSML.

Ví Dụ Sử Dụng

  • Giao diện đơn giản tải tại điểm cuối CloudFront.
  • Đầu vào: “Hãy cho tôi biết về giá cả Amazon Polly ở Tokyo”
  • Đầu ra: giọng nói nam/nữ xen kẽ với tùy chọn phát/download.

👉 Người dùng có thể nghe trong khi di chuyển hoặc làm nhiều việc cùng lúc.


Tóm Tắt

Những Điểm Chính

  • Bedrock → tạo ra kịch bản đối thoại
  • Polly (giọng Neural) → biến kịch bản thành giọng nói tự nhiên
  • SSML → kiểm soát tốc độ và độ rõ
  • Hạ tầng → CloudFront + API Gateway + Lambda, bảo mật với OAI/OAC và tiêu đề
  • Chi phí → rất hợp lý (~¥360/tháng cho Neural, ~¥90/tháng cho Standard)

Danh Sách Kiểm Tra Vận Hành

  • BEDROCK_MODEL_ID & ORIGIN_TOKEN được thiết lập như biến môi trường
  • Cùng một vùng cho Bedrock & Polly
  • Bảo mật S3 (OAI/OAC) + bảo vệ API với tiêu đề tùy chỉnh
  • Cho phép POST/OPTIONS trong CORS
  • Theo dõi chi phí Polly (theo ký tự), Bedrock (theo token), băng thông CloudFront

Mở Rộng Tương Lai

  • Tích hợp RAG (KNOWLEDGE_BASE_ID) cho các cuộc đối thoại theo miền cụ thể
  • Lưu trữ âm thanh trong S3 để giảm chi phí/độ trễ
  • Thêm quy tắc SSML dựa trên từ điển cho các thuật ngữ miền
  • Chuyển từ OAI → OAC, thêm WAF để bảo vệ bot

Tại sao không thêm một chút tính cách cho chatbot của bạn?
Thêm giọng nói tương tác với Bedrock × Polly, và làm cho trải nghiệm người dùng của bạn trở nên hấp dẫn hơn.


Tài Liệu Tham Khảo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào