[동화책] 어린왕자 오디오북 제작하기
어린왕자 오디오북을 제작하였습니다.
제작과정을 타임라인별로 정리해보겠습니다.
https://youtu.be/FmFVhccKDyo?si=jXVCGOa-Mz1YKhgM
1. 텍스트선정
어린왕자 원문을 구하는 일은 어렵지 않았습니다.
작가 사후 50년이 지난 1995년 저작권이 만료가 되었으므로 저작권에는 큰 문제가 없지만
이미지를 그대로 도용하는 것은 상표권 문제가 있다고 합니다.
그렇다면, 생성형 ai를 통해 삽화를 그리면 어떨까 하는 생각에서 이 프로젝트를 시작하게 되었습니다.
2. 음원제작
Audible과 같은 곳에서 음원을 추출하여 사용하는 것은 문제가 될 수 있으므로
인공지능의 Text to Speech 기능을 활용하여 음원을 제작하기로 하였습니다.
여러 서비스를 사용해보면서 가장 인간의 음성를 생성할 수 있는 서비스로 '일레븐랩스'를 선택하였습니다.
저는 Creator 등급으로 구독하였고,
한달에 10만자를 사용할 수 있게 되었습니다.
이는 무료 플랜을 사용해보고 내린 결정입니다.
다른 서비스에 비해 비싼 느낌이 있지만
양보다는 질을 선택하기로 하였습니다.
일레븐랩스 구독료
일레븐 랩스 보이스 라이브러리
Voice Library에는 꽤 많은 원어민의 목소리를 사용할 수 있습니다.
자신의 목소리를 클론하여 사용할 수도 있지만,
저는 그것보다는 원어민을 한 명 고용한다는 느낌으로 보이스 샘플을 들어보며,
어린왕자 라는 작품에 가장 알맞은 목소리를 선택하였습니다.
일레븐랩스 보이스랩
보이스랩에 들어가면 선택한 보이스를 선택하여 Text를 읽어줄 성우 목소리를 설정할 수 있습니다.
일레븐랩스 음성합성
이 후 준비한 텍스트를 아래 Text 박스에 복사 붙여넣기 하시면 됩니다.
일레븐 랩스의 Text to Speech 성능이 꽤 좋아서
끊어읽기, 호흡 과 같이 자연스러운 발화에서 필요한 부분이 자동으로 설정되지만,
꼭 끊어읽어야 할 부분, 쉬었다가 읽어야 할 부분에는
마침표나 쉼표를 추가해야 조금 더 자연스러운 음성파일을 얻을 수가 있습니다.
한 번에 넣을 수 있는 최대 글자수가 5000자 제한이 있기 때문에
어린왕자 1개 챕터를 하나의 파일로 얻기 위해서 글자수를 잘 확인하셔야 합니다.
공백부분도 글자 수에 포함되기 때문에 글자수를 아끼기 위해서는 공백도 제거하여야 합니다.
보이스 설정
두 번째 칸의 voice settings를 눌러서 원하는 값으로 설정해줍니다.
저는 기본값을 그대로 쓰겠습니다.
다행히 어린왕자 Chapter 2의 경우는 좀 짧아서 4000자 조금 넘어서 바로 generate(생성하기) 버튼을 눌러 보겠습니다.
아래쪽에 파일이 재생된다.
생성된 파일은 아래쪽에서 자동으로 재생되며
오른쪽 끝에 파일을 다운 받을 수 있는 버튼이 활성화됩니다.
다운로드 아이콘
그러면 음원파일 생성은 완료되었습니다.
3. 이미지 제작
생성형 인공지능으로 이미지 제작하는 방법은 너무나 많이 알려져 있어서 길게 다루지는 않겠습니다.
가장 일반적으로 품질이 좋다는 미드저니만 하더라도 원하는 이미지를 생성하는데 부족함이 없지만
저는 최근에 지피티4에서 사용이 가능하게 된 DALL-E 3를 활용해서 이미지를 만들었습니다.
https://moonlang.tistory.com/106
이미지를 만들기에 앞서, 생각해 볼 것이 있습니다.
어떤 이미지를 얼마만큼 만들 것이냐입니다.
삽화에 들어갈 이미지는 일정한 스타일이어야 할 것이고
음원의 길이를 기준으로 몇 장의 그림이 필요할 지 미리 생각해보아야 합니다.
DALL-E 3는 프롬프트를 넣으면,
4가지의 다른 프롬프트로 변환하여 4가지의 다른 양식으로 이미지를 생성해줍니다.
그러므로 이를 제어하기 위한 프롬프트가 필요하다는 결론에 이를 수 있습니다.
그래서 ChatGPT의 도움을 받아보기로 하였습니다.
나는 달리3의 능력을 사용해서 그림책을 만들고 싶어. 책을 만들기 위해 DALL-E 3가 인상적인 그림을 만들도록 해주는 프롬프트를 제공해줄 수 있니? 스타일은 생텍쥐페리의 어린왕자 삽화스타일로 원해.
I'd like to create a picture book using DALL·E 3's capabilities. Can you provide a prompt that will guide DALL·E 3 in generating impressive images for the book? The art style is a loving homage to Antoine de Saint-Exupéry's classic illustrations for The Little Prince
저의 요청에 ChatGPT가 만들어준 프롬프트는 아래와 같습니다.
Watercolor illustration of a serene desert landscape under a starry sky, with a lone rose sheltered under a glass dome in the foreground. The atmosphere is filled with mystery and wonder, inspired by the simplistic and whimsical art style of "The Little Prince."
2. Watercolor drawing of a young prince with golden hair, sitting atop a small asteroid, gazing into the vastness of space. Surrounding him are several other asteroids, each unique in shape and size, reminiscent of "The Little Prince" illustrations.
3. Watercolor artwork depicting a scene where a pilot is repairing his airplane in the desert. A few meters away, the little prince is engrossed in observing a fox, trying to tame it. The mood is calm, with long shadows indicating the setting sun, inspired by "The Little Prince."
4. Watercolor painting of a bustling intergalactic marketplace filled with diverse alien creatures, stalls selling exotic items, and spaceships hovering in the background. Among the crowd, the little prince is seen curiously exploring the market, in a style reminiscent of "The Little Prince."
달리3가 만들어준 삽화 1
하지만, 문제가 생겼습니다.
Chapter 1에는 아직 어린왕자가 등장하지 않기 때문이죠.
두 번째와 세 번째 그림은 Chapter 2에 써야할 이미지입니다.
책의 내용에 따라 이미지를 만들어주세요.
please make images according to the book contents
아래는 Chapter 1 텍스트를 넣고 위의 프롬프트를 넣어서 만든 이미지입니다.
어린왕자 1장 삽화 2
몇 장의 그림 빼고는
스타일이 바뀌는 문제가 생겼습니다.
다행히 달리3는 프롬프트로 그림을 수정할 수 있습니다.
예를 들어, 달리가 생성한 이미지에는 동화책 삽화로 쓰기 힘든 것들도 있기 때문에
프롬프트로 수정을 요청해야 합니다.
삽화로 쓰기 힘든 작품
첫 번째 그림은 아이들에게 적절하지 않은 것 같아. 수정해야 해. 그냥 보아뱀을 그려줘 이미 코끼리가 보아뱀 속에 들어가 있는, 보아뱀 몸이 코끼리 몸 모양이 드러나야 해
I think the first image is not suitable for kids, image should be revised, just boa constrictor. already an elephant are in the boa constrictor, so boa constrictor's body should the shape of elephant
적절한 프롬프트를 찾지 못한 탓에
이 부분에서 오랜 시간이 필요했습니다.
하지만, 꽤 괜찮은 그림들도 얻을 수 있었지요.
그렇다면, 지금 부터는 아까 만든 Chapter 2에 대한 이미지를 생성해 보도록 하겠습니다.
마음에 드는 이미지로 10장정도를 선별해 보았습니다.
어린왕자 2장 삽화 1
어린왕자 2장 삽화 2
어린왕자 2장 삽화 3
어린왕자 2장 삽화 4
어린왕자 2장 삽화 5
어린왕자 2장 삽화 6
어린왕자 2장 삽화 7
어린왕자 2장 삽화 8
어린왕자 2장 삽화 9
어린왕자 2장 삽화 10
어린왕자 2장 삽화 11
4. 영상제작
앞서 음원과 이미지 제작이 완료되었으므로, 이제 영상에서 음원과 이미지를 결합하고
이미지에 특수효과를 넣어서 움직이게 만들어 볼 차례입니다.
가장 좋은 영상 툴은 뭐니 뭐니해도 프리미어프로일 것입니다.
하지만, 다루기가 좀 어려운 편이고, 유료이기 때문에
저는 현재는 브루(vrew)와 캡컷(capcut)을 활용하고 있습니다.
브루는 특수효과를 넣기 어렵기 때문에,
캡컷을 활용해서 영상을 제작하고 있습니다.
지피티4 플러그인으로도 캡컷을 사용할 수 있습니다.
캡컷의 장점은 무료이면서도
특수효과를 손쉽게 구현할 수 있다는 점입니다.
(물론 언제 유료가 될지는 모르겠지만;; )
어린왕자 1장 캡컷 작업
캡컷의 활용법을 지금 이 지면에서 다 다루기는 어려울 것 같습니다.
간략하게 작업과정을 요약해서 말씀드리자면,
캡컷 메인화면
1. 새 동영상 만들기를 누릅니다.
화면비율 선택
2. 화면 비율을 선택합니다. (저는 유튜브에 올릴 생각으로 16:9를 선택하였는데, 달리에서 생성한 이미지가 1:1 비율이므로 손쉽게 만들기에는 1:1이 더 쉬울 수 있습니다. )
음원을 업로드한다
3. 파란색 바탕의 흰 플러스 버튼을 누르거나 드래그앤드랍으로 일레븐랩스에서 생성한 mp3 파일을 업로드 합니다.
음원이 타임라인에 올라간다
타임라인의 음원이 초록색바로 생성된 것을 확인할 수 있습니다.
4. 달리로 생성한 이미지 파일을 업로드합니다.
위 그림에서 보듯이 왼쪽 업로드창에
달리로 생성한 이미지를 넣습니다. (드레그앤드랍)
생성한 이미지를 드래그앤 드롭하거나 업로드 버튼을 눌러서 선택하면 이미지가 업로드가 됩니다.
5. 영상편집
타임라인에 영상을 끌어다 놓으면
타임라인에 영상이 생성이 됩니다.
음원을 들으면서 내용에 해당하는 이미지를 넣고 길이를 조절합니다.
타임라인에 이미지를 끌어서 올려놓으면 영상이 생성이 된다.
텍스트 템플릿
6. 텍스트 템플릿을 활용하면 손쉽게 영상의 제목을 만들 수 있습니다.
텍스트 템플릿
템플릿을 가져와 해당부분을 클릭하면 오른쪽에 창이 활성화 됩니다.
제목을 수정하고 적절한 크기로 조절합니다.
애니메이션 창 (위치를 기억하자)
7. 특수효과: 맨 오른쪽 끝에 '애니메이션'을 눌러서 텍스트에 특수효과를 넣어줍니다.
텍스트 특수효과
저는 반복탭에서 '파동' 효과를 선택하였습니다. 하나씩 눌러보시면
텍스트가 어떻게 움직이는지 확인하실 수 있습니다.
반복지속시간은 최대로 설정하시는 편이 좋습니다.
반복지속시간은 최대로
효과가 잘 적용되었는지를 보기 위해서 초기값 0초 넣고
스페이바를 눌러서 플레이해 가면서
이미지, 텍스트, 음원이 잘 조화롭게 적용이 되는지 확인하시면서 길이를 조절하세요.
이미지도 애니메이션 특수효과가 적용이 된다.
이미지를 클릭하여 애니메이션 효과를 넣으면 움직이는 영상이 연출됩니다.
음원의 내용을 들으면서 이미지를 적절하게 바꿔주세요.
인, 아웃, 조합 세가지 탭을 눌러서 음원의 내용과 가장 적절한 이미지와 특수효과를 찾는 일은
자신의 감각에 맡기세요.
음악을 추가하자
분위기에 맞는 음악을 넣어서 마무리해 보세요.
볼륨 조절도 가능하다
음악이 너무 크면 음원이 잘 안들리겠죠
볼륨도 적당한 크기로 조절하세요.
캡션 자동설정
자막을 따로 넣을 필요없이 자동으로 캡션을 생성할 수도 있습니다.
편집이 다 되었다면 내보내기 버튼을 눌러서 영상을 다운 받습니다.
내보내기
아래는 썸네일을 만들어서 유튜브에 올린 영상 링크입니다.
https://youtu.be/IWZe4sIVijY?si=mhh1wi3EuScn3pM2
<iframe src="https://www.youtube.com/embed/IWZe4sIVijY" width="860" height="484" frameborder="" allowfullscreen="true"></iframe>