'2021/02'에 해당되는 글 2건

1. 제가 좋아하는 사람이 있습니다. 이 사람이 목소리 연기가 꽤 괜찮아서 어쩌다보니 목소리 데이터를 모을 수 있었습니다. 다만 쓸 만한 것이 다 합쳐서 2시간이 될까 말까 합니다.

 

2. 그리고 Tacotron이란 것이 있습니다. 딥러닝을 사용해서 일종의 TTS를 만드는 프로젝트인데 한국어 Tacotron이 오픈소스로 꽤 잘 나와 있습니다.

https://github.com/hccho2/Tacotron2-Wavenet-Korean-TTS

 

소스가 올라온지 2년 정도 되긴 했지만 제가 fork해서 일단 필요하면 계속 발전 시킬까 생각은 하고 있습니다. 기존 프로젝트에서 Requirement만 일단 모아놓고 추후에 가능하면 Tensorflow 2.x 로 가능할지 찾아보고 있습니다. 물론 제 성격상 언제 할 수 있을지 아무도 모릅니다.

 

3. KSS 데이터셋이라는 것이 있습니다. 한국어 음성 딥러닝을 공부하는 데에 있어서 정말 눈물나게 고마운 데이터입니다. 어떤 성우분인지 모르지만 12시간 분량의 문장을 녹음해 주었습니다.

https://www.kaggle.com/bryanpark/korean-single-speaker-speech-dataset

 

이걸 기반으로 음성인식도 하고 반대로 TTS도 만들고 하는데 쓰입니다. 연구소나 학교에서 정말 유용하게 쓰입니다. 대신

CC BY-NC-SA 4.0

이것 때문에 상업적인 이용은 불가능합니다.

 

그래서 위의 것을 다 합치면 무엇이냐...

 

Tacotron을 사용해서 제가 좋아하는 사람의 목소리를 TTS로 만들고 싶었습니다.

그래서 처음에는 제가 가지고 있던 2시간 분량의 좋아하는 사람의 목소리를 학습 시켜보았습니다.

결과는... 말을 하다 맙니다. 그래프를 보니 희미..합니다.

 

 

그래서 들어보니 한마디 나오려다가 옹알이를 합니다.

 

해결방법은 더 많은 학습데이터를 쏟아부으면 된답니다. 그런데 녹음을 부탁하기가 좀 껄끄럽습니다. 바쁠 수도 있고요.

그래서 다른 방법을 찾아보니 잘 만들어진 데이터셋과 함께 학습을 시키면 적은 데이터로도 괜찮은 품질이 나온다고 합니다.

 

그래서 Multi로 KSS데이터셋을 사용해 KSS와 그분의 목소리를 함께 학습을 시켰습니다.

 

결과는... KSS데이터셋으로 한 것만 멀정히 말합니다. 그런데 해당 학습 모델에서 KSS와 제가 모은 그분의 목소리가 섞이는 것이 보이더군요.

 

그분에게 제 TTS데이터를 보내봤습니다. 반응이 좋더군요. 자기 목소리랑 비슷하다고요.

근데...그거 KSS에 살짝 본인 목소리 데이터를 첨가한겁니다. (KSS12시간+그분2시간)

그래서 살짝 발상을 전환해서 제 데이터에 KSS데이터의 1시간분량을 첨가해봤습니다...

결과는... 꽤 만족스럽습니다. 전보다 발음도 괜찮고 일단 alignment는 잘 잡습니다. 대신 데이터셋을 새로 구성해서 처음부터 다시 학습 중입니다...

현재 데이터셋 설정
1. Multi-Speech
2. KSS Speech 12Hour
3. 그분+KSS 1hour

일단 현재는 만족

,

어마어마하게 작은 리눅스가 있습니다.

물론 작지만 그럭저럭 있을 것은 다 있습니다.

 

실제로 어마어마하게 작아서 GUI를 가진 이미지가 꼴랑 16MB입니다.

물론 16MB는 32비트용입니다. 64비트 버전도 있지만 이건 조금 용량이 큽니다.

http://tinycorelinux.net/

다만 역시 이것저것 없는 만큼 우분투 수준의 편리함은 없습니다.

그리고 패키지 매니저를 tce라는 별개의 것을 쓰다보니 호환성이 조금 떨어집니다.

 

하지만 이 정도면 똥컴의 희망이라 할 수 있습니다. 컴퓨터가 아직 죽지 않을 수 있는데 이것저것 안 돌아간다고 버릴 수는 없잖아요?

 

그래서 이 녀석을 써보기로 했습니다.

 

그리고 이렇게 작은 것은 그냥 쓰기 힘드니 약간의 커스터마이징으로 이것저것 추가한 다음 쓰는 것이 좋습니다.

https://github.com/elazarl/customize_tinycorelinux

 

elazarl/customize_tinycorelinux

Scripts to easily customize a tinycorelinux ISO. Contribute to elazarl/customize_tinycorelinux development by creating an account on GitHub.

github.com

여기 있는 스크립트를 이용하면 파일을 추가하고 이리저리 삽질하면 뭐라도 만들어 질 수 있겠지요.

대신 그만큼 고생은 하겠지만 이 정도면 상당히 훌륭합니다.

 

문제는 역시....이것만 가지고 뭘 하기가 어렵다는 것이겠네요.

 

우분투 환경에서 한번 Tiny Core Linux의 커스터마이징을 해봅시다.

 

우선 Tiny Core Linux의 iso파일을 다운로드 받습니다. 저는 Core버전 16MB짜리를 다운로드 받았습니다.

http://tinycorelinux.net/downloads.html

 

Downloads Tiny Core Linux

The Core Project, as suggested by our name, is not a turnkey desktop distribution. Instead we deliver just the core Linux from which it is quite easy to add what you want. We offer 3 different x86 "cores" to get you started: Core, TinyCore, and our install

tinycorelinux.net

그리고 다음 스크립트를 다운로드 받아서 압축을 풀어 놓습니다.

스크립트를 압축 푼곳에 다운로드 받은 ISO파일을 함께 위치 합니다.

 

그러면 이렇게 되겠지요.

 

그리고 터미널에서 이 위치에 들어 온다음 다음과 같이 명령을 칩니다.

tinycore-extract.sh TinyCore-current.iso

이러면...

 

이렇게 iso와 core라는 폴더가 만들어집니다.

이제 core쪽을 건드려서 이것저것 추가하고 다시 tinycore-repack.sh를 실행하면 커스터 마이징이 됩니다.

 

대신 Debian처럼 편리하게 패키지가 설치되는 것이 아니다보니 좀 어렵습니다.

 

그래서 Debian의 것을 TCZ화해서 가져오는 경우가 많더군요. 물론 이것도 녹록치는 않긴 합니다...

 

개인적으로 scrcpy를 실행시켜서 안드로이드 화면을 지속적으로 미러링 하는 것을 만들고 싶은데 이게 맘처럼 잘 안 되네요.

,