본문 바로가기

전체 글

(159)
Transfer Learning from Speaker Verfication to Multispeaker Text-To-Speech Synthesis 리뷰 1. Introduction 본 논문은 2018년 NIPS에서 발표된 Transfer Learning from Speaker Verfication to Multispeaker Text-To-Speech Synthesis입니다. 공식은 아니지만 유명한 구현체는 여기에 있습니다. 본 논문의 목표는 데이터를 적게 사용하며 많은 화자의 자연스러운 목소리를 만들 수 있는 TTS 시스템입니다. 특히, 훈련 도중에 모델이 보지 못했던 화자의 목소리를 추가적인 파라미터의 변경 없이 만들어 내는 것이 목표입니다. (Zero-shot Setting) 이를 위해 제안하는 방법은 Speaker Modeling을 담당하는 모듈을 분리하여 훈련시킨 뒤에 대상 화자의 목소리를 해당 모듈에 입력으로 넣어 출력으로 Speaker Em..
도커 스크립트에서 MySQL root 패스워드 없애기 mysql 컨테이너를 도커로 실행할 때 "-e MYSQL_ROOT_PASSWORD="처럼 루트 비밀번호를 그대로 쓰는 경우가 있다. Docker-Compose에서는 아마 저걸 그대로 쓰게 될텐데 비밀번호가 공개되는게 마음에 안들어서 저걸 안넣을 방법을 고민했다. 떠오른 방법은 호스트의 환경변수를 실행스크립트에 넣자는 거였다. 그래서 호스트 머신의 global 환경변수로 MYSQL_ROOT_PASSWORD를 넣어주기로 했다 환경변수를 global하게 추가하려면 /etc/profile.d/ 디렉토리에 스크립트를 넣어주면 된다. 설명을 보면 리눅스에서 부팅을 할 때 /etc/profile.d/*에 해당하는 스크립트를 한 번 실행한다고 한다. 링크 그래서 아래처럼 추가를 해줬다. mysql_passwd.sh에 ..
2022 카카오 블라인드 코테 2차 후기 어제 카카오 블라인드 2차 코테를 봤다. 작년에 2차 통과해서 솔직히 아무 준비도 안하고 봤다. 굉장히 오만했다고 볼 수 있다. CS테스트에서도 꽤 틀렸을거고 API로 시스템 구현하는 테스트는 마지막에 800등쯤 됐다. 베이즈 정리로 식 세워놓고 분모 확률을 계산 안했다. 그랬으니 돌아갈리가 있나. 모든 실력이 자꾸 같은 값으로 수렴하는 걸 보면 뭔가 크게 잘못됐다는걸 빨리 눈치 채고 디버깅을 하든 식을 수정하건 했어야 하는데 이럴리가 없는데 하면서 무지성으로 파라미터나 조금씩 바꿔가면서 돌리다가 끝났다. 끝나고 나서 매몰되가지고 고민해본 결과 식을 제대로 고치고 샘플을 좀 더 제대로 뽑았다면 잘 돌았을거 같다. 매칭 알고리즘은 뭐 그냥 현재 추정 실력 상으로 35~40분 이상 나올 사람끼리 매칭해주면 ..
딥러닝을 활용한 음성합성(TTS) 훑어보기(Vocoder) Vocoder(Mel-to-Waveform) Vocoder는 음성의 송수신을 할 때 Waveform을 보내는 것이 힘들어서 음성을 압축하고 압축한 형태에서 원래의 음성을 합성 가능하도록 하게 하여 보내는 컨셉에서 사용된 용어이다. 딥러닝을 사용한 음성합성쪽에서 Vocoder는 Text-to-Mel 모델이 만들어낸 Spectrogram을 실제 음성인 Waveform 으로 바꾸어주는 모델을 말한다. 왜 이런 모델이 필요하냐면 Spectrogram은 음성의 Magnitude 정보만 가지고 있지 Phase에 대한 정보는 갖고 있지 않기 떄문이다. 따라서 Vocoder는 실제 음성을 만들어주는 중요한 역할을 한다. 여기서 phase를 들고 있지 않다는 것은 Mel-Spectrogram을 만들 때 STFT의 결과들..
2022 KAKAO 블라인드 공채 1차 코딩테스트 후기 카카오 2022 블라인드 공채 1차 코딩 테스트가 오늘 있었다. 문제 설명이나 풀이가 어느정도까지 허용되는지는 문제에 대한 감상과 어떻게 풀었는지만 간략하게 쓴다. 1시간 반정도 남기고 올솔했다. 작년엔 5솔했던거 같은데 실력이 늘긴 했다. 풀면서 느낀거지만 예제를 꽤 강하게 주는 거 같다. 문제 순으로 유형 설명과 간단한 풀이다. 문자열로 정점과 간선이 주어지고 이분 그래프처럼 간선을 이어준 뒤에 indegree가 k 이상인 정점들을 체크하는 문제였다. 제한이 넉넉해서 그냥 map 때려박아도 된다. 솔브드 기준으로 실버 중하위일 거 같다. 주어진 조건의 문자열을 찾는 쌩구현 문제. 다만 소수 체크가 필요했는데 최대로 나올 수 있는 소수가 어느정도일지 생각해보고 코드를 짰다면 잘하셨다. 솔브드 기준으로는..
딥러닝을 이용한 음성합성(TTS) 훑어보기(Text-to-Mel) 요 며칠 음성합성에 관해서 이거 저거 찾아보면서 뭘 보긴 했는데 정리릃 할 필요가 있겠다 싶어서 글로 남긴다. 먼저, 음성합성이란 분야는 굉장히 오래되었고 그렇기 때문에 고전적인 방법론이 많다. Unit-selection 방식과 Statistical Parametric 방식이 두 가지 주류다. 하지만 2016년과 2017년에 Wavenet, Tacotron과 같은 딥러닝을 이용한 방법이 압도적인 퍼포먼스를 보여줬고 완전히 딥러닝쪽으로 진입했다고 봐도 될 거 같다. 딥러닝을 이용한 방식은 Statistical Parametric 방식이다. 음성합성은 입력과 출력만 생각해보면 text를 모델에게 주면 그에 맞는 음성(Waveform)을 출력하는 과정이다. 그리고 이 과정은 두 단계로 나눠져 진행이 된다. 고..
신촌지역 대학교 프로그래밍 동아리 연합 알고리즘 캠프 참가기 한글이름은 너무 길기 때문에 ICPC Sinchon Algorithm Camp라고 하자. 이것도 길다. 그냥 신촌 알고리즘 캠프로 줄여 부르자. 신촌연합 알고리즘 캠프는 이번 여름으로 벌써 4번째 진행되고 있는 알고리즘 캠프이다. 나는 작년 여름서부터 이번 캠프까지 총 3번 참여했다. 나는 재작년 8월 쯤에 코테 공부 목적으로 PS를 시작하고 학교 학회에는 작년 1학기 시작과 함께 들어갔다. 그리고 작년 여름방학 때 알고리즘 캠프를 한다고 해서 수강자로 참여하게 되었다. 작년 여름은 캠프가 다음처럼 운영되었던 걸로 기억한다. 주 1회 혹은 2회 꼴로 강의를 진행한다. 강의는 라이브 스트리밍 혹은 녹화로 진행된다. 강의마다 수강생이 풀어야 하는 필수문제가 주어진다. 이 외에도 강의 내용을 연습할 수 있는 ..
해시 테이블(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)등을 이용해서 구현하는 것이다. 이런 자료구조를..