* Python을 기준으로 합니다 트라이 (Trie) - 개념 트라이 : 문자열 탐색을 위한 트리 형태의 자료구조 어떠한 문자열 내에서 특정 단어를 검색한다고 하자 - 직관적으로 문자별 단순 비교를 사용하는 경우 $O(n^{2})$의 time complexity를 가짐 - 대신 트라이 구조를 적용하면 $O(n)$ 내에 탐색이 가능함 이때 트라이는 일반적으로 사용되는 이진 트리 형식이 아닌 다진 트리($m$-ary Tree) 형태를 가짐 장점 - 트라이를 구성하면 완전히 일치하는 문자열이 아니라 일부를 생략하더라도 탐색이 가능함 - 문자별로 트리가 만들어지기 때문에 자동적으로 정렬되는 효과가 있음 단점 - 문자의 수가 늘어날수록 메모리를 많이 사용함 - 구현 1. 노드 정의 트라이는 이진 트리가 아니라, ..
Pruning Self-Attention for Zero-Shot Multi-Speaker Text-to-Speech Personalized speech generation을 위해서는 target speaker의 limited data를 사용해서 Text-to-Speech를 수행해야 함 이를 위해 text-to-speech 모델은 out-of-domain data에 대해 amply generalize 되어야 함 Self-Attention Pruning Generalization을 위해 text-to-speech 모델의 transformer에 대해 spase attention을 통한 pruning을 적용 Attention weight가 threshold 보다 낮은 self-attention layer에서 ..
AutoVocoder: Fast Waveform Generation from a Learned Speech Representation Using Differentiable Digital Signal Processing Mel-spectrogram은 waveform으로부터 간단하게 추출될 수 있지만, mel-spectrogram에서 waveform을 생성하는 vocoder에는 많은 계산 비용이 필요함 AutoVocoder 기존 mel-spectrogram 방식에서 벗어나 inverse STFT의 differentiable implementation을 사용하여 waveform을 생성 결과적으로 기존 neural vocoder에 비해 14배 이상의 가속 효과를 달성 논문 (ICASSP 2023) : Paper..
* Python을 기준으로 합니다 트리 (Tree) - 개념 트리 : 계층형 구조를 가지는 자료구조로써 순환 (Cycle)이 존재하지 않는 그래프 트리는 재귀적인 특성을 가지는 자기 참조 자료구조임 - 즉, 트리의 모든 노드는 자기 자신을 root로 하는 다른 서브 트리로 대표될 수 있음 트리의 한 노드가 가질 수 있는 child의 수에는 제한이 없지만, 일반적으로 최대 2개의 child 만을 가지는 이진 트리를 자주 활용함 이진 트리 (Binary Tree) 모든 노드가 최대 2개의 child만을 가지고, 왼쪽과 오른쪽의 child가 구별 가능한 트리 이진 트리의 종류 정 이진 트리 : 모든 노드가 0 or 2개의 child를 가지는 트리 완전 이진 트리 : 마지막 level을 제외한 트리의 각 lev..
StyleSinger: Style Transfer for Out-of-Domain Singing Voice SynthesisSinging Voice Synthesis의 경우 높은 expressiveness를 요구하기 때문에 voice style을 모델링하는 것이 까다로움특히 기존의 모델들은 training 단계에서 target vocal attribute를 discernible 한다는 가정에 기반하기 때문에 out-of-domain 환경으로 확장이 어려움StyleSingerResidual quantization module을 통해 다양한 style을 capture 하는 Residual Style Adaptor의 적용Style attribute를 perturb 하여 generalization을 향상하는 U..
* Python을 기준으로 합니다 그래프 (Graph) - 개념 그래프 : 노드(Node)와 각 노드를 연결하는 간선(Edge)으로 구성된 비선형 자료구조 서로 연결되어 있는 객체를 다루는 경우 유용 일반적으로 그래프는 연결 조건에 제약이 없지만, 특정한 제약 조건을 가지는 경우 가중치를 통해 표현함 주요 용어 인접 (Adjacent) : 간선으로 연결된 두 노드를 adjacent 하다고 함 차수 (Degree) : 노드에 연결된 간선의 수 경로 (Path) : 간선을 따라 이동하는 경로 - 이때 경로를 구성하는 간선의 수를 경로 길이 (path length)라고 함 그래프의 종류 방향성에 따라 방향 그래프 (Directed Graph) : 두 노드를 연결하는 간선에 방향성이 존재하는 그래프 - 하나의 ..
ZET-Speech: Zero-Shot Adaptive Emotion-Controllable Text-to-Speech Synthesis with Diffusion and Style-based Models Emotional Text-to-Speech는 natural 하고 emotional한 음성을 합성할 수 있음 BUT, 기존 방식들은 unseen speaker에 대한 generalization 없이 seen speaker만을 대상으로 함 ZET-Speech 짧은 speech segment와 target emotion label을 사용하여 any-speaker zero-shot adaptive text-to-speech 수행 Zero-shot adaptive model이 emotional speech를 ..
* Python을 기준으로 합니다 해시 테이블 (Hash Table) - 개념 해시 테이블 : 키와 값을 매핑해 데이터 양에 상관없이 빠른 탐색을 가능하는 자료구조 Python에서는 일반적으로 dictionary 자료형으로 해시 테이블을 활용함 해시 테이블의 탐색은 $O(1)$의 time complexity를 가진다는 장점이 있음 - 키 자체가 해시 함수에 의해 값이 있는 index가 되기 때문 따라서 특정 값을 기준으로 조회를 여러번 해야 하거나, 특정 값과 매핑되는 값의 관계를 활용하는 경우 사용 - BUT, 완전 탐색이나 정렬, 최대/최소 등이 필요한 경우는 배열이 더 유용함 Time Complexity $O(1)$ : 조회, 값 할당, 키 가져오기 `new_dict.keys()`, 딕셔너리 초기화..
JETS: Jointly Training FastSpeech2 and HiFi-GAN for End to End Text to SpeechText-to-Speech는 2-stage 방식이나 개별적으로 training 된 모델의 cascade로 학습됨BUT, training pipeline은 최적의 성능을 위해서 fine-tuning이나 speech-text alignment를 요구함JETSSimplified pipeline을 구성해 개별적으로 학습된 모델들보다 뛰어난 성능을 발휘하는 end-to-end 모델을 제시Alignment module을 사용하여 FastSpeech2와 HiFi-GAN을 jointly trainingAlignment learning objective를 채택하여 external al..