Cho phép người khiếm thị nghe tài liệu bằng Amazon Textract và Amazon Polly PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Cho phép người khiếm thị nghe tài liệu bằng Amazon Textract và Amazon Polly

Tại hội nghị AWS re: Invent năm 2021 ở Las Vegas, chúng tôi đã giới thiệu Đọc cho tôi tại AWS Builders Fair — một trang web giúp người khiếm thị có thể nghe được các tài liệu.

Để có chất lượng tốt hơn, hãy xem video tại đây.

Công nghệ thích ứng và các tính năng trợ năng thường đắt tiền, nếu chúng hoàn toàn có sẵn. Sách nói giúp người khiếm thị đọc. Mô tả âm thanh làm cho phim có thể truy cập được. Nhưng bạn sẽ làm gì khi nội dung chưa được số hóa?

Bài đăng này tập trung vào các dịch vụ AWS AI Văn bản AmazonAmazon Polly, giúp trao quyền cho những người bị suy giảm thị lực. Read For Me do Jack Marchetti, người khiếm thị, đồng phát triển.

Tổng quan về giải pháp

Thông qua kiến ​​trúc hướng sự kiện, không máy chủ và sự kết hợp của nhiều dịch vụ AI, chúng tôi có thể tạo các tệp âm thanh có âm thanh tự nhiên bằng nhiều ngôn ngữ từ hình ảnh của tài liệu hoặc bất kỳ hình ảnh nào có văn bản. Ví dụ, một lá thư từ IRS, một tấm thẻ kỳ nghỉ từ gia đình, hoặc thậm chí là tiêu đề mở đầu cho một bộ phim.

Sau đây Kiến trúc tham khảo, xuất bản trong Trung tâm kiến ​​trúc AWS hiển thị quy trình làm việc của người dùng chụp ảnh bằng điện thoại của họ và phát MP3 của nội dung được tìm thấy trong tài liệu đó.

Cho phép người khiếm thị nghe tài liệu bằng Amazon Textract và Amazon Polly PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Quy trình làm việc bao gồm các bước sau:

  1. Nội dung tĩnh (HTML, CSS, JavaScript) được lưu trữ trên Amplify AWS.
  2. Quyền truy cập tạm thời được cấp cho người dùng ẩn danh vào các dịch vụ phụ trợ thông qua một Nhận thức về Amazon hồ sơ nhận dạng.
  3. Các tệp hình ảnh được lưu trữ trong Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3).
  4. Người dùng thực hiện yêu cầu ĐĂNG thông qua Cổng API Amazon đến dịch vụ âm thanh, dịch vụ này ủy quyền cho một Chức năng bước AWS quy trình làm việc.
  5. Quy trình làm việc của Chức năng Bước bao gồm các bước sau:
    1. Văn bản Amazon trích xuất văn bản từ hình ảnh.
    2. Amazon hiểu phát hiện ngôn ngữ của văn bản.
    3. Nếu ngôn ngữ đích khác với ngôn ngữ được phát hiện, Amazon Dịch dịch sang ngôn ngữ đích.
    4. Amazon Polly tạo tệp âm thanh làm đầu ra bằng văn bản.
  6. Quy trình làm việc của AWS Step Functions tạo một tệp âm thanh làm đầu ra và lưu trữ nó trong Amazon S3 ở định dạng MP3.
  7. Một URL được ký trước với vị trí của tệp âm thanh được lưu trữ trong Amazon S3 được gửi trở lại trình duyệt của người dùng thông qua API Gateway. Thiết bị di động của người dùng phát tệp âm thanh bằng URL được ký trước.

Trong các phần tiếp theo, chúng tôi thảo luận lý do tại sao chúng tôi chọn các dịch vụ, mẫu kiến ​​trúc và các tính năng dịch vụ cụ thể cho giải pháp này.

Dịch vụ AI của AWS

Một số dịch vụ AI được kết nối với nhau để cung cấp năng lượng cho Đọc cho tôi:

  • Amazon Textract xác định văn bản trong ảnh đã tải lên.
  • Amazon toàn diện xác định ngôn ngữ.
  • Nếu người dùng chọn ngôn ngữ nói khác với ngôn ngữ trong hình, chúng tôi sẽ dịch ngôn ngữ đó bằng Amazon Translate.
  • Amazon Polly tạo tệp MP3. Chúng tôi tận dụng công cụ thần kinh Amazon Polly để tạo ra bản ghi âm tự nhiên hơn, sống động như thật.

Một trong những lợi ích chính của việc sử dụng các dịch vụ AI này là dễ dàng áp dụng với ít hoặc không yêu cầu kinh nghiệm học máy cốt lõi. Các dịch vụ hiển thị các API mà khách hàng có thể gọi bằng cách sử dụng SDK được cung cấp bằng nhiều ngôn ngữ lập trình, chẳng hạn như Python và Java.

Với Đọc cho tôi, chúng tôi đã viết cơ bản AWS Lambda các hàm trong Python.

AWS SDK cho Python (Boto3)

Sản phẩm AWS SDK cho Python (Boto3) làm cho việc tương tác với các dịch vụ AWS trở nên đơn giản. Ví dụ: các dòng sau của mã Python trả về văn bản được tìm thấy trong hình ảnh hoặc tài liệu bạn cung cấp:

import boto3
client = boto3.client('textract')
response = client.detect_document_text(
Document={ 'S3Object': { 'Bucket': 'bucket-name', 'Name': 's3-key'
}
})
#do something with the response

Tất cả mã Python được chạy trong các hàm Lambda riêng lẻ. Không có máy chủ để cung cấp và không có cơ sở hạ tầng để duy trì.

Mô hình kiến ​​trúc

Trong phần này, chúng tôi thảo luận về các mẫu kiến ​​trúc khác nhau được sử dụng trong giải pháp.

Không có máy chủ

Chúng tôi triển khai kiến ​​trúc không máy chủ vì hai lý do chính: tốc độ xây dựng và chi phí. Không có phần cứng cơ bản để duy trì hoặc cơ sở hạ tầng để triển khai, chúng tôi tập trung hoàn toàn vào mã logic nghiệp vụ và không có gì khác. Điều này cho phép chúng tôi có được một nguyên mẫu hoạt động và chạy trong vài ngày. Nếu người dùng không chủ động tải lên hình ảnh và nghe các bản ghi âm, thì không có gì đang chạy và do đó không có gì phát sinh chi phí ngoài dung lượng lưu trữ. Quy tắc quản lý vòng đời S3 sẽ xóa các hình ảnh và tệp MP3 đã tải lên sau 1 ngày, do đó chi phí lưu trữ thấp.

Quy trình làm việc đồng bộ

Khi bạn đang xây dựng quy trình làm việc không có máy chủ, điều quan trọng là phải hiểu khi nào một lệnh gọi đồng bộ có ý nghĩa hơn từ kiến ​​trúc và trải nghiệm người dùng hơn là một quy trình không đồng bộ. Với Read For Me, ban đầu chúng tôi đi theo hướng không đồng bộ và lên kế hoạch sử dụng WebSockets để giao tiếp hai chiều với giao diện người dùng. Quy trình công việc của chúng tôi sẽ bao gồm một bước để tìm ID kết nối được liên kết với quy trình công việc Chức năng bước và sau khi hoàn thành, hãy thông báo cho giao diện người dùng. Để biết thêm thông tin về quy trình này, hãy tham khảo Từ cuộc thăm dò ý kiến ​​sang lần đẩy: Chuyển đổi các API bằng cách sử dụng các API Amazon API Gateway REST và WebSockets.

Cuối cùng, chúng tôi đã chọn không làm điều này và sử dụng các hàm bước nhanh đồng bộ. Người dùng hiểu rằng việc xử lý một hình ảnh sẽ không nhanh chóng, nhưng cũng biết rằng nó sẽ không mất 30 giây hoặc một phút. Chúng tôi đang ở trong một không gian mà một vài giây có thể làm hài lòng người dùng cuối và không cần đến lợi ích của WebSockets. Điều này đã đơn giản hóa quy trình làm việc tổng thể.

Quy trình làm việc của Chức năng Bước nhanh

Khả năng chia mã của bạn thành các chức năng nhỏ hơn, riêng biệt cho phép kiểm soát chi tiết, bảo trì dễ dàng hơn và khả năng mở rộng quy mô chính xác hơn. Ví dụ: nếu chúng tôi xác định rằng hàm Lambda kích hoạt Amazon Polly để tạo tệp âm thanh đang chạy chậm hơn hàm xác định ngôn ngữ, chúng tôi có thể chia tỷ lệ theo chiều dọc hàm đó, bổ sung thêm bộ nhớ mà không cần phải làm như vậy cho các hàm khác. Tương tự, bạn giới hạn bán kính vụ nổ của những gì hàm Lambda của bạn có thể làm hoặc truy cập khi bạn giới hạn phạm vi và phạm vi tiếp cận của nó.

Một trong những lợi ích của việc sắp xếp quy trình làm việc của bạn với Step Functions là khả năng giới thiệu logic luồng quyết định mà không cần phải viết bất kỳ mã nào.

Quy trình làm việc Chức năng Bước của chúng tôi không phức tạp. Nó tuyến tính cho đến bước dịch. Nếu chúng tôi không cần gọi một hàm Lambda dịch, điều đó sẽ ít tốn kém hơn cho chúng tôi và mang lại trải nghiệm nhanh hơn cho người dùng. Chúng ta có thể sử dụng trình thiết kế trực quan trên bảng điều khiển Step Functions để tìm khóa cụ thể trong tải trọng đầu vào và nếu có, hãy gọi một hàm này thay cho hàm kia bằng JSONPath. Ví dụ: tải trọng của chúng tôi bao gồm một khóa được gọi là dịch:

{ 
extracted_text: "hello world",
target_language: "es",
source_language: "en",
translate: true
}

Trong trình thiết kế trực quan Step Functions, chúng tôi tìm thấy khóa dịch và thiết lập các quy tắc để khớp.

Cho phép người khiếm thị nghe tài liệu bằng Amazon Textract và Amazon Polly PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Kiến trúc không đầu

Khuếch đại lưu trữ mã giao diện người dùng. Giao diện người dùng được viết bằng React và mã nguồn được kiểm tra Cam kết mã AWS. Amplify giải quyết một số vấn đề cho người dùng đang cố gắng triển khai và quản lý các trang web tĩnh. Nếu bạn đang thực hiện việc này theo cách thủ công (sử dụng bộ chứa S3 được thiết lập để lưu trữ trang web tĩnh và giao diện người dùng với Amazon CloudFront), bạn phải tự hết hạn bộ nhớ cache mỗi khi bạn triển khai. Bạn cũng sẽ phải viết đường dẫn CI / CD của riêng mình. Amplify giải quyết việc này cho bạn.

Điều này cho phép tạo ra một kiến ​​trúc không có đầu, trong đó mã front-end được tách ra khỏi phần phụ trợ và mỗi lớp có thể được quản lý và mở rộng quy mô độc lập với lớp kia.

Phân tích ID

Trong phần trước, chúng ta đã thảo luận về các mẫu kiến ​​trúc để xử lý ảnh đã tải lên và tạo tệp MP3 từ nó. Có một tài liệu được đọc lại cho bạn là một bước đầu tiên tuyệt vời, nhưng điều gì sẽ xảy ra nếu bạn chỉ muốn biết một cái gì đó cụ thể mà không có toàn bộ nội dung được đọc lại cho bạn? Ví dụ: bạn cần điền vào một biểu mẫu trực tuyến và cung cấp số chứng minh nhân dân hoặc hộ chiếu của tiểu bang của bạn, hoặc có thể là ngày hết hạn của nó. Sau đó, bạn phải chụp ảnh ID của mình và trong khi nó đọc lại cho bạn, hãy đợi phần cụ thể đó. Ngoài ra, bạn có thể sử dụng ID phân tích.

Phân tích ID là một tính năng của Amazon Textract cho phép bạn truy vấn tài liệu. Read For Me chứa menu thả xuống nơi bạn có thể hỏi cụ thể ngày hết hạn, ngày phát hành hoặc số tài liệu. Bạn có thể sử dụng cùng một quy trình làm việc để tạo tệp MP3 cung cấp câu trả lời cho câu hỏi cụ thể của bạn.

Bạn có thể demo tính năng Analyze ID tại readforme.io/analyze.

Các tính năng bổ sung của Polly

  • Read For Me cung cấp nhiều giọng nói thần kinh sử dụng các ngôn ngữ và phương ngữ khác nhau. Lưu ý rằng có một số khác tiếng nói bạn có thể chọn, mà chúng tôi đã không triển khai. Khi có một giọng nói mới, tất cả những gì cần thiết để tận dụng nó là tất cả những gì cần thiết để cập nhật mã front-end và một hàm lambda.
  • Dịch vụ Polly cũng cung cấp các tùy chọn khác mà chúng tôi chưa đưa vào Read For Me. Chúng bao gồm điều chỉnh tốc độ của giọng nóidấu giọng nói.

Kết luận

Trong bài đăng này, chúng tôi đã thảo luận về cách sử dụng nhiều dịch vụ AWS, bao gồm cả AI và serverless, để hỗ trợ người khiếm thị. Bạn có thể tìm hiểu thêm về dự án Read For Me và sử dụng nó bằng cách truy cập readforme.io. Bạn cũng có thể tìm thấy các ví dụ về Textract của Amazon trên Repo GitHub. Để tìm hiểu thêm về phân tích ID, hãy xem Thông báo hỗ trợ trích xuất dữ liệu từ tài liệu nhận dạng bằng Amazon Textract.

Mã nguồn của dự án này sẽ sớm có nguồn mở và được thêm vào GitHub công khai của AWS.


Về các tác giả

Cho phép người khiếm thị nghe tài liệu bằng Amazon Textract và Amazon Polly PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Jack Marchetti là kiến ​​trúc sư Giải pháp cấp cao tại AWS. Với nền tảng về kỹ thuật phần mềm, Jack chủ yếu tập trung vào việc giúp khách hàng triển khai các kiến ​​trúc hướng sự kiện, không máy chủ. Anh ấy đã xây dựng ứng dụng dựa trên đám mây, phân tán đầu tiên của mình vào năm 2013 sau khi tham dự hội nghị AWS re: Invent lần thứ hai và đã bị cuốn hút kể từ đó. Trước AWS Jack đã dành phần lớn sự nghiệp của mình cho các kinh nghiệm xây dựng không gian đại lý quảng cáo cho một số thương hiệu lớn nhất trên thế giới. Jack bị mù về mặt pháp lý và sống ở Chicago với vợ là Erin và con mèo Minou. Anh ấy cũng là một nhà biên kịch và đạo diễn với trọng tâm chính là phim Giáng sinh và kinh dị. Xem phim của Jack tại IMDb .

Cho phép người khiếm thị nghe tài liệu bằng Amazon Textract và Amazon Polly PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Alak Eswaradass là Kiến trúc sư Giải pháp tại AWS có trụ sở tại Chicago, Illinois. Cô ấy đam mê giúp khách hàng thiết kế kiến ​​trúc đám mây bằng cách sử dụng các dịch vụ AWS để giải quyết các thách thức kinh doanh. Cô có bằng Thạc sĩ về kỹ thuật khoa học máy tính. Trước khi gia nhập AWS, cô đã làm việc cho các tổ chức chăm sóc sức khỏe khác nhau và có kinh nghiệm chuyên sâu về kiến ​​trúc các hệ thống phức tạp, đổi mới công nghệ và nghiên cứu. Cô đi chơi với các con gái và khám phá các hoạt động ngoài trời khi rảnh rỗi.

Cho phép người khiếm thị nghe tài liệu bằng Amazon Textract và Amazon Polly PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Swagat Kulkarni là Kiến trúc sư Giải pháp Cấp cao tại AWS và là một người đam mê AI / ML. Anh ấy đam mê giải quyết các vấn đề trong thế giới thực cho khách hàng bằng các dịch vụ gốc đám mây và máy học. Ngoài công việc, Swagat thích đi du lịch, đọc sách và thiền định.

Dấu thời gian:

Thêm từ Học máy AWS