Period VITS: Variational Inference with Explicit Pitch Modeling for End-to-End Emotional Speech Synthesis End-to-End 방식은 acoustic model과 vocoder를 개별적으로 training 하는 cascade 방식보다 더 우수한 text-to-speech 성능을 달성할 수 있음 - BUT, dataset에 다양한 prosody나 emotional attribute가 포함되어 있는 경우 audible artifact와 unstable pitch를 생성하는 경우가 많음 Period VITS Unstable pitch 문제를 해결하기 위해 explicit periodicity generator를 사용하는 end-..
* Python을 기준으로 합니다 슬라이딩 윈도우 (Sliding Window) - 개념 슬라이딩 윈도우 : 고정 크기의 윈도우가 이동하면서 윈도우 내의 데이터를 이용해 문제를 해결하는 방법 투 포인터와 비슷하지만 슬라이딩 윈도우는 정렬 여부에 관계없이 사용 가능함 - 구간 합 계산에 주로 활용 Time complexity 측면에서 슬라이딩 윈도우는, 투 포인터와 마찬가지로 $O(n^{2})$ 이상 소모되는 배열 탐색을 $O(n)$ 내에 해결 가능함 - 구현 1. 슬라이딩 윈도우 움직이기 배열에서 고정 크기만큼의 데이터를 가져오기 위해서 slicing을 활용함 def sliding_window(arr, window_size): slide = [] for i in range(len(arr)-window_s..
Guided-TTS: A Diffusion Model for Text-to-Speech via Classifier Guidance Classifier guidance를 활용하여 target speaker의 transcript 없이 고품질의 text-to-speech를 수행할 수 있음 Guided-TTS Classifier guidance를 위해 개별적으로 train된 phoneme classifier와 unconditional diffusion model을 결합 Unconditional diffusion model은 untranscribed speech data로부터 context 없이 음성을 생성하는 방법을 학습 Phoneme classifier를 사용하여 diffusion model의 generati..
* Python을 기준으로 합니다 투 포인터 (Two Pointer) - 개념 투 포인터 : 배열에서 start, end를 나타내는 포인터를 이동시키면서 값의 위치를 탐색하는 알고리즘 배열에서 특정한 합을 가지는 수열이나 중복 값 등을 탐색할 때 사용할 수 있음 일반적으로 배열을 순차적으로 탐색하는 데에는 $O(n^{2})$이 소모되지만, 투 포인터를 사용하면 $O(n)$의 time complexity로 해결 가능하기 때문 - 구현 1. 양 끝에서 시작하는 투 포인터 현재 위치에서 일치 여부를 비교한 다음, 포인터를 옮기면서 탐색 범위를 줄이는 방식 배열의 양 끝에 포인터를 위치시킴 두 포인터의 합이 작으면 start 포인터를 오른쪽으로 이동, 크면 end 포인터를 왼쪽으로 이동 정답을 찾을 때까지 위 ..
Parallel WaveGAN: A Fast Waveform Generation Model Based on Generative Adversarial Networks with Multi-Resolution Spectrogram Generative Adversarial Network를 사용하여 distillation 과정이 필요 없는 vocoder를 구성할 수 있음 Parallel WaveGAN Waveform의 time-frequency 분포를 효과적으로 capture 하는 multi-resolution spectrogram loss와 adversarial loss를 jointly optimize 하여 non-autoregressive WaveNet을 training 함 기존의 teacher-student..
* Python을 기준으로 합니다 유니온 파인드 (Union Find), 서로소 집합 (Disjoint Set) - 개념 집합 : 순서와 중복이 없는 원소들을 가지는 자료구조 유니온 파인드 (=서로소 집합) : 교집합이 없는 두 집합 관계를 의미 해당하는 원소가 그래프에 연결되어 있는지를 판별하기 위한 자료구조로써, 일반적으로 트리를 통해 구현함 노드의 개수가 $V$이고 $V-1$개의 union 연산과 $M$개의 find 연산이 가능할 때, 유니온 파인드의 time complexity는 $O(V+M(1+\log_{2-M/V}V))$ 유니온 파인드의 연산 Find : 특정 노드의 root를 확인하는 연산 (노드가 같은 트리에 연결되어 있는지를 판별) 현재 노드의 parent를 찾는다 Parent가 root..
Textually Pretrained Speech Language Models Speech language model은 textual supervision 없이 acoustic data 만을 처리하고 생성함 Textually Warm Initialized Speech Transformer (TWIST) Pretrained textual languaga model의 warm-start를 사용하여 speech language model을 training Parameter 수와 training data 측면에서 가장 큰 speech language model을 제시 논문 (NeurIPS 2023) : Paper Link 1. Introduction 음성에는 단순한 textual context 이상의 정보가 포..
* Python을 기준으로 합니다 우선순위 큐 (Priority Queue) - 개념 우선순위 큐 : 우선순위가 높은 데이터를 가장 먼저 삭제하는 큐 즉, 우선순위 큐는 데이터를 우선순위에 맞게 정렬하고 순서대로 추출할 수 있어야 함 이때 배열이나 연결 리스트를 사용한 구현은, 우선순위에 따른 삽입과 삭제에 많은 비용이 소모됨 따라서 우선순위 큐는 힙 자료구조를 사용하여 삽입과 삭제를 $O(\log n)$ 내에 처리하도록 함 우선순위 큐에서 최소힙을 적용하면 값이 작을수록 높은 우선순위를 부여하도록 할 수 있음 반대로 최대힙을 적용하면 값이 클수록 우선순위를 부여함 - 힙은 일반적으로 최소힙으로 구현되므로, 삽입 시 음수를 취하고 추출 시 다시 -1을 곱하는 방식으로 처리 - 구현 1. heapq 라이브..
BigVGAN: A Universal Neural Vocoder with Large-Scale TrainingGenerative Adversarial Network (GAN) 기반의 vocoder는 우수한 품질을 보이고 있지만, 다양한 recording 환경과 speaker에 대한 audio를 합성하는 것에는 어려움이 있음BigVGANFine-tuning 없이 다양한 out-of-distribution scenario에 generalize 할 수 있는 universal vocoderGAN generator에 periodic activation function과 anti-aliased representation을 도입하여 inductive bias를 제공하고 합성 성능을 향상결과적으로 over-regula..