본문 바로가기

전체 글

(26)
FastSpeech: Fast, Robust and Controllable Text to Speech Transfer learning 관점에서 볼 때 이 논문에서의 source task는 합성기이며, target task는 alignment가 정확하고 합성시간이 빠른 합성기이다. 이 논문에서는 두가지 목적을 위해 transfer learning을 한다. 첫째는 추론 시간 단축이고, 둘째는 alignment 개선이다. 1) 먼저 추론 시간 단축 측면에서 설명하겠다. 이 합성기 이전의 합성기들은 비록 CNN이나 Transformer 구조를 사용하여 훈련 시간을 단축할 수 있다고 해도 추론 시간은 단축하지 못했다. 왜냐하면 합성기의 입력 텍스트와 출력 프레임의 alignment를 추론 시간에 프레임 바이 프레임으로 auto-regressive하게 예측해야 했기 때문이다. 하지만 이 논문에서는 ‘Feed-for..
CHiVE: Varying prosody in speech synthesis with a linguistically driven dynamic hierarchical conditional variational network
Pitchtron: Towards audiobook generation from ordinary people’s voices Source code: https://github.com/hash2430/pitchtron/ Audio samples Prosody Reference GST Soft pitchtron Hard pitchtron Standard Korean neutral dialogue Standard Korean neutral dialogue Standard Korean emotive dialogue Standard Korean emotive dialogue Kyoungsang dialect Kyoungsang dialect Cheolla dialect Cheolla dialect Prosody transferability and vocal range scalability Scale Reference GST Soft p..
Expressive TTS and prosody transfer 중립적 발화(감정 표현이나 개성 표현이 없는 발화)에 대한 합성기의 자연성이 확보된 이후, 감정, 억양 등의 요소를 컨트롤해 좀더 몰입도 있는 합성음을 만들어 오디오북이나 모바일 어플리케이션, 유튜브 컨텐츠 제작 등에 활용하고자 하는 수요가 발생하였다. 본 보고서에서는 이 중 5가지 접근에 대해 비교 분석을 하고자 한다. 이 보고서와 여타 논문에서는 개성표현을 위한 특성으로 프로소디(prosody)와 스타일( style)이라는 단어를 혼용해서 사용한다. 연구에서 사용하는 프로소디 또는 스타일이라는 표현은 주관적 판단의 영역이니만큼 연구자마다 조금씩 편차가 있으므로 논의를 시작하기에 앞서, 프로소디 또는 스타일의 의미를 표명하겠다. 앞으로 이 보고서에서 사용될 프로소디 또는 스타일이라는 용어는 첫번째 소개..
torch mm, bmm, matmul 차이 위의 세가지 함수들은 모두 사용법이 다르고 사람들마다 자기 편한대로 맞게만 쓰면 되지만, 내가 위의 세가지 함수들을 쓰는 경우는 다음과 같다. 우선, 나는 matmul은 잘 쓰지 않는다. 왜냐면 matmul은 너무 많은 것을 내부적으로 구현해놨고, 이에 따라 내가 헷갈릴 수도 있다. 최대한 explicit하게 코드를 쓰는것을 지향하기 때문에 matmul은 불가피한 경우가 아니면 쓰지 않는다. mm은 matrix multiplication으로, [n, m] x [m,p] = [n,p] 를 구현한다. bmm은 batch matrix multiplication으로, 두 operand가 모두 batch일 때 사용한다. [B, n, m] x [B, m, p] = [B, n, p] matrix가 아니고 벡터는? m..
Tensorboard와 OSError: [Errno 12] Cannot allocate memory 에러 Project를 하면서 여러 변수를 바꿔보고 모델도 바꿔보고 꽤 많은 것을 시각화 하고 있다. 그랬더니 Tensorboard가 memory를 85% 잡아먹으면서 swap memory까지 꽉차서 모델 inference 시에 "OSError: [Errno 12] Cannot allocate memory" 에러가 났다. Swap memory를 늘릴까도 했지만 이미 59G인데 그렇게까지 해야하나 싶어서 tensorboard를 잠시 중단하고 inference함으로써 문제를 해결했다. 이 문제로 성가신 일이 또 발생하면 swap memory를 늘려야지. 아래는 swap memory 늘리는 방법을 자세히 적은 블로그 글이다. https://www.digitalocean.com/community/tutorials/ho..
shutil 패키지를 이용해서 python에서 파일 복사/이동/삭제하기 Shell command Python method cp src dst shutil.copy(src, dst) mv src dst shutil.move(src, dst) cp -r src dst shutil.copytree(src, dst) rm -r src shutil.rmtree(src) rm src os.remove(src) shutil에 rm은 없어서 os.remove()를 써야 함. src나 dst가 상대경로이거나 dir이거나 file이거나 등등의 상황들은 shell command에서 사용하는 방법과 동일해서 적지 않았음. 이 글은 shell command에 익숙한 사람(나)을 위해 썼음.
E2E TTS에서 postnet이 필요한 이유 처음에 Tacotron에서는 griffin-Lim vocoder를 사용했으니, postnet을 써서 mel spectrogram을 linear spectrogram으로 바꿨지만, 그 이후에 Grifiin-Lim vocoder를 안쓰는 시스템에서도 대부분 postnet을 쓴다. 그 이유는! decoder가 프레임 예측을 causal하게 했기 때문에! non-causal하게 convnet을 사용해 backward context까지 반영하려고 postnet이 필요한 것이다.