최근 TTS가 쓰이는 걸 보면 인공지능이 우리 생활에 더 가까이 다가와 있는것 같습니다. 우리가 자주 이용하는 트위치나 유튜브 등에서 tts가 자주 쓰이고 있습니다. 트위치에 도네이션 할 때 잼민이 tts 가 특히 인기가 있습니다.
구글 tts api를 이용하면 텍스트를 음성으로 변환할 수 있습니다.
구글 Text-to-Speech
https://cloud.google.com/text-to-speech
구글 tts사이트에 접속해서 speak it을 눌러보면 꽤나 자연스러운 결과를 얻을 수 있습니다. 주요 특징은 아래와 같습니다.
# Custom Voice(베타)
자체 오디오 녹음 파일로 커스텀 음성 모델을 학습시켜 조직에 맞는 특별하면서 보다 자연스러운 음성을 만드세요. 조직에 맞는 음성 프로필을 정의하고 선택한 후, 필요한 음성이 바뀔 시 새 구문을 녹음할 필요 없이 빠르게 조정할 수 있습니다.
# WaveNet 음성
DeepMind의 혁신적인 연구를 기반으로 빌드된 90여 개의 WaveNet 음성을 활용하여 사람 목소리와의 격차를 대폭 축소하는 음성을 생성합니다.
# 음성 조정
선택한 음성의 높낮이를 기본 출력보다 최대 20반음까지 높거나 낮게 맞춤설정할 수 있습니다. 말하기 속도를 일반 속도보다 4배 빠르거나 느리게 조정할 수 있습니다.
# 텍스트 및 SSML 지원
끊어 읽을 지점, 숫자, 날짜 및 시간 형식, 기타 발음 지침을 추가할 수 있는 SSML 태그로 음성을 맞춤설정할 수 있습니다.
WaveNet 음성을 사용하면 로봇같은 목소리가 아닌 자연스러운 목소리가 나오게 됩니다. 최근에 Costom Voice라는 기능도 생겼군요. 내 목소리를 학습시키면 유튜브같은 컨텐츠를 만들때 유용하게 쓰일것 같습니다.
구글 Text-to-Speech 가격
기능
|
월별 무료 할댱량
|
무료 사용량 한도 소진 이후 가격
|
WaveNet 외의 표준 음성
|
0~400만 자
|
문자당 $0.000004(영문 기준 100만 자당 $4.00(USD))
|
WaveNet 음성
|
0~100만 자
|
문자당 $0.000016(영문 기준 100만 자당 $16.00(USD))
|
책 한권이 12만자 정도 된다고 합니다. 월별 무료 사용량만 사용해도 충분히 유용하게 사용할 수 있습니다.
구글 Text-to-Speech 구현
nodejs로 구현했습니다. npm이 편해서 nodejs를 선택했습니다.(귀찮아서..)
const fs = require('fs');
// Imports the Google Cloud client library
const textToSpeech = require('@google-cloud/text-to-speech');
// Creates a client
const client = new textToSpeech.TextToSpeechClient();
// The text to synthesize
const text = '안녕하세요';
// Construct the request
const request = {
input: {text: text},
// Select the language and SSML Voice Gender (optional)
voice: {languageCode: 'ko_KR', ssmlGender: 'FEMALE', name: 'ko-KR-Wavenet-A'},
// Select the type of audio encoding
audioConfig: {audioEncoding: 'MP3'},
};
// Performs the Text-to-Speech request
client.synthesizeSpeech(request, (err, response) => {
if (err) {
console.error('ERROR:', err);
return;
}
var ts_hms = Date.now().toString();
fs.writeFile('./out/' + ts_hms+ '.mp3', response.audioContent, 'binary', err => {
if (err) {
console.error('ERROR:', err);
return;
}
console.log(text);
});
})
위 코드를 실행합니다. 구글에서 제공하는 코드를 아주 조금 개조했습니다. text 부분에 음성으로 변환하고 싶은 텍스트를 입력하면 됩니다. 텍스트 파일을 읽어오게 바꾸면 더 편할수도 있겠네요.
음성을 바꾸고 싶다면
voice: {languageCode: 'ko_KR', ssmlGender: 'FEMALE', name: 'ko-KR-Wavenet-A'}, 이 부분을 수정하면 됩니다. 음성 리스트는 아래 링크에서 확인할 수 있습니다.
https://cloud.google.com/text-to-speech/docs/voices
# 에러메시지
ERROR: Error: Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information.
at GoogleAuth.getApplicationDefaultAsync (/Users/byunghoon/Documents/tts/node_modules/google-auth-library/build/src/auth/googleauth.js:180:19)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
at async GoogleAuth.getClient (/Users/byunghoon/Documents/tts/node_modules/google-auth-library/build/src/auth/googleauth.js:558:17)
at async GrpcClient._getCredentials (/Users/byunghoon/Documents/tts/node_modules/google-gax/build/src/grpc.js:145:24)
at async GrpcClient.createStub (/Users/byunghoon/Documents/tts/node_modules/google-gax/build/src/grpc.js:308:23)
위와 같은 에러가 난다면 인증키 문제입니다. 아래 링크를 참고해주세요.
https://cloud.google.com/text-to-speech/docs/before-you-begin
실행결과로 음성파일이 나옵니다.
'프로그래밍' 카테고리의 다른 글
깃허브(github) 클라이언트 추천 (0) | 2022.02.26 |
---|---|
뱀파이어 서바이벌 게임하기 (0) | 2022.02.16 |
구글 클라우드 플랫폼 가상머신 무료로 사용하기 - 무료 리눅스 서버 (0) | 2022.02.04 |
텔레그램 봇 만들기 (0) | 2022.02.03 |
구글 플레이 콘솔 앱 상태 거부됨 (0) | 2022.01.27 |
댓글