Amazon Polly là dịch vụ biến văn bản thành lời nói có âm thanh tự nhiên, sử dụng hàng chục giọng nói trong hơn 30 ngôn ngữ. Bạn có thể sử dụng nó cho tất cả các loại ứng dụng, từ hình đại diện hoạt hình biết nói, đến tác nhân ảo sống động như thật trả lời các yêu cầu hỗ trợ khách hàng, đến phát thanh viên tự động đọc to các câu chuyện. Bạn có thể yêu cầu Amazon Polly trả về giọng nói đã tổng hợp dưới dạng luồng trực tiếp hoặc tải xuống dưới dạng tệp âm thanh chuẩn để phát lại sau. Giống như nhiều dịch vụ AWS, bạn chỉ trả tiền cho những gì bạn thực sự sử dụng: với Amazon Polly, bạn trả tiền cho số ký tự trong cụm từ tổng hợp. Chỉ phát một tệp âm thanh đã lưu là miễn phí, cho dù bạn phát tệp đó một lần hay nhiều lần.
Nếu bạn biết chính xác những cụm từ bạn cần trước thời hạn, bạn có thể tối ưu hóa chi tiêu AWS của mình. Chỉ cần lấy mọi cụm từ bạn cần lồng tiếng và gửi tới Amazon Polly khi xây dựng, lưu trữ tệp âm thanh đã tạo cho đến khi bạn sẵn sàng phát lại khi chạy. Các trường hợp sử dụng phổ biến cho phương pháp này bao gồm hệ thống truyền thanh công cộng tại sân bay hoặc bến xe buýt, trò chơi điện tử và máy nhận đơn đặt hàng tự động của nhà hàng phục vụ nhanh. Chỉ cần trả tiền một lần để tổng hợp văn bản của bạn, sau đó phát lại miễn phí các tệp âm thanh kết quả nếu cần.
Trong bài đăng này, chúng tôi chia sẻ một giải pháp không có máy chủ, hướng sự kiện, hoàn toàn tự động mà bạn có thể sử dụng để biến một số lượng lớn các cụm từ văn bản thành lời nói giống như thật một cách không đồng bộ. Bạn có thể kích hoạt công việc bằng cách tải thủ công tệp cụm từ lên tài khoản riêng tư. Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) và sau đó được thông báo qua email hoặc tin nhắn tức thời khi chúng sẵn sàng. Hoặc, làm cho quá trình trở thành một phần của bạn Xây dựng mã AWS hệ thống tích hợp liên tục, bằng cách tự động kích hoạt công việc tổng hợp bất cứ khi nào cụm từ nguồn của bạn thay đổi.
Tổng quan về giải pháp
Giải pháp hoàn toàn không có máy chủ, chủ yếu bao gồm một bộ AWS Lambda chức năng. Các chức năng này theo dõi các mục được tổng hợp. Gửi chúng tới Amazon Polly để tổng hợp và xử lý kết quả khi chúng hoàn thành. Các chức năng sử dụng được chia sẻ Máy phát điện Amazon các bảng quản lý trạng thái công việc theo thời gian. MỘT Chức năng bước AWS quy trình làm việc theo dõi từng bộ đã gửi và thông báo cho các bên quan tâm về việc hoàn thành của nó thông qua một Dịch vụ thông báo đơn giản của Amazon (Amazon SNS) chủ đề.
Giải pháp sử dụng một kiến trúc hướng sự kiện: thay vì một quy trình duy nhất chạy từ đầu đến cuối, quy trình này được phân phối trên các lệnh gọi Lambda, chỉ chạy khi được kích hoạt để làm như vậy từ một số sự kiện.
Sơ đồ sau minh họa kiến trúc giải pháp.
Triển khai và cấu hình giải pháp
Bạn triển khai giải pháp vào tài khoản AWS của mình bằng cách sử dụng Mô hình ứng dụng không có máy chủ AWS (AWS SAM). Bạn có thể thực hiện việc này từ bất kỳ máy tính nào có quyền truy cập dòng lệnh vào tài khoản của mình, nhưng để đơn giản, chúng tôi sử dụng Đám mây AWS.
- Đăng nhập vào bảng điều khiển CloudShell.
- Khi trình bao của bạn đã được khởi chạy, hãy tạo một bản sao cục bộ của mã nguồn giải pháp và chuẩn bị ngăn xếp AWS SAM bằng cách đưa ra các lệnh sau:
- Sử dụng AWS SAM để triển khai giải pháp, với hướng dẫn triển khai. Cung cấp tên ngăn xếp (như
amazon-polly-async-batch
), Khu vực ưa thích của bạn, địa chỉ email cho thông báo và tên của bộ chứa S3 không tồn tại cho các tệp âm thanh được tạo. Chấp nhận các giá trị mặc định khác.
Việc triển khai tất cả các thành phần sẽ chỉ mất vài phút. Nếu cài đặt thành công, bạn sẽ thấy một thông báo như sau:
- Kiểm tra email của bạn để tìm tin nhắn từ Amazon SNS và xác nhận đăng ký.
Cách giải pháp hoạt động
Trong phần này, chúng tôi mô tả chi tiết cách sử dụng giải pháp để tổng hợp văn bản của bạn và cách thức hoạt động của từng thành phần chính.
Bộ hồ sơ: Quy định văn bản cần tổng hợp
Bạn xác định tập hợp các cụm từ văn bản mà bạn muốn Amazon Polly lồng tiếng trong một tệp có tên là đặt tập tin. Đây là một Tệp YAML bao gồm các chi tiết của tập hợp, tập hợp các giá trị mặc định và danh sách các mục cần tổng hợp:
- Đặt chi tiết – Trong khổ thơ của tập hợp, bạn đặt tên cho tập hợp để phân biệt tập hợp đó với các tập hợp khác và tiền tố đầu ra tùy chọn để cho giải pháp biết vị trí trong bộ chứa S3 mà bạn muốn lưu trữ các tệp âm thanh.
- Mặc định – Trong phần giá trị mặc định tùy chọn, bạn có thể cung cấp các giá trị cụ thể cho thông số áp dụng trừ khi bị các mục cụ thể ghi đè. Các thuộc tính sau được hỗ trợ, như được ghi lại trong API Amazon Polly:
- động cơ - Hoặc
standard
orneural
; mặc định làneural
- mật ngữ – Bất kỳ ngôn ngữ nào trong số hơn 20 ngôn ngữ được hỗ trợ; mặc định là
en-US
- định dạng đầu ra –
mp3
,ogg_vorbis
, hoặc làpcm
; mặc định làmp3
- dạng văn bản - Hoặc
text
orSSML
; mặc định làtext
- id giọng nói – Bất kỳ giọng nói nào được hỗ trợ; mặc định là
Matthew
- động cơ - Hoặc
- Mặt hàng – Bộ sưu tập các mục chỉ đơn giản là một danh sách các chuỗi văn bản để tổng hợp. Amazon Polly chuyển đổi văn bản của từng mục thành giọng nói, sử dụng giá trị mặc định đã đặt cộng với bất kỳ giá trị thay thế nào được cung cấp trong mục và đặt các tệp kết quả vào bộ chứa S3 trong thư mục tiền tố đầu ra của tập hợp. Nếu bạn chỉ định một tệp đầu ra, tệp sẽ được đặt tên như đã chỉ định; mặt khác, giải pháp sẽ gán tên cho tệp dựa trên nội dung và thứ tự của nó trong bộ sưu tập.
Ví dụ: nếu bạn muốn tổng hợp sáu dòng từ Màn 1 Cảnh 1 của Romeo và Juliet, bạn có thể sử dụng tệp YAML giống như mã sau:
Bộ này chỉ định rằng Amazon Polly sẽ tổng hợp sáu dòng từ vở kịch. Để đại diện cho các nhân vật Abraham, Sampson và Gregory, chúng tôi sử dụng giọng nói của Joey, Matthew và Brian. Với Amazon Polly, bạn có thể chỉ định âm lượng và âm điệu, chẳng hạn như khi Abraham nhấn mạnh từ “chúng tôi” và đối với phần phụ của Sampson và Gregory, những từ này được thì thầm; vì Hiệu ứng SSML như thế này, chúng tôi chỉ đơn giản xác định rằng text-type
is ssml
, và trang trí lời nói một cách thích hợp.
Vì không có mục nào chỉ định tệp đầu ra nên tên tệp được tạo tự động cho bạn. Trong ví dụ này, các tệp MP3 được tạo là act-1-scene-1/item-000000-do-you-bite-your-thumb-at-us-sir.mp3
thông qua act-1-scene-1/item-000005-no-sir-i-do-not-bite-my-thumb-at-you-sir.mp3
.
Tập hợp này (và các tập tin khác) nằm trong docs/samples
thư mục của mã. Trong CloudShell, bạn có thể gửi tệp này tới Amazon Polly chỉ bằng cách tải tệp đó lên bộ chứa S3 mà bạn đã chỉ định trước đó:
Amazon Polly tổng hợp sáu dòng từ tệp. Khi tất cả các dòng đã được tổng hợp, bạn sẽ nhận được thông báo qua email:
YAML có thể được tạo trong bất kỳ trình soạn thảo nào, con người dễ đọc và thân thiện để kiểm tra các hệ thống kiểm soát nguồn như Cam kết mã AWS. Tuy nhiên, tệp đã đặt phải là tệp văn bản thuần túy, phải có phần mở rộng tệp .yml và phải là YAML hợp lệ.
Chức năng Set Processor
Khi một tập tin với một .yml
phần mở rộng được tải lên bộ chứa S3, thì chức năng Set Processor Lambda sẽ bắt đầu quá trình này. Nó phân tích cú pháp tệp đã đặt và tạo một bản ghi tương ứng cho nó trong DynamoDB. Bản ghi tập hợp này được sử dụng để theo dõi xem có bao nhiêu mục trong tập hợp, bao nhiêu mục chưa được hoàn thành và khi quá trình xử lý tập hợp bắt đầu.
Sau đó, đối với mỗi mục trong bộ sưu tập, chức năng Đặt bộ xử lý đăng một thông báo—một loại lệnh sản xuất—đến bộ xử lý của giải pháp. Dịch vụ xếp hàng đơn giản trên Amazon (Amazon SQS) hàng đợi. Lệnh sản xuất này là một tài liệu JSON bao gồm mọi thứ mà Amazon Polly cần để tổng hợp văn bản theo hướng dẫn trong tệp bộ đã tải lên.
Mỗi thông báo hoàn toàn độc lập với các thông báo khác, do đó, công việc tổng hợp chúng có thể được thực hiện đồng thời bởi Amazon Polly và việc chúng được hoàn thành theo thứ tự nào không quan trọng. Tên của tập hợp cũng là một phần của lệnh sản xuất, do đó, giải pháp có thể xử lý nhiều tập hợp (hoặc thậm chí nhiều phiên bản của cùng một tập hợp) cùng một lúc.
Chức năng Bộ xử lý vật phẩm
Hàm Lambda của Bộ xử lý mục tiêu thụ các tin nhắn từ hàng đợi SQS và đăng hoạt động lên Amazon Polly.
Mỗi thông báo đại diện cho một tệp âm thanh duy nhất để Amazon Polly tạo. Hàm gọi phương thức API Bắt đầuBài phát biểuTổng hợpTác vụ, sử dụng các giá trị trong thứ tự công việc làm đối số cho các tham số của phương thức. Đây là lệnh gọi API không đồng bộ, vì vậy chúng tôi không đảm bảo thời điểm Amazon Polly thực sự tạo tệp âm thanh cho chúng tôi; nhưng khi quá trình này hoàn tất, Amazon Polly sẽ đăng một thông báo SNS để chức năng Lambda tiếp theo, Bộ xử lý phản hồi, xử lý.
Chức năng Bộ xử lý vật phẩm cũng thêm một bản ghi vào bảng vật phẩm trong DynamoDB, vì vậy, giải pháp này có thể theo dõi những vật phẩm nào đã được hoàn thành thành công và vật phẩm nào chưa được hoàn thành.
Giống như nhiều API AWS, có giới hạn số lượng lệnh gọi API bạn có thể thực hiện với Amazon Polly mỗi giây. Chức năng Bộ xử lý vật phẩm được điều chỉnh để duy trì trong giới hạn hợp lý và nó lùi lại theo cấp số nhân và thử lại khi cần để đăng tác phẩm nhưng vẫn nằm trong giới hạn dịch vụ tài khoản của bạn.
Chức năng Bộ xử lý phản hồi
Khi Amazon Polly đã hoàn thành công việc đối với một yêu cầu cụ thể, nó sẽ đăng một thông báo lên chủ đề phản hồi SNS. Điều này ngay lập tức được chọn bởi hàm Lambda cuối cùng trong chuỗi, Bộ xử lý phản hồi. Hàm này chịu trách nhiệm cập nhật mục và thiết lập bản ghi trong DynamoDB, đồng thời chịu trách nhiệm đổi tên tệp âm thanh trong Amazon S3 thành tên tệp được yêu cầu.
Nếu Amazon Polly báo cáo thành công trong việc tổng hợp tệp âm thanh, thì chức năng Bộ xử lý phản hồi chỉ cần di chuyển tệp đến vị trí cuối cùng của nó. Nó cập nhật bản ghi mục taskStatus
đến success
và tăng success
truy cập trong kỷ lục thiết lập. Nếu Amazon Polly báo cáo lỗi, chức năng này sẽ cập nhật bản ghi mục với lý do lỗi và tăng failed
truy cập trong kỷ lục thiết lập.
Dòng công việc Set Waiter
Để xem xét, mỗi hàm Lambda này chỉ chạy khi được kích hoạt bởi một sự kiện:
- Set Processor được kích hoạt khi tệp set được tải lên bộ chứa S3
- Bộ xử lý vật phẩm được kích hoạt khi lệnh sản xuất xuất hiện trong hàng đợi SQS
- Bộ xử lý phản hồi được kích hoạt khi Amazon Polly xuất bản một thông báo tới chủ đề SNS
Các chức năng này có thể chạy đồng thời, xử lý nhiều mục từ nhiều bộ cùng một lúc. Nếu không có quy trình phối hợp, làm sao chúng tôi biết khi nào một bộ cụ thể hoàn tất? Làm thế nào để chúng tôi biết nếu đã xảy ra sự cố?
Set Waiter là một quy trình làm việc của Step Functions chịu trách nhiệm theo dõi một nhóm cụ thể để quyết định thời điểm hoàn thành hoặc để thông báo nếu sự cố kỹ thuật với giải pháp khiến nhóm bị bỏ dở.
Trong trình kiểm tra Biểu đồ Step Functions, quy trình công việc Set Waiter đang xử lý trông giống như sau.
Một phiên bản của Set Waiter được khởi động bởi chức năng Set Processor cho mỗi set đã gửi, hàm này chuyển một tên duy nhất xác định set đó. Người phục vụ tải bản ghi đã thiết lập từ bảng DynamoDB trong giai đoạn tải và kiểm tra xem bản ghi đã hoàn tất trong giai đoạn kiểm tra hay chưa. Nếu Amazon Polly vẫn có các tác vụ cần xử lý, chức năng này sẽ đợi vài giây trong giai đoạn chờ trước khi bắt đầu lại.
Nếu mọi tác vụ trong tập hợp đã được xử lý bởi Amazon Polly, thì Người phục vụ tập hợp sẽ chuyển sang giai đoạn thông báo, giai đoạn này sẽ xuất bản một thông báo tới chủ đề SNS hoàn thành. Nếu gần đây không có thay đổi nào được thực hiện đối với một tập hợp đang xử lý, Người phục vụ tập hợp giả định rằng có điều gì đó không ổn và đăng một thông báo bị bỏ rơi vào chủ đề.
Làm sạch
Bạn có thể để giải pháp trong tài khoản của mình bao lâu tùy thích. Khi không sử dụng, bạn chỉ trả tiền cho việc lưu trữ tệp âm thanh trong Amazon S3 và cho dữ liệu trong bảng DynamoDB. Khi bạn có văn bản cần tổng hợp, chỉ cần tải một tập hợp tệp lên bộ chứa S3 và giải pháp sẽ lấy văn bản đó từ đó. Bạn trả tiền cho các lệnh gọi hàm Lambda và các ký tự thực sự được xử lý bởi Amazon Polly. Tổng hợp toàn bộ 1.1 triệu ký tự trong Moby Dick, ví dụ: chi phí dưới 5 đô la cho giọng nói tiêu chuẩn và dưới 20 đô la cho giọng nói thần kinh chất lượng cao hơn.
Nếu bạn quyết định không sử dụng lại giải pháp, bạn có thể xóa tất cả tài nguyên của giải pháp đó bằng cách sử dụng Hình thành đám mây AWS:
Kết luận
Trong bài đăng này, chúng tôi đã mô tả một giải pháp hướng sự kiện, không có máy chủ để gửi một lượng lớn cụm từ văn bản để Amazon Polly xử lý không đồng bộ. Với phương pháp này, bạn có thể giữ chi phí thấp bằng cách chỉ trả một lần cho quá trình tổng hợp, bất kể bạn phát các tệp âm thanh được tạo bao nhiêu lần.
Bạn có thể triển khai giải pháp cho tài khoản của mình trong vài phút dưới dạng ứng dụng AWS SAM. Bạn chỉ định văn bản sẽ được chuyển đổi trong tệp YAML được gọi là tệp bộ. Khi một tập hợp tệp được tải lên bộ chứa S3 của giải pháp (do con người thực hiện theo cách thủ công hoặc tự động bởi một quy trình dẫn mã), một loạt hàm Lambda—Bộ xử lý tập hợp, Bộ xử lý vật phẩm và Bộ xử lý kết quả—làm việc cùng nhau để gửi tác vụ tới Amazon Polly và thu thập các tệp âm thanh cho bạn. Khi tất cả công việc đã được hoàn thành, một thông báo sẽ được đăng lên một chủ đề SNS.
Giải pháp được phát triển như một dự án mã nguồn mở trên GitHub. Chúng tôi hoan nghênh các yêu cầu tính năng, báo cáo lỗi hoặc đóng góp của bạn. Hãy tự mình thử điều này và cho chúng tôi biết suy nghĩ của bạn trong các nhận xét. Để tìm hiểu thêm về cách Amazon Polly có thể giúp bạn, truy cập trang web của chúng tôi!
Về các tác giả
Jon Peterson là Kiến trúc sư giải pháp cấp cao của AWS. Anh ấy sống bên ngoài Chicago với vợ và hai con.
Prateek Jain là Kiến trúc sư giải pháp của AWS, có trụ sở tại Atlanta Georgia. Anh ấy đam mê về Đám mây và giúp khách hàng xây dựng các giải pháp tuyệt vời trên AWS.
- '
- 100
- 7
- truy cập
- Tài khoản
- đại lý
- Sân bay
- Tất cả
- đàn bà gan dạ
- Amazon Polly
- api
- API
- Các Ứng Dụng
- các ứng dụng
- kiến trúc
- đối số
- Atlanta
- âm thanh
- Tự động
- AWS
- Bug
- xây dựng
- xe buýt
- cuộc gọi
- trường hợp
- thay đổi
- kiểm tra
- Séc
- Chicago
- Trẻ em
- đám mây
- mã
- Bình luận
- Chung
- thành phần
- nội dung
- Chi phí
- Hỗ trợ khách hàng
- khách hàng
- dữ liệu
- chi tiết
- biên tập viên
- Môi trường
- Sự kiện
- Không
- Đặc tính
- Miễn phí
- chức năng
- Trò chơi
- Georgia
- đi
- GitHub
- Độ đáng tin của
- Hướng dẫn
- HTTPS
- Con người
- IAM
- Bao gồm
- hội nhập
- IT
- việc làm
- Ngôn ngữ
- lớn
- Luật
- LEARN
- Dòng
- Danh sách
- tải
- địa phương
- địa điểm thư viện nào
- dài
- chính
- triệu
- di chuyển
- tên
- Thần kinh
- thông báo
- số
- mở
- mã nguồn mở
- gọi món
- đơn đặt hàng
- Nền tảng khác
- Khác
- Trả
- cụm từ
- bài viết
- riêng
- dự án
- công khai
- Reading
- hồ sơ
- Báo cáo
- Thông tin
- phản ứng
- nhà hàng
- Kết quả
- xem xét
- chạy
- chạy
- Loạt Sách
- Không có máy chủ
- DỊCH VỤ
- định
- thiết lập
- Chia sẻ
- chia sẻ
- Shell
- Đơn giản
- Six
- So
- Giải pháp
- tiêu
- bắt đầu
- Tiểu bang
- ở lại
- là gắn
- Những câu chuyện
- trình
- đăng ký
- thành công
- thành công
- hỗ trợ
- Hỗ trợ
- hệ thống
- hệ thống
- nói
- Kỹ thuật
- Những giọng nói
- thời gian
- theo dõi
- Cập nhật
- us
- Video
- trò chơi video
- ảo
- Giọng nói
- VOICE
- khối lượng
- chờ đợi
- ở trong
- Công việc
- quy trình làm việc
- công trinh