@NanheeKim @nh9k
질문이 있으면 언제든지 연락주세요!
Please, feel free to contact me, if you have any questions!
github: https://github.com/nh9k
email: kimnanhee97@gmail.com
3. 3 / 20
[ Jupyter 환경 모습 ]
Anaconda3를 이용한
가상환경 생성
[ tacotron 모델에 필요한 패키지 설치 ]
4. 4 / 20
음성파일 생성
음성파일 묵음
구간으로 분리
SST API를 이용해
텍스트 파일 생성
alignment
파일 생성
.npz
dataset생성
[ Dataset 생성 과정 ]
[ alignment.json 파일 내부 모습 ]
[ Google Cloud SDK 중 SST API 사용 모습 ]
5. 5 / 20
[ 유인나 + 코퍼스 학습 결과 loss graph ]
[ 손석희 + 김호연 학습 결과 loss graph ]
[ 유인나 + 코퍼스 학습 결과 sample]
[ 손석희 + 김호연 학습 결과 sample ]
6. 6 / 20
[ 유인나 오디오북 + 한국어 코퍼스 + 이주형 + 김난희 학습 결과 loss graph ]
[학습 결과 sample]
유인나 오디오북, 한국어 코퍼스
이주형, 김난희
7. 7 / 20
[ IP 설정 및 포트 설정 ]
app.py
main.js
[ Flask 웹에 사용할 UI ]
Index.html
app.py
web
audio
son+hozzi-trainingdate
synthesizecode1.wav
synthesizecode1.png
…
yuinna+kss-trainingdate
synthesizecode2.wav
synthesizecode2.png
…
static
css
main.css
js
templete
Index.html
main.js
siriwave.js
[ Flask Web 구조도 ]
8. 8 / 20
[ UI 전체 모습 ]
[ 텍스트 입력 ]
[ 입력한 텍스트로 음성 합성 및 음성 출력 ]
9. 9 / 20
1. 제약조건1: 학습 환경
학습을 위해서는 그래픽 카드나 GPU의 성능이 보다 좋은 환경이 필요함. Smart-Lab의 서버를 이용하여 학습 시간을 단축시켰다.
2. 제약조건2 : 음성 데이터 품질 및 텍스트 파일과의 매칭 정확도
보다 높은 질의 학습 결과를 출력하기 위해서는 필연적으로 학습에 이용되는 음성 파일이 화자의 목소리 외의 잡음 요소들이
없는 파일이여야 한다. 이러한 요소를 최소화 하기 위해 침묵 구간으로 잘라 음성파일을 분리하여 저장한다. 이렇게 저장된
음성파일을 기반으로 텍스트 파일과 매칭하는데, 구글 SST API로 생성된 텍스트 파일이 완벽하게 번역되지 않아 조금씩 틀리는
경우가 존재한다. 이를 해결하기 위해 잘못 잘라진 음성파일을 제외하거나 텍스트 파일을 수정하는 전 처리 작업을 통해 학습
데이터의 품질을 높일 수 있었다.
3. 제약조건3: 음성 학습 과정
Custom TTS에서 구현하고자 하는 다중화자의 경우 모든 화자에 대해서 각각 학습하는 것이 아니라 한번에 학습을 돌리는 것이
결과와 효율 모두 좋다. 하지만 4명의 음색이 모두 다르고 속도도 다르기 때문에 음성의 특성이 비슷한 화자끼리 모아서 학습을
진행하여 보다 좋은 결과를 얻을 수 있었다.
4. 제약조건4: 웹 어플리케이션
실시간으로 텍스트와 음성파일을 주고 받기 위한 UI가 필요했다. 현재 사용하는 개발환경이 jupyter로, 웹에서 개발할 수 있는
툴이기 때문에 웹 브라우저에서 페이지를 만들어 이를 해결했다. 기존에 flask 기반으로 제작된 웹 페이지를 수정하였다.
과제제목 : Deep Learning을 이용한 Custom TTS
10.
11.
12. 12 / 8
[ 음성 합성 기술 동향 및 적용 사례 ]
https://wowtale.net/2019/11/15/naver-clova-premium-voice/
13. 2) 개발 기간
음성 합성 기술
컨셉 선정
3월
1) 음성학습 모델 : Multi-Speaker-Tacotron
Baidu Deep Voice
Encoder
Decoder
Attention
Vocoder
Google Tacotron
개발 환경 및
학습 환경 구축
4월
음성 학습
5~10월
웹 페이지 구축
및 서비스화
11월
https://github.com/carpedm20/multi-speaker-tacotron-tensorflow
Google Tacotron
13 / 8
14. 1) 학습 환경(Smart-lab) 2) 데이터셋 품질
1. 손석희 (손석희의 뉴스룸) : 43700줄(11시간)
2. 유인나 (유인나의 오디오북) : 3670줄(5시간)
3. 코퍼스 (한국어 코퍼스) : 12800줄(3시간)
4. 이주형, 김난희 (직접 녹음): 2930줄(3시간)
5. 김호연 (직접 녹음): 550줄(1시간)
[사용한 언어]
[학습 툴]
[기본 개발 환경]
[웹 환경]
*1번 손석희는 Google SST API를 이용해 많은 양의 데이터셋
을 만들 수 있었음
*4번 이주형, 김난희는 직접 녹음 및 데이터셋 작업을 했기에
데이터셋의 양이 적지만 많은 시간 만큼의 음성 합성 품질을
얻을 수 있었음
14 / 8
15. 데이터셋 생성
Deep Voice Tacotron으로 학습
(200,000 ~ 500,000 Step)
화자 조합 선정
학습된 모델 저장
합성한 음성파일 출력
음성 주파수 대역 사진 출력
음성학습 결과 확인
유인나 손석희 코퍼스 김호연 김난희 이주형
데이터셋 생성
음성 파일 확보
음성 파일을 묵음 구간으로 자르기
음성에 맞는 텍스트 생성(.json 파일)
원하는 텍스트 길이에 맞는 텍스트 선별
올바르지 않은 음성 및 텍스트 제거
학습 과정
15 / 8
학습을 위한 최종 파일 생성 (.npz 파일)
16. 음성 서비스 구현
음성 합성에 쓸 텍스트를 길이에 맞게 조절
서비스 선택
기본 / 편지쓰기 / 모닝콜 / 브리핑 / 생일축하
Pydub으로 음성 합성 파일과 배경음악과 합성
생일축하
[웹 페이지 구성]
HOME(메인페이지)
BASIC(기본 합성)
LETTER(편지 쓰기)
ALARM(알람)
ABOUT(소개/연락/다운로드)
모닝콜
일정브리핑
음량 크기 조절
합성된 음성 출력 및 지정된 경로에 저장
16 / 8
17. 17 / 8
메인 홈페이지 기본 합성 페이지 편지 쓰기 페이지 알람 소개 페이지
소개/연락/다운로드모닝콜 페이지 일정 브리핑 페이지 생일축하 페이지
18. 1. 제약조건1 : 데이터셋 생성 과정
음성 데이터의 양이 많을수록 음성 파일과 텍스트를 매칭하기 위한 작업이 수작업으로 하기에는 시간이 너무 많이 소요됨. 어느 정도
자동화를 하기 위해 구글 STT API를 사용해서 데이터셋을 생성하는 시간을 단축시켰음. 한국어 코퍼스는 오픈되어 있는 데이터
셋이지만 텍스트 파일이 양식에 맞지 않기 때문에 파이썬 코드를 작성해서 사용하고자 하는 데이터셋으로 바꾸어서 사용함. 이렇게
API와 파이썬 코드를 통해서 데이터셋 생성 시간을 단축시킴.
2. 제약조건3 : 음성 학습 과정
구현하고자 하는 다중화자의 경우 한 화자에 대해서만 학습하는 것이 아니라 다중 화자를 한번에 학습을 돌리는 것이 결과와 효율 모두
좋음. 하지만 5명의 음색이 모두 다르고 속도도 다르기 때문에 음성의 특성이 비슷한 화자끼리 모아서 학습을 진행하여 보다 좋은
결과를 얻을 수 있었음. 또한 음성 데이터 품질을 수치적으로 판단하기 힘들기 때문에 학습할 때에 Loss 그래프와 샘플 파일들을
들어보면서 잘 합성된 모델을 결정하였음.
3. 제약조건2 : 음성 합성에 맞는 웹 기반 서비스 개발
다양한 서비스 중에서 음성 합성이 적합하게 사용 될 수 있는 서비스를 선택해서 개발해야 함. 현재 음성 합성이 사용되고 있는 분야는
기본적으로 텍스트를 기반으로 하는 서비스임. 따라서 편지를 읽어주거나, 모닝콜, 브리핑 그리고 생일 축하와 같은 텍스트 기반
서비스들을 음성 합성으로 구현해서 보다 앞으로 구현될 수 있는 서비스를 구현하였음. 또한 목소리와 배경음악을 합성할 시 두 음성
파일의 볼륨이 다르기 때문에 이를 적절히 조절해서 합성할 필요가 있음. 개인의 휴대폰에 서비스 적용을 위해 웹 어플리케이션으로
환경을 선정함. 원하는 서비스를 사용한 후에 직접 음성 파일을 재생하고 파일을 다운로드 할 수 있게 함.
과제제목 : multi-speaker-tacotron을 이용한 개인 음성 합성 서비스
18 / 8