분류 전체보기 (133) 썸네일형 리스트형 딥러닝을 활용한 음성합성(TTS) 훑어보기(Vocoder) Vocoder(Mel-to-Waveform) Vocoder는 음성의 송수신을 할 때 Waveform을 보내는 것이 힘들어서 음성을 압축하고 압축한 형태에서 원래의 음성을 합성 가능하도록 하게 하여 보내는 컨셉에서 사용된 용어이다. 딥러닝을 사용한 음성합성쪽에서 Vocoder는 Text-to-Mel 모델이 만들어낸 Spectrogram을 실제 음성인 Waveform 으로 바꾸어주는 모델을 말한다. 왜 이런 모델이 필요하냐면 Spectrogram은 음성의 Magnitude 정보만 가지고 있지 Phase에 대한 정보는 갖고 있지 않기 떄문이다. 따라서 Vocoder는 실제 음성을 만들어주는 중요한 역할을 한다. 여기서 phase를 들고 있지 않다는 것은 Mel-Spectrogram을 만들 때 STFT의 결과들.. 딥러닝을 이용한 음성합성(TTS) 훑어보기(Text-to-Mel) 요 며칠 음성합성에 관해서 이거 저거 찾아보면서 뭘 보긴 했는데 정리릃 할 필요가 있겠다 싶어서 글로 남긴다. 먼저, 음성합성이란 분야는 굉장히 오래되었고 그렇기 때문에 고전적인 방법론이 많다. Unit-selection 방식과 Statistical Parametric 방식이 두 가지 주류다. 하지만 2016년과 2017년에 Wavenet, Tacotron과 같은 딥러닝을 이용한 방법이 압도적인 퍼포먼스를 보여줬고 완전히 딥러닝쪽으로 진입했다고 봐도 될 거 같다. 딥러닝을 이용한 방식은 Statistical Parametric 방식이다. 음성합성은 입력과 출력만 생각해보면 text를 모델에게 주면 그에 맞는 음성(Waveform)을 출력하는 과정이다. 그리고 이 과정은 두 단계로 나눠져 진행이 된다. 고.. 해시 테이블(Hash Table) 유튜브에 있는 MIT의 6.006 수업의 해시부분을 보고 정리한 내용입니다. Dictinoary ADT 사전(Dictionary)라고 부르는 자료구조가 있다. 파이썬의 Dictionary가 이 기능을 하는 자료구조이다. 기능은 간단하다. key와 item이 있을 때 이 사전에 key에 대응하는 item을 삽입하고(Insert), key에 대응하는 item이 현재 사전에 있는지 확인하고(Search), 특정 key에 해당하는 item을 삭제할 수 있어야 한다.(Delete) 이를 구현하기 위해서 생각할 수 있는 방법은 두 가지가 있겠다. key 끼리의 비교연산을 기반으로 balanced tree(Red-black Tree, Splay Tree, B+-tree)등을 이용해서 구현하는 것이다. 이런 자료구조를.. 백준 17955번 Max or Min 어제 처음으로 팀연습하다가 다이아 3을 풀어서 기쁜 마음에 풀이를 작성한다. 심지어 제출 한 번만에 맞췄다! 문제 요약 길이가 $N$인 원형 수열 $a$가 주어진다. $1 \le a_i \le M$ 이다. 이 때 다음과 같은 연산을 할 수 있다. $a_i$를 하나 골라서 인접한 두 수와 $a_i$의 최솟값 혹은 최댓값으로 $a_i$를 바꿔줄 수 있다. 이런 연산을 반복해서 수열 전체를 $k$로 만들기 위한 최소 연산 횟수를 계산해야 한다. $3 \le N \le 2 \cdot 10^5, 1 \le M \le 10^5$ 풀이 실제로 구해야 하는 것은 $1 \le k \le M$인 모든 $k$에 대한 답이지만 일단 이걸 $k$로 고정한 뒤에 최적의 연산 횟수를 구해보자. 일단 $k$가 존재하지 않는 수라면 .. Buffer Pool Manager - 2 Buffer Pool은 사실상 page table의 역할을 OS 대신에 하는거나 마찬가지입니다. 그리고 이런 저장장치 간의 속도 차이로 인한 캐싱 이슈는 CS에서 굉장히 고전적인 이슈입니다. OS 수업에서도 page replacement는 들어본 적이 있을 겁니다. page table에서와 같이 buffer pool도 파일 크기에 비해 작은 메모리를 잘 사용하기 위해서 replacement policy를 잘 세워야 합니다. 사실 누군가가 OS 수업에서 들었을 얘기와 겹치는 부분이 많지만 buffer pool의 replacement policy를 알아봅시다. Buffer Replacement Policies 먼저 언제 replacement가 일어나는지 알아보자. DBMS가 쿼리를 수행하면서 파일을 읽어들이.. Buffer Pool Manager - 1 DBMS는 디스크에 있는 파일에 직접 접근할 수가 없습니다. 무조건 메모리에 올린 다음에 접근이 일어나야 합니다. 디스크 I/O는 정말 느립니다. 그래서 디스크에 존재하는 파일들을 얼마나 효율적으로 메모리에 올리고 내리는지는 성능에 있어서 중요해집니다. 이런 이유 때문에 DBMS는 OS에게 이러한 작업을 맡기지 않고 직접하려고 하죠. 이러한 작업을 효율적으로 만들기 위해 신경 쓸 부분을 두 가지로 볼 수 있습니다. 먼저 같이 사용되는 비율이 높은 페이지들은 디스크 상에서 서로의 거리가 가깝게 저장하도록 하는 것입니다. 같이 사용되는 페이지들이 가깝게 위치한다면 sequential access의 이점을 늘릴 수 있는 것이죠. 이런 식으로 효율성을 늘리는 것을 spatial control이라고 합니다. 다른.. cyberduck cli로 리눅스에서 FTP로 구글 드라이브에 파일 업로드하기 제일 중요한 터미널에서 칠 커맨드 duck --username [자신의 gmail] --parallel [커넥션 갯수] --upload "googledrive:/[드라이브 상의 경로]" [로컬 파일 경로] Colab에서 사용하려고 구글 드라이브에 파일을 올리려고 했는데 파일 갯수가 많다보니 처음 올리니까 100시간 걸린다고 나오더라. 이건 도저히 못쓰겠다 싶어서 FTP로 커넥션 여러개 꼽아서 동시에 전송 가능한 방법을 알아봤다. 유료 프로그램인 파일질라 프로나 smartFTP 같은 걸 써도 되고 cyberduck이라는 무료 프로그램도 가능했다. 그런데 cyberduck이란 놈이 리눅스에선 GUI 앱이 없고 cli로만 사용 가능하다. 여기까진 괜찮은데 document가 좀 구려서 시행착오를 조금 했다. C.. 맥북에어 M1 코딩용 사용기 지난 5월 24일에 애플 매장에 가서 맥북 에어 M1을 제일 낮은 사양으로 구매했다. (7코어, 256기가 ssd, 램 8기가) 사용기를 쓰고 싶었는데 그래도 환불기간은 지날 때까지 써보고 써야되지 않을까 싶어서 지금 쓴다. [목차] 1. 어떤 목적으로 구매했는가? 왜 기본 사양으로 샀는가? 2. 좋았던 점 3. 아쉬웠던 점 4. 결론 1-1. 어떤 목적으로 구매했는가? 코딩용이다. 내가 주로 하는 코딩은 C++로 백준 문제를 풀거나 jupyter notebook으로 가끔 파이썬 코딩하거나 하는 정도이다. 리모트 머신에 접속해서 대부분의 것을 진행한다. 내가 코딩할 때 사용하는 환경을 좀 더 자세히 설명해보자. 우분투가 깔려있는 메인 노트북을 충전기 꼽아두고 집을 나온다. 그리고 삼성 노트북(window.. 이전 1 2 3 4 5 ··· 17 다음