아마존 폴리 30개 이상의 언어로 수십 개의 음성을 사용하여 텍스트를 자연스러운 음성으로 변환하는 서비스입니다. 말하는 애니메이션 아바타부터 고객 지원 요청에 응답하는 실제와 같은 가상 에이전트, 이야기를 소리내어 읽는 자동화된 뉴스 진행자에 이르기까지 모든 종류의 애플리케이션에 사용할 수 있습니다. Amazon Polly가 합성된 음성을 라이브 스트림으로 반환하도록 하거나 나중에 재생할 수 있도록 표준 오디오 파일로 다운로드할 수 있습니다. 많은 AWS 서비스와 마찬가지로 실제로 사용한 만큼만 비용을 지불합니다. Amazon Polly를 사용하면 사용한 만큼만 비용을 지불합니다. 합성된 구문의 문자 수. 한 번 재생하든 여러 번 재생하든 저장된 오디오 파일을 재생하는 것은 무료입니다.
어떤 문구가 필요한지 미리 정확히 알고 있다면 AWS 지출을 최적화할 수 있습니다. 음성 처리가 필요한 모든 문구를 빌드 시 Amazon Polly로 전송하고 생성된 오디오 파일을 런타임에 재생할 준비가 될 때까지 저장하면 됩니다. 이 접근 방식의 일반적인 사용 사례에는 공항이나 버스 정류장의 전관 방송 시스템, 비디오 게임, 퀵 서비스 레스토랑 자동 주문 접수 장치가 포함됩니다. 한 번만 비용을 지불하면 텍스트를 합성한 다음 필요에 따라 결과 오디오 파일을 무료로 재생할 수 있습니다.
이 게시물에서는 많은 수의 텍스트 문구를 비동기적으로 실제 음성으로 변환하는 데 사용할 수 있는 완전 자동화된 이벤트 기반 서버리스 솔루션을 공유합니다. 문구 파일을 비공개로 수동으로 업로드하여 작업을 트리거할 수 있습니다. 아마존 단순 스토리지 서비스 (Amazon S3) 버킷을 검색한 후 준비가 되면 이메일이나 인스턴트 메시지로 알림을 받습니다. 또는 프로세스를 귀하의 일부로 만드십시오. AWS 코드빌드 소스 문구가 변경될 때마다 합성 작업을 자동으로 트리거하여 지속적인 통합 시스템을 제공합니다.
솔루션 개요
이 솔루션은 주로 다음 세트로 구성된 완전한 서버리스입니다. AWS 람다 기능. 이 함수는 합성할 항목을 추적합니다. 합성을 위해 Amazon Polly에 제출하고 완료되면 결과를 처리합니다. 기능은 공유를 사용합니다. 아마존 DynamoDB 시간 경과에 따른 작업 상태를 관리하는 테이블입니다. 안 AWS 단계 함수 워크플로는 제출된 각 세트를 추적하고 다음을 통해 이해 당사자에게 완료를 알립니다. 아마존 단순 알림 서비스 (Amazon SNS) 주제.
솔루션은 이벤트 중심 아키텍처: 처음부터 끝까지 실행되는 단일 프로세스가 아닌 프로세스는 Lambda 호출 전체에 분산되며 일부 이벤트에서 트리거되는 경우에만 실행됩니다.
다음 다이어그램은 솔루션 아키텍처를 보여줍니다.
솔루션 배포 및 구성
다음을 사용하여 AWS 계정에 솔루션을 배포합니다. AWS 서버리스 애플리케이션 모델 (AWS SAM). 귀하의 계정에 대한 명령줄 액세스가 있는 모든 컴퓨터에서 이 작업을 수행할 수 있지만 단순화를 위해 다음을 사용합니다. AWS 클라우드쉘.
- CloudShell 콘솔에 로그인합니다.
- 셸이 초기화되면 솔루션 소스 코드의 로컬 복사본을 만들고 다음 명령을 실행하여 AWS SAM 스택을 준비합니다.
- AWS SAM을 사용하여 배포 안내를 통해 솔루션을 배포합니다. 스택 이름(예:
amazon-polly-async-batch
), 선호하는 지역, 알림을 위한 이메일 주소, 생성된 오디오 파일에 대해 존재하지 않는 S3 버킷의 이름입니다. 다른 기본값을 수락합니다.
모든 구성 요소를 배포하는 데는 몇 분 밖에 걸리지 않습니다. 설치가 성공하면 다음과 같은 메시지가 표시됩니다.
- 이메일에서 Amazon SNS의 메시지를 확인하고 구독을 확인하세요.
솔루션 작동 방식
이 섹션에서는 솔루션을 사용하여 텍스트를 합성하는 방법과 각 주요 구성 요소의 작동 방식을 자세히 설명합니다.
설정된 파일 : 합성할 텍스트 지정
Amazon Polly가 a라는 파일에 음성으로 표시할 텍스트 문구 세트를 정의합니다. 파일 설정. 이것은이다 YAML 파일 세트 세부정보, 기본값 모음, 합성할 항목 목록으로 구성됩니다.
- 세부정보 설정 – 세트 스탠자에서는 세트에 다른 이름과 구별하기 위한 이름을 지정하고 S3 버킷에서 오디오 파일을 저장할 위치를 솔루션에 알려주는 선택적 출력 접두사를 지정합니다.
- 기본값 – 선택적 기본값 섹션에서는 특정 항목으로 재정의되지 않는 한 적용되는 특정 값을 매개변수에 제공할 수 있습니다. 다음과 같은 속성이 지원됩니다. Amazon Polly API에 문서화되어 있음:
- 엔진 - 어느 하나
standard
orneural
; 기본값neural
- 언어 코드 – 20개 이상의 언어가 지원됩니다. 기본값은
en-US
- 출력 형식 -
mp3
,ogg_vorbis
및pcm
; 기본값mp3
- 텍스트 유형 - 어느 하나
text
orSSML
; 기본값text
- 음성 ID – 지원되는 모든 음성; 기본값은
Matthew
- 엔진 - 어느 하나
- 항목 – 항목 컬렉션은 단순히 합성할 텍스트 문자열의 목록입니다. Amazon Polly는 설정된 기본값과 항목에 제공된 재정의를 사용하여 각 항목의 텍스트를 음성으로 변환하고 결과 파일을 세트의 출력 접두사 폴더에 있는 S3 버킷에 저장합니다. 출력 파일을 지정하면 파일 이름이 지정된 대로 지정됩니다. 그렇지 않으면 솔루션은 콘텐츠와 컬렉션의 순서에 따라 파일 이름을 할당합니다.
예를 들어 의 Act 1 Scene 1에서 XNUMX개의 대사를 합성하고 싶다면 로미오와 줄리엣, 다음 코드와 같은 YAML 파일을 사용할 수 있습니다.
이 세트는 Amazon Polly가 극 중 6개의 대사를 합성해야 함을 지정합니다. Abraham, Sampson 및 Gregory라는 캐릭터를 표현하기 위해 Joey, Matthew 및 Brian의 목소리를 사용합니다. Amazon Polly를 사용하면 Abraham이 "us"라는 단어를 강조할 때나 Sampson과 Gregory가 속삭일 때처럼 볼륨과 톤을 지정할 수 있습니다. ~을 위한 이와 같은 SSML 효과, 우리는 단순히 text-type
is ssml
, 발화를 적절하게 장식합니다.
어떤 항목도 출력 파일을 지정하지 않으므로 파일 이름이 자동으로 생성됩니다. 이 예에서 생성된 MP3 파일은 다음과 같습니다. act-1-scene-1/item-000000-do-you-bite-your-thumb-at-us-sir.mp3
을 통하여 act-1-scene-1/item-000005-no-sir-i-do-not-bite-my-thumb-at-you-sir.mp3
.
이 세트 파일(및 기타)은 다음 위치에 있습니다. docs/samples
코드의 디렉토리입니다. CloudShell에서는 앞서 지정한 S3 버킷에 파일을 업로드하기만 하면 이 파일을 Amazon Polly로 보낼 수 있습니다.
Amazon Polly는 파일의 6개 라인을 합성합니다. 모든 라인이 합성되면 이메일 알림을 받게 됩니다.
YAML은 모든 편집기에서 생성할 수 있고 사람이 읽기 쉬우며 다음과 같은 소스 제어 시스템에 체크인하는 데 친숙합니다. AWS 코드 커밋. 그러나 세트 파일은 순수 텍스트 파일이어야 하고, 파일 확장자가 .yml이어야 하며, 유효한 YAML이어야 합니다.
프로세서 설정 기능
다음과 같은 파일이 있을 때 .yml
확장 프로그램이 S3 버킷에 업로드되면 Set Processor Lambda 함수가 프로세스를 시작합니다. 설정된 파일을 구문 분석하고 DynamoDB에 해당 레코드를 생성합니다. 이 세트 기록은 세트에 있는 항목 수, 아직 완료되지 않은 항목 수, 세트 처리가 시작된 시기를 추적하는 데 사용됩니다.
그런 다음 컬렉션의 각 항목에 대해 Set Processor 기능은 일종의 작업 주문 메시지를 솔루션의 아마존 단순 대기열 서비스 (Amazon SQS) 대기열. 이 작업 주문은 업로드된 세트 파일의 지침에 따라 Amazon Polly가 텍스트를 합성하는 데 필요한 모든 것을 포함하는 JSON 문서입니다.
각 메시지는 다른 메시지와 완전히 독립적이므로 Amazon Polly에서 메시지 합성 작업을 동시에 수행할 수 있으며 완료 순서는 중요하지 않습니다. 세트 이름도 작업 주문의 일부이므로 솔루션에서 여러 세트(또는 동일한 세트의 여러 인스턴스)를 동시에 처리할 수 있습니다.
아이템 프로세서 기능
항목 프로세서 Lambda 함수는 SQS 대기열의 메시지를 사용하고 작업을 Amazon Polly에 게시합니다.
각 메시지는 Amazon Polly가 생성할 단일 오디오 파일을 나타냅니다. 함수는 API 메소드를 호출합니다. 시작음성합성작업, 작업 주문의 값을 메서드 매개변수에 대한 인수로 사용합니다. 이는 비동기식 API 호출이므로 Amazon Polly가 실제로 오디오 파일을 언제 생성하는지 보장할 수 없습니다. 하지만 완료되면 Amazon Polly는 다음 Lambda 함수인 응답 프로세서가 처리할 SNS 메시지를 게시합니다.
항목 프로세서 기능은 DynamoDB의 항목 테이블에도 레코드를 추가하므로 솔루션은 성공적으로 완료된 항목과 아직 완료되지 않은 항목을 추적할 수 있습니다.
많은 AWS API와 마찬가지로 Amazon Polly에 대해 초당 수행할 수 있는 API 호출 수에 대한 제한. 아이템 프로세서 기능은 합리적인 한도 내에서 유지되도록 조절됩니다. 기하급수적으로 뒤로 물러나서 다시 시도합니다. 필요에 따라 작품을 게시하되 계정 서비스 한도 내에서 유지하세요.
응답 프로세서 기능
Amazon Polly는 특정 요청에 대한 작업을 완료하면 SNS 응답 주제에 알림을 게시합니다. 이는 시퀀스의 최종 Lambda 함수인 응답 프로세서에 의해 즉시 선택됩니다. 이 함수는 DynamoDB의 항목 및 세트 레코드를 업데이트하고 Amazon S3의 오디오 파일 이름을 요청된 파일 이름으로 바꾸는 작업을 담당합니다.
Amazon Polly가 오디오 파일 합성에 성공했다고 보고한 경우 응답 프로세서 기능은 파일을 최종 위치로 이동합니다. 항목 기록을 업데이트합니다. taskStatus
에 success
그리고 증가 success
설정된 기록의 카운터입니다. Amazon Polly가 실패를 보고하면 함수는 실패 이유와 함께 항목 레코드를 업데이트하고 failed
설정된 기록의 카운터입니다.
웨이터 설정 작업 흐름
검토하자면, 이러한 각 Lambda 함수는 이벤트에 의해 트리거될 때만 실행됩니다.
- 세트 파일이 S3 버킷에 업로드되면 세트 프로세서가 트리거됩니다.
- SQS 대기열에 작업 주문이 나타나면 항목 프로세서가 트리거됩니다.
- Amazon Polly가 SNS 주제에 메시지를 게시하면 응답 프로세서가 트리거됩니다.
이러한 기능은 동시에 실행되어 여러 세트의 여러 항목을 동시에 처리할 수 있습니다. 오케스트레이션 프로세스 없이 특정 세트가 언제 완료되는지 어떻게 알 수 있습니까? 문제가 발생했는지 어떻게 알 수 있나요?
Set Waiter는 특정 세트를 관찰하여 완료 시기를 결정하거나 솔루션의 기술적 문제로 인해 세트가 중단되었는지 알리는 역할을 하는 Step Functions 워크플로입니다.
Step Functions 그래프 검사기에서 진행 중인 Set Waiter 워크플로는 다음과 같습니다.
Set Waiter의 인스턴스는 제출된 모든 세트에 대해 Set Processor 기능에 의해 시작되며 해당 세트를 식별하는 고유한 이름을 전달합니다. 웨이터는 로드 단계에서 DynamoDB 테이블에서 설정된 레코드를 로드하고 확인 단계에서 완료되었는지 확인합니다. Amazon Polly에 아직 처리할 작업이 있는 경우 함수는 다시 시작하기 전에 대기 단계에서 몇 초 동안 기다립니다.
세트의 모든 작업이 Amazon Polly에 의해 처리된 경우 Set Waiter는 완료 SNS 주제에 메시지를 게시하는 알림 단계로 이동합니다. 진행 중인 세트에 최근 변경 사항이 없으면 Set Waiter는 뭔가 잘못되었다고 가정하고 해당 주제에 버려진 메시지를 게시합니다.
정리
원하는 기간 동안 계정에 솔루션을 남겨둘 수 있습니다. 사용하지 않을 때는 Amazon S3의 오디오 파일 저장 비용과 DynamoDB 테이블의 데이터 비용만 지불하면 됩니다. 합성할 텍스트가 있는 경우 설정된 파일을 S3 버킷에 업로드하기만 하면 솔루션이 해당 파일을 거기에서 가져옵니다. Lambda 함수 호출에 대한 비용을 지불하고 Amazon Polly에서 실제로 처리되는 문자. 1.1만 자 전체를 종합하여 모비 딕예를 들어 표준 음성의 경우 5달러 미만이고 고품질 신경 음성의 경우 20달러 미만입니다.
솔루션을 다시 사용하지 않기로 결정한 경우 다음을 사용하여 모든 리소스를 삭제할 수 있습니다. AWS 클라우드 포메이션:
결론
이 게시물에서는 Amazon Polly가 비동기식으로 처리할 수 있도록 대량의 텍스트 문구를 제출하기 위한 서버리스 이벤트 중심 솔루션에 대해 설명했습니다. 이 접근 방식을 사용하면 생성된 오디오 파일을 몇 번이나 재생하든 합성 비용을 한 번만 지불하면 비용을 낮게 유지할 수 있습니다.
솔루션을 AWS SAM 애플리케이션으로 몇 분 만에 계정에 배포할 수 있습니다. 변환할 텍스트를 세트 파일이라는 YAML 파일로 지정합니다. 세트 파일이 솔루션의 S3 버킷에 업로드되면(사람이 수동으로 또는 코드 파이프라인을 통해 자동으로) 일련의 Lambda 함수(세트 프로세서, 항목 프로세서 및 결과 프로세서)가 함께 작동하여 작업을 제출합니다. Amazon Polly를 통해 오디오 파일을 수집해 보세요. 모든 작업이 완료되면 SNS 주제에 알림이 게시됩니다.
이 솔루션은 GitHub에서 오픈 소스 프로젝트로 개발되었습니다. 귀하의 기능 요청, 버그 보고서 또는 기여를 환영합니다. 직접 시도해 보고 의견을 댓글로 알려주세요. Amazon Polly가 어떻게 도움을 줄 수 있는지 자세히 알아보려면 우리의 웹 페이지를 방문!
저자에 관하여
존 피터슨 AWS의 수석 솔루션 아키텍트입니다. 그는 아내와 두 자녀와 함께 시카고 외곽에 살고 있습니다.
프라텍 자이나교 애틀랜타 조지아에 본사를 둔 AWS의 솔루션 아키텍트입니다. 그는 클라우드에 대한 열정을 갖고 있으며 고객이 AWS에서 놀라운 솔루션을 구축하도록 돕습니다.
- '
- 100
- 7
- ACCESS
- 계정
- 자치령 대표
- 공항
- All
- 아마존
- 아마존 폴리
- API를
- API
- 어플리케이션
- 어플리케이션
- 아키텍처
- 인수
- 애틀랜타
- 오디오
- 자동화
- AWS
- 곤충
- 빌드
- 버스
- 전화
- 가지 경우
- 이전 단계로 돌아가기
- 확인
- 확인하는 것이 좋다.
- 시카고
- 어린이
- 클라우드
- 암호
- 댓글
- 공통의
- 구성 요소
- 내용
- 비용
- 고객센터
- 고객
- 데이터
- 세부 묘사
- 편집자
- 이메일
- 환경
- 이벤트
- 고장
- 특색
- 무료
- 기능
- Games
- 조지아
- 힘내
- GitHub의
- 방법
- How To
- HTTPS
- 인간
- IAM
- 포함
- 완성
- IT
- 작업
- 언어
- 넓은
- 법
- 배우다
- 라인
- 명부
- 하중
- 지방의
- 위치
- 긴
- 주요한
- 백만
- 이동
- 이름
- 신경
- 공고
- 숫자
- 열 수
- 오픈 소스
- 주문
- 명령
- 기타
- 기타
- 지불
- 구문
- 게시물
- 사설
- 프로젝트
- 공개
- 읽기
- 기록
- 보고서
- 자료
- 응답
- RESTAURANT
- 결과
- 리뷰
- 달리기
- 달리는
- 연속
- 서버리스
- 서비스
- 세트
- 설정
- 공유
- 공유
- 껍질
- 단순, 간단, 편리
- SIX
- So
- 솔루션
- 지출
- 시작
- 주 정부
- 유지
- 저장
- 이야기
- 제출
- 신청
- 성공
- 성공한
- SUPPORT
- 지원
- 체계
- 시스템은
- 말하는
- 테크니컬
- 목소리
- 시간
- 선로
- 업데이트
- us
- Video
- 비디오 게임
- 온라인
- 목소리
- 음성
- 음량
- 기다리다
- 이내
- 작업
- 워크플로우
- 일