어서와, 개발은 처음이지?

Nodejs로 AWS Polly(text to speech) 사용하기 본문

Node

Nodejs로 AWS Polly(text to speech) 사용하기

오지고지리고알파고포켓몬고 2019. 3. 1. 18:52
반응형


Text To Speech(TTS)는 텍스트를 음성으로 바꿔주는 음성 합성 기술입니다.

이번 글에서는 nodejs로 AWS에서 제공하는 TTS 서비스인 Polly를 사용하는 방법을 다뤄보겠습니다.


예제 코드에 대한 부분은 이 글을 참고했습니다.



1. AWS IAM 사용자 생성


Polly를 사용하기 위해 npm에서 aws-sdk 패키지를 설치할 것인데 aws-sdk를 이용하기 위해서는 인증 정보가 필요합니다.

이 인증 정보를 생성하기위해 AWS에서 IAM 콘솔로 이동합니다.


[사용자 추가]


메뉴에서 사용자 -> 사용자 추가를 선택하여 사용자를 생성하도록 합니다.


기본 정보를 입력할 수 있는 페이지가 나타납니다.


[기본정보 입력]


aws-sdk를 사용할 것이기 때문에 프로그래밍 방식 엑세스는 필수적으로 선택하고, Console 엑세스는 상황에 따라 선택하시면 됩니다.

비밀번호 재설정 필요 항목은 체크하지 않았습니다.


다음 버튼을 누르면 권한을 설정하는 페이지가 나타납니다.


[권한 설정]


기존 사용자나 그룹이 없기 때문에 기존 정책 직접 연결 탭에서 Polly를 검색합니다.


상단에 AmazonPollyFullAccess 항목을 선택하고 다음으로 넘어갑니다.


[태그 추가]


태그는 사용하지 않을 것이기 때문에 다음으로 넘어갑니다.


[검토]


이제 마지막으로, 작성한 정보를 확인하는 검토 단계가 나옵니다.

사용자 만들기를 눌러 사용자 추가를 완료합니다.


[액세스 키 ID / 비밀 액세스 키]


사용자 생성이 완료되면 위와 같은 화면을 볼 수 있습니다.

aws-sdk에서는 위 액세스 키 ID, 비밀 액세스 키 정보가 필요하기 때문에 csv로 다운받아두거나 공개되지 않은 곳에 복사해둡니다.


이 화면을 넘어가면 비밀 액세스 키를 볼 수 없으니 잘 저장해두시기 바랍니다.(비밀키를 잃어버리면 키를 새로 생성할 순 있습니다.)




2. 인증 정보 설정


IAM에서 생성한 액세스 키를 아래 경로에 생성합니다.


Windows - C:/Users/USER_NAME/.aws/credentials

OSX, Linux - ~/.aws/credentials

> mkdir ~/.aws
> vi ~/.aws/credentials

이제 액세스 키 ID와 비밀 액세스 키를 아래와 같이 입력하고 저장합니다.

[default]
aws_access_key_id = AKIAIVXRDURQEYWITHRQ
aws_secret_access_key = xxx




3. 프로젝트 생성


이제 임의 경로에 프로젝트를 생성하고 aws-sdk와 TTS파일을 저장하기 위해 fs 패키지를 설치합니다.

> mkdir polly
> cd polly

> npm init
> npm install --save aws-sdk fs



4. 코드 실행


프로젝트 경로로 들어가서 app.js를 생성하고 아래 코드를 붙여넣습니다.

> vi app.js
const AWS = require('aws-sdk');
const fs = require('fs');

const Polly = new AWS.Polly({
    signatureVersion: 'v4',
    region: 'us-east-1',
});

let params = {
    'Text': '반가워 친구야~',
    'OutputFormat': 'mp3',
    'VoiceId': 'Seoyeon'
};

Polly.synthesizeSpeech(params, (err, data) => {
    if (err) {
        console.log(err.code);
    } else if (data) {
        if (data.AudioStream instanceof Buffer) {
            fs.writeFile("./speech.mp3", data.AudioStream, function(err) {
                if (err) {
                    return console.log(err);
                }
                console.log("The file was saved!");
            })
        }
    }
});

그리고 app.js를 실행합니다.

> node app.js
The file was saved!

에러 없이 실행됐다면 프로젝트 경로에 speech.mp3 파일이 생성된 것을 볼 수 있습니다.

이 파일을 실행하면 반가워 친구야 라는 음성을 들을 수 있습니다.


VoiceId에 따라 국적/목소리가 변경되는데, 상세한 파라미터 정보는 이 곳에서 확인할 수 있습니다.

또한 region의 end point는 이 곳에서 확인할 수 있습니다.


express.js와 함께 tts를 제공하는 서비스를 만들 수도 있겠습니다.



이상으로 nodejs에서 polly 사용하는 방법을 알아봤습니다.




Comments