Elucidating the Design Space of Diffusion-based Generative Models현재의 diffusion-based generative model은 불필요하게 복잡함EDMDiffusion model에 대한 구체적인 design choice을 위한 명확한 design space를 제시이를 위해 sampling, training process, score network의 pre-conditioning 등에 대한 다양한 변경 사항들을 identify 함논문 (NeurIPS 2022) : Paper Link1. IntroductionDiffusion-based generative model은 conditional/unconditional 설정 모두에서 뛰어난 합성 성능을 보이..
* Python을 기준으로 합니다 이진 탐색 (Binary Search), 파라메트릭 서치 (Parametric Search) - 개념 이진 탐색 : 정렬된 데이터가 있을 때, 검색 범위를 절반으로 줄여나가면서 값을 탐색하는 방식 반드시 정렬된 데이터에서만 사용 가능하지만, $O(\log n)$의 time complexity를 가짐 이진 탐색의 동작 배열의 시작점과 끝을 start, end로 정함 가운데를 mid로 정하고, mid에 해당하는 값이 탐색 값이면 탐색을 종료하고 값을 반환 mid에 해당하는 값이 탐색하려는 값보다 크면 mid의 오른쪽 배열에 대해 이진 탐색 수행, 작으면 mid 왼쪽 배열에 대해 이진 탐색 수행 위 2~3 과정을 반복 이진 탐색의 응용 - 이진 탐색은 탐색 범위를 계속해서 좁..
UniCATS: A Unified Context-Aware Text-to-Speech Framework with Contextual VQ-Diffusion and VocodingSemantic token과 acoustic token으로 나누어진 discrete speech token을 활용하면 text-to-speech의 성능을 향상 가능대표적으로 VALL-E와 SPEAR-TTS는 짧은 speech prompt에서 추출된 acoustic token에 대한 autoregressive continuation으로 zero-shot speaker adaptation이 가능함- BUT, 해당 autoregressive 모델은 순차적으로 수행되므로 speaker editing에는 적합하지 않고, audio code..
* Python을 기준으로 합니다 완전 탐색 (Brute-Force) - 개념 완전 탐색 : 모든 경우의 수를 확인해서 정답을 구하는 방법 완전 탐색의 적용 : 현재 위치에서 다음 위치로 이동할 수 있는 모든 조건들을 정의해야 함 - 반복적으로 적용되는 동일 조건으로 정답을 찾아야 하는 경우 - 입력 크기가 작을 때 최적해를 구해하는 경우 - 여러 조합들 중에서 최적해를 찾아야하는 경우 완전 탐색의 유형들 단순 완전 탐색 - 반복문, 조건문을 활용하여 단순하게 모든 경우의 수들을 확인하는 방법 순열, 조합 - 여러 데이터에서 경우의 수를 만들어서 활용하는 방법 - 순열 (Permutation) : 서로 다른 $n$개에서 $r$개를 선택할 때, 선택되는 순서가 중요한 경우 - 조합 (Combination)..
AdaVocoder: Adaptive Vocoder for Custom Voice Custom voice는 few target recording만을 사용하여 personal 음성 합성을 구축하는 것을 목표로 함 이때 vocoder 학습을 위한 multi-speaker dataset은 확보하기 어렵고, target speaker의 분포는 training dataset의 분포와 항상 mismatch 하게 나타나는 문제점이 있음 AdaVocoder Adaptive vocoder를 위해 cross-domain consistency loss를 도입 Few-shot transfer learning에 대한 GAN-based vocoder의 overfitting 문제를 해결하여 고품질의 custom voice를 얻음 ..
* Python을 기준으로 합니다 정렬 (Sorting) - 개념 정렬 : 데이터를 순서대로 나열하는 것 정렬의 종류 Time Complexity $O(n^{2})$ 선택 정렬 (Selection Sort) : 가장 단순한 정렬 방식으로, 배열에서 가장 작은 수를 찾아 하나씩 순서대로 정렬하는 방법 삽입 정렬 (Insertion Sort) : 현재 위치의 수를 정렬된 영역의 적절한 위치로 이동시켜 정렬하는 방법 - 거의 정렬되어 있는 경우 $O(n)$을 소모하지만 대부분의 경우, $O(n^{2})$이 소모됨 버블 정렬 (Bubble Sort) : 현재 값과 다음 값을 비교하여 다음 값이 더 작다면 위치를 교환하는 방식으로 정렬 Time Complexity $O(n \log n)$ 퀵 정렬 (Quick S..
BigVSAN: Enhancing GAN-based Neural Vocoders with Slicing Adversarial Network Generative Adversarial Network (GAN) 기반의 vocoder는 빠르게 고품질의 waveform을 합성할 수 있다는 장점이 있음 - BUT, 대부분의 GAN은 feature space에서 real/fake data를 discriminating 하기 위한 optimal projection을 얻지 못하는 것으로 나타남 BigVSAN Optimal projection을 얻을 수 있는 Slicing Adversarial Network (SAN)을 vocoding task에 적용한 모델 GAN-based vocoder에서 채택되는 least-squar..
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..