최근 짧은 길이의 영상에서 목소리 위주로 시나리오를 만들어서 올린 것을 많이 봅니다. 즉, 관련해서 다양한 인공지능 목소리 서비스들이 있고 이를 적극적으로 활용하고 있다는 거죠.
과거 이러한 목소리는 개인 스트리밍 방송에서 후원할 때 목소리 채팅을 활용해서 돈을 일정 지불하고 방송에서 틀어주는 방향으로 진행했다면, 현재는 이것과 함께 아예 이러한 목소리들을 적극 활용해서 영상을 만들기도 합니다. 영상에 목소리만 입히거나, 조금 더 수고롭게 자막을 달 수도 있습니다.
그래서 이번에는 글자를 입력했을 때, 원하는 목소리로 출력해주는 TTS(Text to Speech) 서비스를 간단히 알아보기로 하고, 실습을 해보겠습니다.
TTS
TTS는 텍스트 음성 변환, text-to-speech라고 합니다. 작성한 텍스트를 목소리로 변환하는 기술입니다. 이러한 기술은 간단해보이지만 목소리를 사람과 닮게 만들면서도 의미가 정확히 전달되는 부분에서 상당한 기술력이 필요하다고 생각합니다. 클로바 보이스는 API 가이드에 따르면, 텍스트를 입력받아 지정된 음색, 속도 등으로 음성을 합성해서 결과를 반환한다고 합니다. API로 제공하며 classic / VPC 모두 제공한다고 하니 간단히 사용해보기 좋을 것입니다.
CLOVA Voice 소개
간략하게 설명해보겠습니다. 텍스트를 입력하면 자연스러운 사람의 음성으로 변환시키는 서비스입니다. 그래서 TTS를 제공하는 네이버 클라우드의 AI 서비스에 들어가 있습니다. 음성을 자연스럽게 합성하는 기술이 필요하기 때문이죠. 많은 음성 데이터를 학습해서, 글자를 읽어줄 때, 사용자가 원하는 음성을 제공할 수 있는 것이죠. 총 30여가지의 음성을 제공하고 있으며, API로만 제공하는 점에 유의합시다. 웹 콘솔에서는 접근할 수 없습니다.
흥미로운 점은 감정 파라미터(Volume, Speed, Pitch, Emotion 등)을 제공한다는 점인데요, 이를 응용하면 멋지고 재미있는 콘텐츠를 만들 수 있겠습니다! 조정하면 좀 더 밝거나 어두운 심정을 가진 사람의 목소리를 낼 수도 있고, 특정 기분에 맞춰 읽어줄 수도 있겠죠? 이 감정 파라미터에 대해 특징적인 부분만 간단히 발췌 후 요약해보았습니다.
파라미터 | 타입 | 설명 |
volume | Integer | 음성 볼륨 |
speed | Integer | 음성 속도 |
pitch | Integer | 음성 피치. 목소리의 높낮이로 생각하면 됩니다. |
emotion | Integer | 음성 감정 - 0에서 3 사이의 정수 값(0: 중립, 1: 슬픔, 2: 기쁨, 3: 분노) - 지원하는 목소리 : nara, vara, vmikyung, vdain, vyuna |
다양한 파라미터 중에서, emotion 파라미터가 좀 궁금한데요, 실습에서 한번 중립, 슬픔, 기쁨, 분노의 차이를 들어보고 그 차이를 확인해보겠습니다. 목소리 대상이 제한된다는 점도 잘 살펴보면 좋습니다. 특정 목소리는 감정이 적용되지 않을 수 있다고 하네요.
CLOVA Voice 무료 체험 (1) : 네이버 클라우드 가이드
목소리가 다양하고, 여러 파라미터가 있는데 직접 들어보고 싶지 않나요? 네이버 클라우드 가이드 홈페이지에서는 미리 한번 들어볼 수 있는 서비스를 제공하고 있습니다. 아래 사이트를 참고해주세요. 화면은 아래와 같습니다.
https://www.ncloud.com/product/aiService/clovaVoice
사이트에 따르면 100가지 음성 합성음이 있다고 하네요! 각 음성마다 태그를 제공해서 참고하기 좋습니다.
추가로 속도, 음색, 높낮이, 감정까지 다 조절해서 확인해보고 그 파라미터 값만 메모해두었다가 실제 개발하시게 되면 파라미터 값에 그걸 넣어주면 됩니다. 들어보기도 가능해서 유용하게 사용할 수 있겠습니다.
CLOVA Voice 무료 체험 (2) : 클로바 더빙
그런데 말입니다. 베타 서비스로 네이버 클로바 팀에서 무료로 제공하는 서비스도 있습니다. AI 더빙 서비스으로 사실은 다음 글에서 소개하려고 했지만 무료로 사용할 수 있고, 오디오만으로도 프로젝트 생성이 가능한 점을 감안해서 비교해볼 요량으로 가져왔습니다. 이것을 오디오 에디터라는 이름으로, 네이버 클로바 팀에서 제공하는 스튜디오 형 어플리케이션입니다. 물론, 제한이 있고 유료로 사용할 때는 네이버 클라우드 플랫폼을 사용하도록 권고하고 있습니다.
https://blog.naver.com/clova_ai/223153272870
아래 사이트에 들어가서, 네이버 로그인을 수행합니다.
https://clovadubbing.naver.com
새 프로젝트를 생성해봅시다. 비디오는 최대 20분, 오디오는 최대 30분 생성할 수 있다고 합니다. 오디오만 사용한다면 30분까지 더빙이 가능하겠네요.
오디오로 선택해주시고, 프로젝트 명을 간단히 입력해줍니다.
목소리를 추가하거나 효과음을 추가합니다. 텍스트만 입력할 수 있고 보이스를 선택할 수 있습니다. 특수효과(무전기, 에코 등)과 속도 조절, 높낮이, 끝음 처리 등 다양한 기능을 제공하고 있습니다. 먼저 작성하고 저장버튼을 누릅니다. 그러면 아래와 같이 재생 버튼이 생성되며 시작 전 공백을 통해 목소리가 출력되는 시점도 함께 조절할 수 있습니다.
그런데 다운로드 버튼을 누르면 아래와 같은 주의 사항 안내를 합니다. 이를 확인하고, 제 블로그는 무료 채널이므로 출처 표기 후 게시하겠습니다.
다운로드 시 횟수가 매달 20회이고 잔여 글자수도 해당 문구에서 확인할 수 있습니다. 다만 출처 표기의 일환으로 워터 마크를 명시해야하는데요. 저는 오디오 컨텐츠만 제공하므로 아래 문구를 음성으로 컨텐츠 시작 부분에 삽입하겠습니다.
오디오 컨텐츠의 경우 - 000을 소개합니다 (with CLOVA Dubbing)
만약 제작하시고자 하는 컨텐츠가 오디오북이나 오디오클립인 경우에는 자막이 아닌 위의 출처표기 텍스트를 음성으로 컨텐츠 시작 부분에 삽입해주시면 됩니다.
위의 출처 가이드라인에 따라, 시작 부분에 "클로바 더빙을 소개합니다 with CLOVA Dubbing" 이렇게 설정했습니다. 또한, 더빙과 효과음이 합쳐진 전체 음원 파일로 저장했습니다. 저장시 mp3, wav 중 하나를 택할 수 있는데, mp3 형식으로 저장했습니다. 유료로 사용하면 이런 출처 표기가 필요없다고 합니다.
정리해보면 클로바 더빙은 무료 버전으로 동영상 편집 툴처럼 활용할 수 있고 오디오만 편집하는 오디오 에디터 기능을 제공합니다. 무료로 사용하려면 무료 채널에 게시하면서, 출처 표기가 필요하며 오디오만 사용할 때는 오디오로 컨텐츠 시작부분에 음성으로 출처 표기 텍스트를 변환해서 추가해야 합니다. 번거롭긴 하지만 무료로 제공해주는데 어느 정도는 감안해야겠죠? 또한, 감정 파라미터가 제공되지 않는다는 점도 고려해야겠습니다.
CLOVA Voice 실습
실습에 앞서 사용 목적을 분명히 알아두는 게 좋습니다. 가이드에서 실시간 API 호출이 가능하고, 콘텐츠 제작(유료 판매, 개인/비영리 용도)로 활용이 가능하다는 점을 확인하였습니다. 다음 글에서 본 서비스로 간단한 영상을 만드는데 이러한 목적을 확인해두는 게 좋을 것입니다.
https://guide.ncloud-docs.com/docs/naveropenapiv3-speech-clovavoice-policy
가이드에서는 음성 편집 후 재판매를 원한다면 clova dubbing을 사용하도록 고지하고 있습니다. 잘 숙지해서 사용해보면 될 것 입니다. 저는 음성 편집을 수행하지는 않으므로 API 호출 후 간단히 음성을 들어보는 것으로 마무리하겠습니다.
API를 호출받고 응답을 출력하기에 가장 간편한 것은 명령어보다 GUI가 편하겠죠? postman 이라는 앱을 사용하겠습니다. 사용에 앞서 간단히 설정해줄 것이 있습니다. 클라이언트 아이디를 먼저 발급받아야 하는데요. Ncloud 콘솔 창에서 AI·NAVER API > Application으로 이동하고, 애플리케이션을 등록합니다.
아래 처럼 Application 이름을 설정하고 Service에는 CLOVA Voice -Premium을 선택합니다. 월 9만원이 기본료로 결제되니 주의해주시길 당부드립니다. 아래 경고창을 잘 확인해주세요!
그리고 CLOVA Voice를 선택해주시고, 등록 버튼을 눌러줍니다.
등록을 완료하면, 이렇게 인증 정보가 나타납니다. 여기서 API를 호출하기 위한 Client ID와 Client Secret값을 가져올 수 있습니다. 잘 메모해두었다가 아래에서 사용할게요.
여기서 인증 정보를 누르면 아래와 같은 화면이 나타납니다. 여기서 Client ID, Client Secret을 저장해둡니다.
이게 API 호출을 위해 Postman을 설치하고 사용해보겠습니다.
Postman 설치
가입은 안해도 앱을 받아서 사용할 수는 있습니다. 그러나 편하게 사용하려면 가입하는 게 편합니다. API Url을 입력하는 란에는 아래와 같이 입력합니다.
Method | 요청 주소 |
POST | https://naveropenapi.apigw.ntruss.com/tts-premium/v1/tts |
그리고 추가로 header라는 곳에 입력할 내용은 아래와 같습니다. key와 value 형태로 입력해야 합니다.
헤더 | 설명 |
X-NCP-APIGW-API-KEY-ID | Client ID |
X-NCP-APIGW-API-KEY | Client Secret Key |
Content-Type | application/x-www-form-urlencoded |
이제 postman에 입력해보겠습니다. 아까 복사해둔 Client ID, Client Secret Key를 차례로 입력합니다. Content-Type에는 위에 기재된 대로 application/x-www-form-urlencoded를 입력합니다.
여기에 Body에도 입력하는데, x-www-form-urlencoded를 선택해서 입력합니다. 여기서 앞서 봤던 파라미터(감정 파라미터 포함)해서 모두 입력해줍니다. 저는 vara라는 화자(한국어, 여성)를 선택하고, text에는 목소리로 변환할 텍스트를 입력해줍니다. emotion은 3(분노)로 설정하고 speed는 -2로 조금 빠르게 설정했습니다.
Send 버튼을 누르면 아래 결과창에 음성 파일이 출력됩니다. 여기서 Save as Example 우측 버튼을 눌러서 .mpga 형식으로 저장해서 들어볼 수도 있어 편리합니다.
함께 들어볼까요? 2초 밖에 안되지만 재밌게 들었습니다.
터미널 기반 API 호출 방식
포스트맨 같은 도구가 아니라, 기본 OS에 설치되어 있는 터미널(MAC), 명령 프롬프트(CMD, Windows OS) 등에서 오로지 명령어로만 API를 호출할 수도 있습니다. 아주 간단한 명령어를 사용하면 됩니다. 위의 Postman에서 지정한 것과 동일하게 vara라는 화자(한국어, 여성)를 선택하고, text에는 목소리로 변환할 텍스트를 입력해줍니다. emotion은 3(분노), speed는 -2로 설정하면, 다음과 같습니다.
curl "https://naveropenapi.apigw.ntruss.com/tts-premium/v1/tts" \
-d "speaker=vara&volume=0&emotion=3&speed=-2&pitch=0&format=mp3&text=네이버 클라우드 너무 멋지고 좋아요." \
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
-H "X-NCP-APIGW-API-KEY-ID: { Client ID 입력 }" \
-H "X-NCP-APIGW-API-KEY: { Client Secret Key 입력}" -v \
> response.mp3
위 코드를 터미널 창에 입력해보겠습니다. 아래는 입력 후 화면으로, 제가 설정한 내역보다 더 길고 자세한 내역을 보여줍니다. 200 OK가 나타나고 아래와 같이 출력되면 잘 전송된 것입니다. 실제 파일은 해당 명령어를 입력한 위치 그대로 있습니다. 저는 Document 디렉토리에 저장했습니다.
그 결과 파일을 들어보면, 터미널에서 API 호출 방식으로도 동일한 결과가 나오는 것을 확인할 수 있습니다.
다음 글에서는 CLOVA Dubbing으로 개인 방송을 만들어보는 컨텐츠를 진행해보겠습니다.
'네이버클라우드' 카테고리의 다른 글
[Ncloud] File Safer로 내 파일 악성코드 잡아내기 (2) | 2023.08.06 |
---|---|
[Ncloud] CLOVA Dubbing으로 짧은 영상 만들어보기 (0) | 2023.08.05 |
[Ncloud] 도커와 컨테이너 알아보기 (0) | 2023.07.28 |
[Ncloud] Global DNS로 리눅스 서버 접속하기 (1) | 2023.06.29 |
[Ncloud] 리눅스 서버 접속하기 (0) | 2023.06.26 |