일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 우분투비트확인
- CrossAngle
- 봉사활동
- 프로그라피
- tacotron
- 쇠막대기
- 프로그래머스
- 개발자회고
- 서버로그
- Xangle
- graphicdriver
- texttospeech
- 인천남중
- 한빛미디어
- 놀이동산의슈퍼컴퓨터를작동시켜라
- 서구동구예비군훈련장
- 인하대학교
- 나는리뷰어다
- 개발자를위한파이썬
- 로그남기기
- intell
- 2019회고
- 노트북덮개
- machinelearning
- 인하멘토링
- 타코트론
- 신영준
- 심플소프트웨어
- 결과를얻는법
- jaypark.dating
- Today
- Total
jc.jang
책 읽어주는 딥러닝 본문
- 데이터
- 모델
- 결과
- 데이터 프로세싱
- 음성추출
- 문장 별 자르기
- 텍스트 <-> 음성 맞추기
- 모델
- 타코트론
- 딥 보이스2
- 인코더 Encoder
- 디코더 Decoder
- 어텐션 Attention
- 보코더 Vocoder
인코더의 역할?
ㄱ | ㄴ | ㅏ | ㅑ |
0.7 | 0.3 | 0.1 | 0.9 |
0.5 | 0.0 | 0.0 | 0.5 |
0.9 | 0.7 | 0.3 | 0.1 |
1.0 | 0.5 | 0.2 | 0.2 |
... | ... | ... | ... |
ㄷ | ㄷ | ㅣ | ㅇ | ㅈ | ㅏ | ㄱ |
ㅁ | ㅕ | ㅇ | ㅈ | ㅏ | ㄱ | ㄷ | ㄷ | ㅣ | ㄷ | ㅗ | ㅇ | |
카르페라는 문장을 말한다고 했을 때 가장 먼저 pre-net 모듈을 거친다. pre-net은 FC-ReLU-Dropout을 2번 거친 것이다.
그다음 CBHG라는 모듈을 거친다.
CBHG = 1-D Convolution Bank + Highway network + Bidirectional GRU
크게 보면 그냥 RNN
디코더가 하는 역할은?
이전에 만든 스팩트로그램을 입력으로 받고 -> Decoder -> 다음 스팩트로그램 생성한다.
스팩트로그램: 음성을 숫자로 표현하는 여러가지 방법 중 하나이다. 스팩트로그램으로 음성을 만들 수 있다.
디코더는 처음에 입력으로 <GO> frame을 받는데 이것은 학습되는 것이고 어떤 숫자들이다.
어텐션은 나중에 설명
이후에는 RNN을 한다.
왜 1/N로 줄이냐면 만약 '가'라는 음성이 있으면 파형으로 생각하면 잘게잘게 나눠보면 '가', '가', '가', '가', '가', '가', '가', '가', '가', 이게 반복 될 것이다.
'가ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ' 이런식...?
그래서 굳이 똑같은게 여러갠데 많이 예측할 필요없고 n개의 스팩트로그램만 예측한다.
디코더의 결과로 n개의 스팩트로그램의 리스트를 얻게 된다. 스팩트로그램은 음성이 되기 직전의 숫자들이다.
어텐션을 설명하기전에 제일 마지막 모듈인 보코더 부터 설명합니다.
보코더의 역할은 스팩트로그램을 입력으로 받아서 음성을 만들어주는 것이다.
여기서 또 CBHG를 거친다.
스팩트로그램을 음성으로 만들어주는 방법이 여러가지 있는데 그 중 하나인 그리핀-림(Griffin-Lim)알고리즘을 이용해서 음성으로 만들었다.
그리고 마지막으로 가장 중요한 어텐셜 Attention
왼쪽 초록색 배열은 인코더의 출력으로, 텍스트 임베딩한 결과물이다. 텍스트 임베딩과 디코더를 잘 합쳐주는 모델이 어텐셜이다.
Attention -> 어디에 집중할 것인가?
어디에 집중할 건지는 학습을 통해 알아서 계산한다.
어떻게 만들어지는지 예제를 봅시다
어텐션이 중요한 이유가 뭘까?
일반화 때문이다.
학습하지 않은 것을 얼마나 잘 말 할 수 있는가?