BLOG

[Techblog] Amazon Transcribe와 이메일 통합
작성일: 2020-12-29

Amazon Transcribe를 사용하면 개발자가 음성-텍스트 기능 (ASR이라고도 함)을 애플리케이션에 쉽게 추가 할 수 있습니다. 컴퓨터에서 오디오 데이터를 검색하고 분석하는 것은 사실상 불가능합니다. 따라서 녹음 된 음성은 비즈니스 인텔리전스 응용 프로그램에서 사용하기 전에 텍스트로 변환해야합니다. 이 게시물은 이메일 워크 플로를 사용하여 오디오 파일을 텍스트로 변환하는 방법을 보여줍니다. 사용자는 스마트 폰에 오디오를 녹음 한 다음 이메일받은 편지함에 첨부 파일로 보냅니다. 백엔드 서비스 모니터링 서비스는 “email-received”알림을 받고 녹음을 위해 오디오 파일을 Amazon Transcribe로 보냅니다. ASR 프로세스가 완료되면 응답 텍스트 파일이 발신자에게 첨부 파일로 이메일로 전송됩니다.

 

읽는 데 걸리는 시간 : 45 분

완료하는 데 걸리는 시간 : 120 분

학습 수준: Advanced (300)

사용된 서비스 :

Amazon Transcribe
Amazon DynamoDB
Amazon Simple Storage Service (Amazon S3)
AWS Lambda
Amazon WorkMail
Amazon Simple Email Service 사용

사용된 언어 / SDK: 

AWS SDK 사용 된 Java
Java 8
Python 3.8.0

 

사용된 빌드 도구: 

AWS CLI
Gradle
Maven (선택 사항)
셸 스크립트 

 

 

다음은 모든 주요 구성요소/ 서비스 및 이들의 상호 작용을 정의하는 솔루션 개요입니다. 

 

 

단계

  1. 기본 앱을 사용하여 스마트 폰에서 오디오 녹음을 만들고 저장합니다.
  2. 오디오 파일을 이메일받은 편지함 ( WorkMail에서 관리 )에 첨부 파일로 보냅니다.
  3. 새 항목이 도착할 때 Lambda 함수를 호출하도록 WorkMail 이메일 규칙을 구성합니다.
  4. Lambda 함수는 첨부 파일을 추출하고, Amazon S3의 버킷에 오디오 파일을 저장하며, 이메일 메타 데이터 (예 : 발신자 이메일 주소 및 메시지 ID 등)를 DynamoDB 테이블에 저장합니다.
  5. Amazon S3에 오디오 파일을 업로드하면 이벤트가 트리거되고 다른 Lambda 함수가 호출됩니다.
  6. Lambda 함수는 Java SDK를 사용하여 Amazon Transcribe를 호출하고 오디오 Blob의 Amazon S3 URL을 제공합니다.
  7. Transcribe 서비스는 작업으로 실행되고 완료되면 응답 (텍스트 출력 파일)을 Lambda로 다시 보냅니다.
  8. Lambda 함수는 Amazon S3의 출력 텍스트와 DynamoDB의 이메일 메타 데이터를 검색하고 Amazon SES를 사용하여 이메일을 보낸 사람에게 다시 보냅니다.

 

 

GitHub 저장소

https://github.com/aws-samples/amazon-transcribe-email-workflow

 

 

전제 조건

이 실습에서는 다음 항목들이 필요합니다.

 

 

투토리얼

단계에 따라 애플리케이션을 설치, 구성, 배포 및 테스트합니다.

 

  1.  git clone https://github.com/aws-samples/amazon-transcribe-email-workflow.git  저장소를 복제합니다.(터미널에서 다음 명령 사용)
  2. WorkMail에서 조직을 만듭니다. (이 링크 를 따라 조직을 만듭니다.) 이메일 도메인에 대해 “무료 테스트 도메인”옵션을 선택합니다.
  3. 사용자를 추가하십시오. 이 링크 를 따라 새로 생성 된 조직에 사용자를 추가하십시오. WorkMail 콘솔은 다음과 같아야합니다.

4. Lambda 함수 생성

a) 이 링크 를 따라 AWS Management Console (기본 함수 코드 사용)로 Lambda 함수를 생성합니다.
b) Python 3.8을 런타임으로 사용하고 기본 코드를 프로젝트의 “src / main / python”디렉토리에있는 “EmailProcessorLambda.py”파일의 내용으로 바꿉니다.
c) Amazon S3, DynamoDB 및 WorkMail에 대한 액세스 권한이있는 새 역할을 생성하고이를 Lambda 함수의 실행 역할에 할당합니다.
d) 그에 따라 함수에서 TableName 및 DynamoRegion 속성을 수정합니다.
e) 이 기능의 시간 초과 설정을 5 분으로 업데이트 boto3 라이브러리가 이메일 본문에서 원시 메시지를 검색하는 “lambda_handler”내부의이 코드를 참고하십시오.raw_msg = workmail.get_raw_message_content(messageId=msg_id)
mail = email.message_from_bytes(raw_msg['messageContent'].read())기능을 저장 한 후 구성 탭 화면은 다음과 같아야합니다.

 

5. 인바운드 WorkMail 규칙 생성
a) WorkMail 콘솔 –> 조직 설정 –> 인바운드 규칙으로 이동합니다.
b) Lambda를 실행하도록 작업을 설정하고 이전 단계에서 생성 한 Lambda 함수의 이름을 지정합니다.

c) 이메일이 수신되도록 필터링을위한 도메인 / 이메일 주소를 지정합니다. 처리를 위해 이러한 주소에서 Lambda로 전달 될 수 있습니다.
d) WorkMail –> 조직 설정 화면은 다음과 같아야합니다.

6. DynamoDB 콘솔로 이동하여 파티션 키로 MSG_ID (문자열)를 사용하여 테이블 ( “Transcribe”)을 생성합니다.

7. “create-bucket”셸 스크립트를 업데이트 합니다.

#!/bin/bash
BUCKET_ID=$(dd if=/dev/random bs=8 count=1 2>/dev/null | od -An -tx1 | tr -d ' \t\n')
BUCKET_NAME=some_name
echo $BUCKET_NAME > bucket-name.txt
aws s3 mb s3://$BUCKET_NAME

8. “Constants.java”파일 업데이트

9. “template.yml”파일 업데이트 (선택 사항 – Lambda 계층 이름 및 콘텐츠 URI 등 변경)

10. “create-bucket.sh”스크립트 실행

11. “버킷이 이미 존재 함”오류가 발생하면 모든 create-bucket.sh, Constants.java 및 Python Lambda 코드 (변수에 저장 됨)에서 버킷 이름을 변경하십시오. 모두 동일해야합니다.

12. 성공적인 Gradle 패키지에서 “build-layer.sh”스크립트 실행 – 프로젝트의 빌드 디렉토리 아래에 Java Lambda Layers 아티팩트 (zip 형식)가 생성됩니다.

13. “deploy.sh”스크립트 실행 Gradle 빌드 및 CloudFormation이 성공적으로 실행되면 Lambda 계층이 배포되고 터미널은 다음과 같이 표시됩니다.
Lambda Functions 콘솔은 런타임 v8을 사용하여 새로 생성 된 Java 기반 함수를 보여줍니다.
s3-java-function- <some_id>를 클릭하면 다음과 같이 표시되어야합니다.
 Amazon S3, DynamoDB, Amazon SES 및 Transcribe 권한을이 lambda 함수에서 사용하는 역할에 할당하고 Amazon S3 이벤트 트리거가 올바르게 구성되었는지 확인합니다.

14. Lambda 콘솔로 이동하여 다음 구성으로 Amazon S3 이벤트 트리거를 추가합니다. 버킷 : “transcribe-email”, 이벤트 유형 : “All Object Create Events”, 접두사 : “audio /”

15. Amazon SES에서 “이메일 주소”확인 AWS Management Console에서 Amazon SES로 이동하여 테스트에 사용할 이메일 주소를 확인합니다 (Amazon SES 계정이 샌드 박스 계정 인 경우 필요). 방법에 대해 자세히 알아 보려면 이 링크 를 사용하십시오. Amazon SES에서 새 이메일을 확인합니다.

16. 오디오 파일 첨부 (WAV / M4A / MP3 / MP4)와 함께 WorkMail받은 편지함에 이메일을 보냅니다.DynamoDB 용 NoSQL Workbench는 “Transcribes”테이블에 항목을 표시합니다.

 

Lambda 프로세서에서 시작한 Transcribe 작업 상태는 Transcribe 콘솔에서 볼 수 있습니다.

 

오디오 파일 파일은 Amazon S3 버킷에 기록됩니다.

 

그리고 마지막으로 (이메일이 전송 된 후) 몇 분 안에 텍스트 변환 파일이 첨부 된 이와 같은 이메일을 받게됩니다.

 

 

정리

향후 요금이 발생하지 않도록 다음 리소스를 삭제하십시오.

  • S3 버킷
  • WorkMail 조직
  • WorkMail 사용자
  • Lambda 함수 (Python)
  • Lambda 함수 (Java)
  • DynamoDB 테이블
  • Amazon SES 이메일

 

 

결론

이 게시물에서는 간단한 이메일 워크 플로를 통해 Amazon Transcribe를 사용하여 음성을 텍스트로 변환하는 방법을 보여주었습니다. 또한 Java 번들 (Gradle 및 CloudFormation 사용)을 작성하고 CLI를 통해 Lambda 계층으로 배포하는 방법 외에도 콘솔을 사용하여 Lambda 함수를 생성하는 방법을 보여주었습니다. 사용자 지정 애플리케이션 내에서 Amazon Transcribe를 통합하는 방법에 대해 자세히 알아 보려면 Transcribe API 를 방문하십시오 .

원문URL: https://aws.amazon.com/ko/blogs/media/amazon-transcribe-and-email-integration/

 

  • 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.