저자: Jaehyeon Kim, Sungwon Kim, Jungil Kong and Sungroh Yoon
소속: 카카오 엔터프라이즈, 서울대 Data science & AI Lab
<Motivation>
1) Vocoder에 사용된 바 있는 Glow를 TTS에 적용
- Inference speed Tacotron2 대비 15.7배 개선. 의심의 여지 없고 토론의 여지도 없지. 누군가 언젠가는 했어야 하는 일.
- Prosody control 여지 <-- 이 부분이 연구 관심사라서 이 부분을 discussion에서 집중적으로 리뷰할 생각
2) External aligner를 대체해 dynamic programming 기반 teacher aligner 도입
- 초기에 모델 파라미터가 쓰레기값인 문제 때문에 쉽게 될지 의문이지만, 이론적으로는 문제 없음. 누군가 언젠가는 했어야할 일. maximum log likelihood를 cost로 두고 클래식하게 DP로 align. 토론 여지 없음.
<Summary>
Glow나 DP에 초점을 둬서 리뷰할 게 아니라서, 그 내용은 자세히 설명하지 않겠음.
$j$ to $i$ mapping은 maximum log likelihood를 만드는 alignment를 백트래킹해서 얻어지고, search space를 줄이기 위해서 network parameter $\theta$와 alignment update을 한턴씩 iterative하게 하는 트릭을 씀.
+ DP를 쓰면 이전 프레임의 폰과 같거나 그 다음 폰과 매칭되므로 monotonous 문제가 자동으로 해결됨
$i$: text index
$j$: frame index
$z$: latent variable assumed to follow Gaussian distribution
$x$: Mel feature
- $f_{enc}$
- $c_i$ -> $\mu_i$, $\sigma_i$
- Sampling from prior
- $\mu_i$, $\sigma_i$ -> $z_j$
- $f_{dec}$
- $z_j$ + speaker id -> $x_j$
- 수식적으로 더한다는게 아니라, decoder의 모든 block에 speaker embedding 정보를 입력.
<Discussion>
- $z$ sampling할 때와 encoder에서 $z$의 stat을 뽑을 때 speaker-independenet하게 이루어진다는 것이, prosody control과 음색에 어떤 영향을 끼칠까?
- $z$ distribution을 parameterize하는 방법을 통해서 prosody를 control할 수 있을까?
- 본문에 보면 음역대와 액센트 패턴 등을 컨트롤할 수 있다고 되어 있는데, 그래프를 frequency 도메인에서 변하는 그림만 올려서 에너지는 되는지 모르겠는데, 피치만 되고 에너지는 안될 이유는 딱히 없어보임
- 음색 모델링에 활용될 수 있을까?
- 이 부분에 대해서도 Voice conversion (VC) 항목을 둬서 다루고 있긴 한데, decoder에서 $z$을 그대로 두고 speaker embedding만 바꿨을 때 합성음의 음역대가 달라진다는 내용을 VC 항목에서 다루고 있다. VC에서 음역대가 중요하긴 하지만 이 논문에서 언급한 것만 가지고 VC가 된다고 말하기는 어려울 것 같다.
<본문에 Discussion 관련된 부분>
- $z=\mu+\epsilon*T$, where $\epsilon~N(0,1)로 샘플링을 대체해서 실험
- 모델 설계 때 encoder가 $\sigma$까지 예측하게 만들었었는데, 이 값을 예측치 대신 임의의 값으로 컨트롤함.
- $\epsilon$을 컨트롤 했을 때: speaking style 변화가 생김
- $T$를 컨트롤 했을 때: pitch 의 변화가 생김
$T$를 1 이하로 낮췄을 때, 음역대가 좁아졌다. variance가 좁아지니까 음역대가 좁아지는게 뭔가 직관적으로는 그럴싸하긴 한데.
그리고 이 frequency plot으로는 pitch contour 상의 변화만 알 수 있는데, 에너지 상의 변화도 있는 건지, 아니면 없어서 pitch만 plot한 건지 의문이다. Duration이야 뭐, duration predictor를 쓰니까 scaler 곱해서 자연스럽게 일괄적으로 늘이거나 줄일 수 있고.. duration pattern을 변화시킬 수는 없겠지만.. (말의 리듬감이 방언 마다 달라지는 것)
'TTS' 카테고리의 다른 글
Naver Deview2020 "누구나 만드는 내 목소리 합성기2 (커스텀 보이스 파이프 라인)" (0) | 2021.04.12 |
---|---|
JDI-T: Jointly trained Duration Informed Transformer for Text-To-Speech without Explicit Alignment (0) | 2021.04.01 |
Blizzard challenge 2020 (0) | 2021.02.18 |
Predicting emotion from text for TTS (0) | 2020.10.19 |
FastSpeech: Fast, Robust and Controllable Text to Speech (0) | 2020.05.28 |