개요
음성 합성은 대개 쉽지 않은 작업입니다. 애플리케이션이 문장의 각 글자를 읽어서 출력되는 내용이 항상 올바르다고 가정할 수는 없기 때문입니다. 텍스트를 음성으로 변환하는 애플리케이션에서 흔히 발생하는 몇 가지 문제는 다음과 같습니다.
- 철자는 같지만 발음은 다른 단어: I live in Las Vegas 의 live와 This presentation broadcasts live from Las Vegas 의 live는 다르게 발음됩니다.
- 텍스트 정규화: 약어, 머리글자어 및 단위를 정확하게 구별하기가 어렵습니다. 가령 St. 가 Street의 약어인지 아니면 Saint의 약어인지를 확인하는 데 문제가 있을 수도 있습니다.
- 복잡한 매핑이 사용되는 언어에서 텍스트를 음소로 변환: 가령 영어에서는 tough, through, though가 음소로 정확하게 변환되지 않을 수도 있습니다. 이 예에서는 서로 다른 단어의 비슷한 부분이 단어와 문맥에 따라 각기 다르게 발음될 수 있습니다.
- 외국어(déjà vu), 고유 명사(François Hollande), 속어(ASAP, LOL)
Amazon Polly에서 제공되는 음성 합성 기능을 활용하면 이러한 문제를 해결할 수 있습니다. 그러므로 해석 문제 해결이 아닌 텍스트를 음성으로 변환하는 애플리케이션 구축 작업만 중점적으로 진행할 수 있습니다.
Amazon Polly는 텍스트를 생생한 음성으로 변환하는 서비스입니다. Amazon Polly를 사용하면 자연스럽게 말하는 애플리케이션을 만들 수 있으므로 음성 지원 제품이라는 완전히 새로운 카테고리를 구축할 수 있습니다. Amazon Polly는 고급 딥 러닝 기술을 사용하여 실제 사람 목소리처럼 음성을 합성하는 Amazon AI 서비스입니다. Amazon Polly에는 20개 이상의 언어로 수십 개의 생생한 음성이 포함되어 있으므로 여러 국가에서 원하는 음성을 선택하여 음성 지원 애플리케이션을 개발할 수 있습니다.
또한, 양방향 대화를 실시간으로 지원하는 데 필요한 일관성 있게 빠른 응답 시간을 구현합니다. Polly의 오디오 파일을 캐싱 및 저장하여 오프라인에서 재생하거나 재배포할 수 있습니다. 즉, 변환하여 저장하는 파일은 본인의 소유입니다. 음성 사용 시 텍스트를 음성으로 변환하는 작업에 부과되는 추가 요금은 없습니다. Polly는 사용하기도 쉽습니다. 음성으로 변환할 텍스트를 Amazon Polly API로 전송하기만 하면 Amazon Polly가 애플리케이션으로 오디오 스트림을 즉시 반환하기 때문에 애플리케이션에서 직접 재생하거나, 혹은 MP3 같은 표준 오디오 파일 형식으로 저장할 수 있습니다.
이 실습에서는 Amazon Polly를 사용하여 텍스트를 음성으로 변환하는 기본적인 서버리스 애플리케이션을 생성합니다. 이 애플리케이션에 포함된 단순한 사용자 인터페이스에서는 여러 언어로 된 텍스트를 수신한 다음 웹 브라우저에서 재생 가능한 오디오 파일로 변환합니다. 이 실습에서는 블로그 게시물을 사용하지만 실제로는 어떤 텍스트 유형이든 사용 가능합니다. 예를 들어 이 애플리케이션을 사용해 식사 준비를 할 때 요리법을 읽을 수도 있고, 자동차나 자전거를 운전할 때 뉴스 기사나 책을 읽을 수 있습니다.
애플리케이션 아키텍처
여기서는 서버리스 애플리케이션을 구축합니다. 즉, 프로비저닝, 패치, 크기 조정을 하지 않으므로 서버를 사용할 필요가 없습니다. 이러한 작업은 AWS 클라우드가 자동으로 처리하므로 개발자는 애플리케이션 관련 작업만 중점적으로 수행하면 됩니다.
애플리케이션은 두 가지 메서드를 제공합니다. 하나는 새 게시물에 대한 정보를 전송하는 메서드(MP3 파일로 변환되어야 함)이고 다른 하나는 게시물에 대한 정보(Amazon S3 버킷에 저장된 MP3 파일에 대한 링크 포함)를 검색 하는 메서드입니다. 두 메서드 모두 Amazon API Gateway를 통해 RESTful 웹 서비스로 표시됩니다.
애플리케이션이 새 게시물 관련 정보를 전송하면 다음 작업이 수행됩니다.
1 Amazon API Gateway에서 표시되는 RESTful 웹 서비스에서 정보를 수신합니다. Amazon Simple Storage Service(Amazon S3)에서 호스트되는 정적 웹 페이지를 통해 이 웹 서비스가 호출됩니다.
2 Amazon API Gateway가 AWS Lambda 함수 New Post 를 트리거합니다. 이 함수는 MP3 파일 생성 프로세스를 초기화합니다.
3 Lambda 함수가 Amazon DynamoDB 테이블에 게시물 관련 정보를 삽입합니다. 모든 게시물 관련 정보가 이 테이블에 저장됩니다.
4 전체 프로세스를 비동기식으로 실행하려면 Amazon Simple Notification Service(Amazon SNS)를 사용하여 새 게시물 관련 정보 수신 및 오디오 변환 시작 프로세스를 분리합니다.
5 또 다른 Lambda 함수인 Convert to Audio 가 SNS 주제를 구독하며, 새 메시지가 표시될 때마다(새 게시물을 오디오 파일로 변환해야 함) 트리거됩니다.
6 Convert to Audio Lambda 함수가 Amazon Polly를 사용하여 텍스트를 지정된 언어(텍스트 언어와 동일함)의 오디오 파일로 변환합니다.
7 새 MP3 파일이 전용 S3 버킷에 저장됩니다.
8 DynamoDB 테이블에서 게시물 관련 정보가 업데이트됩니다. S3 버킷에 저장된 오디오 파일의 URL은 이전에 저장했던 데이터와 함께 저장됩니다.
애플리케이션이 게시물 관련 정보를 검색하면 다음 작업이 수행됩니다.
1 Amazon API Gateway를 사용하여 RESTful 웹 서비스가 배포됩니다. Amazon API Gateway는 게시물 관련 정보 검색용 메서드를 표시합니다. 이러한 메서드에는 게시물의 텍스트와 MP3 파일이 저장된 S3 버킷의 링크가 포함됩니다. Amazon S3에서 호스트되는 정적 웹 페이지를 통해 이 웹 서비스가 호출됩니다.
2 Amazon API Gateway가 Get Post Lambda 함수를 호출합니다. 이 함수는 게시물 데이터 검색용 로직을 배포합니다.
3 Get Post Lambda 함수가 DynamoDB 테이블에서 게시물 관련 정보(Amazon S3에 대한 참조 포함)를 검색하여 반환합니다.
이 실습에서 다루는 주제
이 실습을 마치면 다음을 수행할 수 있습니다.
- 데이터를 저장할 Amazon DynamoDB 생성
- Amazon API Gateway RESTful API 생성
- API Gateway를 통해 트리거되는 AWS Lambda 함수 생성
- AWS Lambda 함수와 Amazon Simple Notification Service(SNS) 연결
- Amazon Polly를 사용하여 다양한 언어와 목소리로 음성 합성
아이콘 설명
이 실습에서는 다양한 유형의 지침 및 참고 사항에 대한 주의를 환기하기 위해 다양한 아이콘이 사용됩니다. 다음 목록에서는 각 아이콘의 목적을 설명합니다.
- 실행해야 하는 명령입니다.
- 명령 또는 편집된 파일의 출력을 확인하는 데 사용할 수 있는 샘플 출력입니다.
- 힌트, 팁 또는 중요한 가이드입니다.
- 특별한 관심이 필요한 중요한 정보입니다(놓쳤다고 해도 장치 또는 데이터에 문제가 발생할 정도로 중요하지는 않지만 특정 단계를 반복해야 할 수 있음).
- 경고: 되돌릴 수 없으며 명령 또는 프로세스의 실패에 영향을 줄 수 있는 작업입니다(설정한 후 변경할 수 없는 구성에 대한 경고 포함).