라즈베리파이는 작은 컴퓨터입니다.

그리고 성능은 그 크기에 걸맞게 그리 좋지 못하지요.

 

하지만 그럭저럭 좋은 성능에 굉장히 저렴한 가격으로 쓸만한곳이 상당히 많습니다.

 

이전에 저는 Tacotron으로 무언가를 하나 만들었습니다. 어찌되었건 이를 다시 서빙해야 했는데 코드는 python의 기본 적인 웹서버로 웹페이지에서 받아볼 수 있게 어찌저찌 만들었습니다.

 

tacotron의 오픈소스를 만든 keithito의 demo_server 소스를 이용해서 hccho2의 한국어 tacotron을 데모를 쓸 수 있게 어찌저찌 잘 수정했습니다.

https://github.com/MoorDev/Tacotron2-Wavenet-Korean-TTS/blob/master/run.py

 

그런데 이걸 서비스할 방법이 마땅치 않습니다. 무료로 유명한 구글의 컴퓨트 엔진을 쓰려고 했는데 RAM이 모자란 탓인지 자꾸 멈춥니다. 심지어 pip도 제대로 안 되더군요.

 

서버를 구축하려면 pip freeze 된 것을 다시 설치해야 하는데 이거 자체가 안 되니 환장할 노릇입니다.

 

그래서 제 옆에 있던 라즈베리파이에 한번 넣어보기로 했습니다. 그래도 ARM칩셋이지만 램도 어느정도 충분하고 학습이 아닌 결과물만 뽑으면 되는 것이니까요.

 

 

우선 제가 개발한 파이썬 환경을 Freeze 합니다.

 

개발및 학습 PC에서

pip freeze > requirements.txt

 

그리고 만들어진 requirements.txt는 다른 곳에서 쓸 때도 그대로 환경을 구축하는데 쓰이게 됩니다. 

 

그 다음 라즈베리파이에 OS를 설치합니다.

이건 제가 따로 말 안 해도 방법이 워낙 많으니까 넘어갑니다. 대신 ssh를 활성화 해야 하는건 잊으면 안 됩니다.

ssh 활성화는 구운 SDCARD에 boot파티션에 ssh란 파일이름으로 아무 파일이나 하나 만들어주면 됩니다.

무선인터넷을 바로 잡는 법은 역시 boot파티션에 wpa_supplicant.conf 라는 이름으로 

내용을 다음과 같이 적으시면 됩니다.

country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="공유기이름"
    psk="공유기비밀번호"
}

왜 국가가 US로 되어 있냐면 KR로 하니 라즈베리파이가 못 잡습니다. 그래서 그냥 호환되는 US로 했습니다. 일단 잡히면 되는거지요.

 

그 다음 개발환경이자 Python 폴더 자체를 통째로 넣어줍니다. 보통 Tensorflow 개발 PC는 리눅스고 라즈베리파이OS도 리눅스이니 충분히 복사가 가능할 것입니다.

 

이걸 통째로 SDCARD에 넣어줘야 합니다. 만약 필요하면 경로도 최대한 같게 해주는 것이 중요하지요.

 

그리고 라즈베리파이를 부팅하면... SSH로 접속할 수 있게 됩니다. IP주소를 모르겠다면 공유기설정에서 찾던가 아니면 다른 방법을 찾아야 합니다.

ssh pi@라즈베리파이주소

기본 비밀번호는 raspberry 인데 해킹 방지를 위해 꼭 sudo raspi-config에서 비밀번호를 바꾸는 작업을 해 줍시다.

 

이제 파이썬 버전을 맞추는 작업이 필요한데 제가 사용한 라즈베리파이OS는 데비안 10(Buster)기반입니다. 기본으로 Python 3.7을 사용합니다.

그에비해 저는 Python3.6을 기본으로 사용했습니다. 그래서 얼마나 다른가 봤는데... 예약어 차이정도라 크게 문제는 없을 정도네요. 그래서 그냥 쓰기로 했습니다. 만약 3.8이었다면 많이 차이나기 때문에 Python을 수동으로 설치하는 수고가 필요했을 겁니다.

 

그리고 requirements.txt를 사용해서 필요한 패키지를 설치합니다.

sudo pip3 install -r requirements.txt

 

이제 어마어마한 다운로드를 보일텐데 ARM칩과의 차이로 인해 일부 문제가 있었습니다.

 

저는 우선 LLVM문제가 일어났습니다. 데비안 Buster는 LLVM-7을 사용하는 반면 저는 LLVM-10을 사용했습니다.

그래서 LLVM-10을 설치했습니다.

 

그런데 수동으로 해야합니다.

https://releases.llvm.org/download.html

 

LLVM Download Page

If you'd like access to the "latest and greatest" in LLVM development, please see the instructions for accessing the LLVM Git Repository. The major changes and improvements that the development version contains relative to the previous release are listed i

releases.llvm.org

여기서 제 라즈베리파이는 ARM-32비트이므로 ARMv7을 선택합니다. 64비트 버전도 나오고 있으니 이를 확인해야합니다. 64비트라면 AArch64를 다운로드 받으세요.

라즈베리파이에서

wget github.com/llvm/llvm-project/releases/download/llvmorg-10.0.1/clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz

tar -xvf clang*.xz

cd clang+llvm (탭)

sudo cp -R * /usr/local

 

이걸로 llvm-10의 설치를 끝냈습니다. 그러고나니 제일 중요한 Tensorflow가 문제가 생기더군요.

일단... 안 깔립니다. 원래 설치가 되어야 정상인데 간혹 거부가 일어나나 봅니다.

sudo pip3 install tensorflow==(원하는버전)

이걸로 설치가 되어야 정상이지만 설치가 제대로 안된다면

https://qengineering.eu/install-tensorflow-1.15.2-on-raspberry-pi-4.html

 

Install TensorFlow 1.15.2 on Raspberry Pi 4 - Q-engineering

A thorough guide on how to install TensorFlow 1.15.2 on your Raspberry Pi 4. Build from source code with Bazel for Python 3 and C++ API.

qengineering.eu

여기를 참고합니다.

 

sudo apt-get install libatlas-base-dev libatlas3-base

sudo apt-get install libhdf5-dev libc-ares-dev libeigen3-dev

sudo pip3 install h5py==2.10.0

wget github.com/Qengineering/Tensorflow-Raspberry-Pi/raw/master/tensorflow-1.15.2-cp37-cp37m-linux_armv7l.whl

 

sudo -H pip3 tensorflow-1.15.2-cp37-cp37m-linux_armv7l.whl

 

이걸로 Tensorflow 1.15.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를 실행시켜서 안드로이드 화면을 지속적으로 미러링 하는 것을 만들고 싶은데 이게 맘처럼 잘 안 되네요.

,

최근 스마트폰은 다크모드를 지원합니다.
야간의 시인성을 높이고 AMOLED의 수명을 위해서 배경을 검게 하는 것인데요.

본래 사람은 검정화면보다 흰색화면을 더 선호하던 탓에 대다수 앱과 웹페이지들은 하얀색 배경을 상정하고 만들어졌습니다.

그나마 2020년 현재에는 다크모드가 보편화되서 좀 상황이 나은 편이지만 업데이트가 끊겼거나 그냥 실력부족으로 혹은 기타 이유로 아직 흰색배경을 쓰는 경우가 많습니다.

하지만 방법은 있습니다. 구글도 이를 알고 강제 다크모드라는 것을 개발자옵션에 넣었고 또 문제가 되는 내비바는 써드파티 앱으로 해결이 가능합니다.

우선 강제다크모드는 안드로이드10 이후에 개발자 옵션에 있습니다. 다크모드에 관심이 있으실 정도면 개발자옵션을 활성화 하는것 정도는 아실거라 믿고



설정-다크 모드 강제 적용에 체크를 하는 것으로 다크모드가 지원이 안되는 앱(예 : 티스토리)에서 강제로 검정배경을 만들 수 있습니다.


 

그런데 다크모드를 켜도 이렇게 나오는 경우가 있습니다.
이 경우에는 앱설정에서 내비바를 강제로 색을 지정한 경우입니다. 이러면 기껏 만든 부분에 하얗게 더 경계를 만들어서 AMOLED에 악영향을 끼칩니다.

앱에따라 내비바설정이 필요한 경우가 있지만 보통은 그냥 안드로이드 4.4이전처럼 까만색이 더 디스플레이 수명에 좋습니다.

이때는 써드파티앱을 쓰시면 됩니다.

https://play.google.com/store/apps/details?id=pl.damianpiwowarski.navbarapps

Navbar Apps - Google Play 앱

Tired of your boring Navigation Bar? Make it awesome! Turn it blue, make it red - anything you want. Select cool image as background or match color automatically to fit it to running app. Whatever you choose, it will be awesome! And then you can add some d

play.google.com

이 앱은 내비바에 각종 색을 입히거나 강제설정을 할 수 있는 앱입니다. 만약 돈을 쓴다면 더 예쁜 내비바도 만들 수 있지만 우선은 색만 바꾸는 것이니 그냥 무료버전으로도 충분합니다.

앱을 실행하면 다음과 같이 뜹니다.

여기서 LET'S DO IT!
Allow App to draw over other apps를 눌러서 내비바앱이 다른 앱위에서 돌아갈 수 있게 하자
여기서 권한을 주면 된다.

접근성 서비스에서 내비바를 쓰기로 허가하자.

설치된 서비스 안에 들어가면 NavBar가 있다.
그리고 배터리최적화(Battery Optimization)관련 경고가 뜬다면 시키는 대로 Turn off하자.


그리고 Change color of navigation bar에서 Static color를 선택하고 다음과 같이 설정합니다.

 Enter hex color를 누르고 ffffff를 쓰셔도 됩니다.

이제 모든 부분을 검정색으로 나오게 할 수 있게 되었습니다!

,

우분투...
정말 많은곳에서 쓰이는 대중적인 배포판입니다.

그리고 Gnome을 가장 많이 쓰는 데스크탑환경으로 만든 1등공신입니다.

그런데 최근 우분투20.04를 쓰고 많이 실망했습니다.
그놈3가 아직도 불안정한건지 그냥 우분투가 불안정한건지 제 AMD시스템에서 불안한 모습이 자꾸 보입니다.

Xorg나 Wayland나 둘다 불안하니 쓰기가 참 뭐합니다.
AMD CPU에 AMD GPU인게 문제인지 아니면 그냥 배포판문제인지..

이 쯤되니 그냥 우분투18.04로 되돌아가고 싶다는 생각도 듭니다.

아니면 그냥 데비안도 생각하고 있습니다만 데비안은 gallium nine을 쓰기가 참 애매해서 그냥 Arch로 가는것도 고려중이고 참 이것저것 생각하게 만드네요.

뭐... 그렇지만 그래도 편한건 어쩔수 없으니 우분투로 결국 돌아올것 같긴하지만 이번에 좀 실망이 큽니다.

,

이건 약간의 편견일수 있습니다.
윈도를 서버로 쓴다... 나쁜생각은 아닙니다. 그리고 편한걸로 따지면 윈도가 나쁜게 아니지요. 그런데 이것 하나는 생각해야합니다.

어째서 서버프로그램들은 GUI보다 CLI를 더 선호하는가?
그리고 서버로 쓰이는 리눅스, 유닉스들은 CLI로 쓰이는게 많은가?

윈도서버는 태생적으로 GUI를 갖추고 태어납니다. 괜찮은 방식입니다. GUI로 관리하면 배우기 편하고 쓰기 편합니다. 그런데 이미 쓰이고 있는 프로그램들이 그렇지 않다는게 문제입니다.

왜냐하면 서버프로그램들은 최상의 안정성을 지녀야합니다. 그러기 위해서는 안 쓰이는 기능은 쳐내서 이것으로 인한 문제를 없애야합니다. GUI는 그래픽 메모리에 접근해 화면에 그리는 기능이 필수적으로 들어갑니다. 그런데 이것조차 버그가 있어서 보안 구멍으로 쓰일수 있습니다. 하드웨어적인 충격으로 박살나기도 하는게 보안입니다. 그러니 꼭 필요하지 않다면 애초에 만들어 넣지 않는게 서버관리에 좋습니다.

그런 의미에서 GUI는 굳이?? 에 가깝습니다.
그리고 윈도는 기본적으로 GDI를 쓰게 되어있지요. 이 gdi가 무슨 문제를 일으킬지는 아무도 알수 없습니다.

그래서인지 윈도서버로 서버를 만든다고 하면 전 일단 말리고 싶습니다. 차라리 윈도가 필요하면 Vmware ESXi에 따로 서버를 올리라고 하고싶습니다.

메인으로 윈도서버를 올리는건 별로 추천드리고 싶지 않습니다. 아무리 Microsoft가 뛰어난 인재들이 모이는 곳이라고 하지만 윈도서버는 너무 많은 기능이 들어가 있습니다. 기존 윈도프로그램들이 그대로 돌아간다는건 정말 박수쳐줄일이지만 그게 도리어 화가 될 수도 있다는걸 알았으면 좋겠습니다.

제일 좋은건 관리자가 모든것을 통솔하는것. 그것이라고 생각합니다.

,

2020년 현재 브라우저 점유율 1위는 단연코 크롬입니다.
물론 아이폰에서는 사파리가 최고지만 당연하게도 안드로이드, 윈도우, 리눅스 다 합쳐서 제일 많이 쓰이는 브라우저가 크롬입니다.

그리고 당연히 모바일에서도 안드로이드 점유율에 비례해서 크롬이 높습니다.

그런데 2020년 현재 모바일 버전의 크롬의 상태가 좀 안 좋습니다. 가끔 멈추지를 않나 HTML5의 동영상 태그도 제대로 재생을 못 하기도 합니다.

제 폰의 문제일 수도 있습니다만(갤럭시A50) 크롬의 업데이트 이후 자꾸 문제가 생기는 것이 인내심의 한계를 느끼게 하더군요.


잘가라 크롬 이제 더 이상 못 쓰겠다



그래서 브라우저를 바꾸기로 했는데...
모바일 브라우저는 이거다 싶은게 없더군요. 그나마 크롬을 대신할 만한 것을 골라보았습니다.

1. 삼성 브라우저
https://play.google.com/store/apps/details?id=com.sec.android.app.sbrowser

Samsung Internet 브라우저 - Google Play 앱

새로 추가된 기능 * 탭 표시줄(Tab Bar)에서 콘텍스트 메뉴(Context menu) 지원 탭 표시줄(Tab Bar)에서 콘텍스트 메뉴를 통해 탭을 관리할 수 있습니다. 탭 표시줄(Tab Bar)에 있는 탭을 길게 눌러서 탭을 ��

play.google.com

삼성은 당연히 모바일 하드웨어의 최강자입니다. 그런데 브라우저도 상당히 쓸만하게 만듭니다. 이미 갤럭시 S2때부터 구글이랑 협업해서 브라우저를 상당히 쓸 만하게 만든 저력이 있습니다.

그리고 나름 추가기능도 충실해서 괜찮은 기능을 갖고 있습니다. 물론 삼성기기가 아니더라도 쓸 수 있습니다.

생각외로 점유율이 높은 브라우저입니다.

2. Mozilla Firefox
https://play.google.com/store/apps/details?id=org.mozilla.firefox

Firefox: 빠르고 안전한 사생활 보호 웹 브라우저 - Google Play 앱

새롭게 출시된 Android용 Firefox 모바일 브라우저 Firefox Daylight를 소개합니다. 사용자 맞춤 설정과 사생활 보호 기능이 한층 개선된 Firefox Daylight는 더욱 빠르고 간편해진 최고의 브라우징 경험을 선

play.google.com

특유의 확장성으로 무한한 기능확장을 쓸 수 있는 Firefox입니다. PC판에서 쓸 수 있는 확장을 그대로 모바일에서도 쓸 수 있는게 특징입니다. 그리고 Gecko엔진은 미국의 영향을 전혀 받지 않고 개인정보 관련해서 안심 할 수 있습니다.

다만 사용자가 많이 줄어서 피드백이 늦어지고 있고 안정성도 많이 나빠졌습니다. 그래도 Firefox는 그 특유의 가벼움이 있으니 극한의 환경이라면 추천합니다.

3. Microsoft Edge
https://play.google.com/store/apps/details?id=com.microsoft.emmx

Microsoft Edge - Google Play 앱

Introducing the new Microsoft Edge. It’s time to expect more. More privacy. More control. More productivity. More value. Browse anywhere with one continuous experience from your phone to your computer and other signed-in devices. Microsoft Edge gives you

play.google.com

Microsoft는 분명 소프트웨어에서 엄청난 회사입니다. 그리고 굉장히 개발자 친화적이기도 합니다. 최근 기존 윈도용 Edge를 크롬과 동일한 크로미움 엔진으로 바뀌었다는 소식이 뜨거웠는데 안드로이드에서 그 이전부터 동일한 크로미움 엔진으로 나왔었습니다.

그리고 역시 명가는 명가였습니다. 동일한 엔진임에도 가볍고 빠르게 돌아갑니다. 그리고 Microsoft Exchange라는 기업용 솔루션하고 잘 돌아갑니다. (다만 이 쪽 분야는 이제 삼성Knox와 경쟁해야합니다.)

Windows에서 잘 썼다면 안드로이드의 Edge도 역시 나쁘지 않은 선택입니다.

이상 Chrome을 대체할 모바일 브라우저 리스트를 뽑아봤습니다. 변종도 많고 이것저것 종류도 있지만 그래도 뿌리깊은 브라우저가 가장 좋다는 것은 변하지 않은것 같네요.

일단 저는... 저 세 개를 전부 다 써보고 결정하기로 했습니다. 그래서 지금 제 스마트폰에는 브라우저만 3개가 깔려있네요.

여러분의 선택은 무엇인가요?

,

VRoid Studio라는 캐릭터 제작 도구가 있습니다. 기본적인 캐릭터만으로도 상당히 쉽게 만들 수 있습니다.

https://vroid.com/en/studio/

 

VRoid Studio | VRoid

VRoid Studio is an application to create 3D models of humanoid avatars (characters). The app runs on Windows and Mac and can be used for free by anyone. 3D models created with VRoid Studio can be used as avatars on various VR/AR contents, both for commerci

vroid.com

위에서 다운로드 받으면 되는데 머리모양을 그림그리듯 만들 수 있고 자체포맷이라기엔 애매하지만 VRM이라는 포맷으로 Export도 가능합니다. 

그리고 해당 VRM파일을 https://github.com/saturday06/VRM_IMPORTER_for_Blender

 

saturday06/VRM_IMPORTER_for_Blender

Unofficial incomplete VRM importer and exporter for Blender2.82+ - saturday06/VRM_IMPORTER_for_Blender

github.com

이것을 이용하면 Blender에 넣을 수도 있습니다. Blender에 넣으면 그 다음에는 이것 저것 할 수가 있지요.

 

아무튼 이런 유용한 도구를 우분투에서 굴려봅시다.

 

우선 VRoid Studio의 윈도우 버전을 다운로드 받습니다. 현재 VRoid Studio는 맥용과 윈도용만 배포되고 있습니다. Unity3D 엔진을 사용했기에 마음만 먹으면 리눅스용도 빌드가 가능할텐데 아직은 그럴 생각이 없는 것 같습니다. 하지만 Unity엔진으로 만들어진 것은 Mono를 기반으로 하기 때문에 Wine에서 충분히 잘 돌아갑니다.

 

다만 한가지 문제가 있는데..

중간중간 \로 써있는 것을 보면 살짝 화가 나기도 한다.

압축파일이 일본에서 압축을 해서 그런지(사실상 Zip압축의 표준인 Winrar로 압축하면 경로를 유닉스 형태인 /로 압축합니다.) 이런식으로 되어 있습니다. 폴더형태가 아닌 그냥 하나의 파일로 나열되어 있습니다. 이는 비표준 형태로 압축되었기 때문입니다.

 

이걸 해결 하는 방법은... 그냥 Wine에 반디집 설치하고 반디집에서 압축 풀면 됩니다. 일단 압축을 풀어 놓읍시다. 바로 Wine으로 실행해도 좋지만 자칫 꼬일 수도 있습니다.

반디집에서는 그 어떤 형태도 다 지원한다. 이런 프로그램을 한국에서 만든다는 것에 자랑스럽다.

그리고 저는 Wine을 돌릴때 따로따로 관리하는 것을 좋아하기 때문에 VRoid Studio도 PlayonLinux로 관리합니다.

우선 PlayonLinux를 설치했다고 하고 (소프트웨어 센터에 가면 있습니다.)

 

PlayonLinux를 실행합니다.

그리고 Wine 5.7이상의 버전을 설치해야합니다.

도구-Wine버전 관리를 눌러줍니다.

 

그리고 amd64탭을 선택한 다음 왼쪽탭에서 5.7-staging 혹은 그 이후 버전을 선택하고 > 버튼을 눌러줍니다.

나는 이미 5.7-staging이 설치되어 있는 상태다. 5.9에서도 잘 돌아가는 것이 확인 되었다.

그리고 창을 닫은다음 구성 버튼을 누릅니다.

여기서 왼쪽 아래에 새로 만들기를 눌러줍니다.

여기서 영어의 압박이 올 수 있는데 PlayonLinux가 한글화가 되고는 있지만 아직 기여가 부족합니다. 

다음을 누르고 이 화면에서 64bits windows 를 선택합니다.

그리고 여기서 아까 추가했던 5.7 혹은 그 이후 버전을 선택합니다. 그리고 관리할 prefix의 이름을 누른다음 다음을 연타하면

나는 그냥 VRoidStudio라고 이름 지었다.

요렇게 구성창에서 아까 지은 이름으로 Prefix가 하나 만들어집니다. 이것을 클릭하고

기타설정 탭으로 들어갑니다.

그리고 Open Virtual's directory를 눌러주시면...

여기서 drive_c라는 폴더가 Wine에서 C:\ 로 생각되어지는 폴더입니다. 저 폴더 안에 아까 압축을 풀었던 VRoidStudio를 복사해서 넣어주세요. 

그냥 이런식으로 넣어주시면 됩니다. 그 다음 다시 PlayonLinux의 구성창으로 돌아옵니다.

여기서 일반 탭으로 돌아오신 다음

바로가기 만들기를 눌러주시면

이렇게 뜹니다. 여기서 VRoidStudio.exe를 선택하고 다음!

 

이제 바탕화면 보시면 VRoidStudio 바로가기가 있을 겁니다. 이것을 실행하면...

짠!!! DirectX11 기반이라 약간의 오버헤드는 있지만 쓸 수는 있습니다!

 

여기서 한가지 더

WineD3D11은 안정적이지만 굉장히 느리다는 단점이 있습니다. 이를 DXVK를 이용해서 Vulkan으로 구동하면 라데온을 사용했을 때 윈도우보다 더 빠른 성능을 얻을 수도 있습니다. 

 

https://github.com/doitsujin/dxvk/releases

 

Releases · doitsujin/dxvk

Vulkan-based implementation of D3D9, D3D10 and D3D11 for Linux / Wine - doitsujin/dxvk

github.com

여기서 dxvk를 다운로드 받습니다. 

2020년 9월 현재 1.7.1이 최신 버전이군요. 

그리고 압축파일을 열고 x64폴더 안에 있는 dll들을 아까 VRoidStudio를 복사했던 폴더에 다 풀어놓습니다.

이런 형태가 될겁니다.

그리고 PlayonLinux에서 VroidStudio를 선택하고 구성버튼을 누릅니다.

 

그리고 Wine 탭을 누른 다음 Wine설정

라이브러리 탭을 누른 다음 새로 재정의할 라이브러리에 d3d11을 치고 추가버튼을 누르면

요렇게 됩니다. 이제 적용-확인

 

이제 Vulkan으로 VroidStudio가 구동됩니다!!!

,

이 게임을 기억하시는 분이 있으려나 모르겠네요.

 

분명 이름은 쿠키샵인데 쿠키는 절대로 안 파는 경영게임 "쿠키샵"입니다. 그런데 이거 정말 오래된 게임인데 지금해도 꽤 난이도가 있습니다. RPG요소가 같이 섞여 있다보니 전투도 치뤄야하고 손님이 오면 후다다닥 처리도 해야하고 할일이 엄청 많습니다. 이걸로 마우스를 꽤나 망가뜨린 경우가 많다고 하네요.

 

PlaynLinux를 이용했고 Wine 5.7을 사용했습니다. 워낙 오래된 게임이라 딱히 설정은 필요없었습니다.

 

단 하나... 시디롬 인식이 잘 안 되서 gCDemu를 설치한 후에 gCdemu에서 iso 이미지를 마운트 했습니다.

이전에 프린세스 메이커3때도 그랬지만 이 당시에는 시디롬을 잘 활용했었습니다. 덕분에 시디가 없으면 안 돌아가는 경우가 많았습니다. 그런데 쿠키샵은 일단 시디롬이라고 인식되기만 하면 어찌되었든 돌아가서 복제방지가 허술한 축에 속합니다. 그리고 640x480으로 돌리니 상당히 눈이 아프네요. 이미 회사가 망해버려서 다시 리마스터링 한다거나 할 수도 없겠지요.

,

이전에 scrcpy를 써서 딜레이가 거의 없는 안드로이드 화면 미러링에 관하여 설명한 적이 있습니다.
https://moordev.tistory.com/323

그런데 PC야 원래 성능이 좋으니까 사실 wifi를 사용한 방법으로도 충분한 경우가 많습니다. 하지만 이보다 성능이 떨어지는 SBC(Single Board Computer)라면 어떨까요? 과연 이걸로도 scrcpy로 안드로이드 스마트폰 화면을 미러링 할 수있을까요?

그래서 한번 SBC의 가장 대표적인 보드인 라즈베리파이를 이용해봤습니다.

이번에 사용할 보드인 라즈베리파이3 B+ (쓴지 몇년 되었습니다.)와 저렴한 Waveshare사의 3.5inch LCD (A) 입니다.LCD는 그냥 라즈베리파이의 GPIO에 맞게 끼우면 바로 작동 됩니다.

물론 작동 된다는 것이지 바로 사용이 가능한 것은 아닙니다. 몇가지 설치절차가 필요합니다. 지금은 그냥 하얀 화면만 나올 뿐입니다.

우선 RaspberryPi OS가 설치된 SDCARD가 필요합니다. 이건 워낙 여기저기에서 방법을 잘 알려주고 있고 라즈베리파이를 본격적으로 쓰시는 분들이라면 이미 다들 알고 계시겠지요.

그리고 LCD에 바로 화면이 뜨지 않기 때문에 SSH를 활성화 하거나 HDMI 모니터와 USB키보드를 준비해야합니다. 저는 그냥 SSH를 활성화 한다음 유선랜을 공유기에 꽂아서 라즈베리파이에 접속했습니다.

SSH를 활성화 하는 방법은 간단합니다. RaspberryPi OS가 설치된 SDCARD를 PC에 꽂으면 boot라고 써있는 디스크가 보입니다. 여기에 SSH 라는 이름을 가진 파일을 하나 만들면 바로 SSH가 활성화 됩니다.

그 다음 SSH로 라즈베리파이에 접속합니다.

ssh pi@192.168.0.xx (192.168.0.xx는 라즈베리파이의 IP주소입니다. 공유기에 접속해서 확인 할 수있습니다.)
yes를 친다음 패스워드는 raspberry

기본 패스워드이니 sudo raspi-config 명령을 사용해서 이것저것 설정을 하고 이제 본격적으로 LCD에 화면을 띄워봅시다.

라즈베리파이를 설치하고 가장 먼저 해야할 것은 패키지 업데이트이고 그 다음이 바로 이 설정이다.

저는 waveshare사의 LCD를 사용했지만 Adafruit사의 것을 사용하시거나 기타 다른 업체를 이용하신다면 또 달라질 수 있습니다.

우선 해야할 것은 매뉴얼을 읽는 것입니다.
https://www.waveshare.com/wiki/3.5inch_RPi_LCD_(A)

3.5inch RPi LCD (A) - Waveshare Wiki

Introduction 3.5 inch Touch Screen TFT LCD Designed for Raspberry Pi Getting Started Hardware Connection There are 40 pins on Raspberry Pi but only 26 pins on the LCD, so you should pay attention to connecting the pins to your Pi accordingly. Install the t

www.waveshare.com

여기 보면 드라이버 설치방법이 써 있습니다. 드라이버를 이미 git을 통해 제공하고 있군요.
git clone https://github.com/waveshare/LCD-show.git

waveshare/LCD-show

Contribute to waveshare/LCD-show development by creating an account on GitHub.

github.com

cd LCD-show

이제 여기서 자신의 LCD에 맞는 것을 찾습니다. 저는 3.5인치 LCD A버전이므로 LCD-35입니다. 만약 LCD B버전이거나 다른 크기의 LCD라면 다른 것을 찾아야 합니다. 역시 매뉴얼을 보면 자세히 나와있으니 이를 이용하면 됩니다.

우선 실행옵션을 줘야하므로
sudo chmod +x LCD35-show
./LCD35-show

이러면 이제 필요한 소스를 다운받고 빌드를 해서 드라이버를 설치합니다. 그리고 자동으로 라즈베리파이가 부팅되는데 LCD에 X가 짠하고 뜹니다! 그리고 터치도 되므로 터치펜이나 손가락으로 꾹꾹 누르면 진행이 됩니다.

그냥 한번 화면을 90도로 돌려보았다. 그러니까 터치 좌표가 꼬인다...

이제 라즈베리파이 화면을 띄우는데에 성공했으니 한번 scrcpy를 빌드해봅시다.

우선 이 링크의 것을 참조했습니다. https://gist.github.com/RubenNL/e259f145371d2c16a3932fa39aa9a775

Install scrpy

GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

그냥 scrcpy의 가이드대로 빌드하면 Android SDK가 필요한 경우가 있는데 Android SDK는 ARM위에서 돌아가지 않습니다. 따라서 미리 빌드된 것을 사용해야합니다.

우선 라즈베리파이에 접속을 한 후에

sudo apt install git wget meson libavformat-dev libsdl2-dev adb

위 명령으로 필요한 것을 설치합니다. 보통 libsdl2와 libavformat, adb만 설치하고 나머지는 이미 있을 가능성이 높습니다.

그리고 필요한 것을 다운로드 받습니다.
2020년 현재 최신 버전은 1.16버전이므로 이것을 사용합니다.

wget https://github.com/Genymobile/scrcpy/archive/v1.16.tar.gz
tar -zxvf v1.16.tar.gz
cd scrcpy-1.16
wget https://github.com/Genymobile/scrcpy/releases/download/v1.16/scrcpy-server-v1.16
meson x --buildtype release --strip -Db_lto=true -Dprebuilt_server=scrcpy-server-v1.16

이제 빌드를 위한 준비가 시작됩니다. 그리고 준비가 완료되면
ninja -Cx

이제 빌드가 될텐데 오류가 난다면 위의 사전설치 패키지를 확인해주시기 바랍니다.
빌드가 끝나면 인스톨

sudo ninja -Cx install

이제 안드로이드 스마트폰과 라즈베리파이를 USB로 연결하고 라즈베리파이에서 scrcpy 명령을 내리면 스마트폰 화면이 창으로 뜰겁니다. 대신 화면도 작고 창크기도 작은데다가 라즈베리파이의 성능 문제도 있다보니 매우매우 느립니다.

그리고 저는 라즈베리파이를 스마트폰 화면 미러링 전용으로 쓸 생각이라 이것을 scrcpy를 서비스로 등록해서 사용할 생각입니다. USB에 디버깅 옵션이 켜진 스마트폰이 연결되면 바로 화면을 띄우는 것이지요.

다시 라즈베리파이에서 터미널을 엽시다.
sudo nano /etc/systemd/system/scrcpy.service


이제 새로운 텍스트 에디터가 뜰텐데 다음과 같이 입력합니다.

더보기

[Unit]

Description=Start SCRCPY Android Screen

[Service]

Type=simple

User=pi

ExecStart=/usr/local/bin/scrcpy -b2M -m480 --max-fps 10 -f --rotation 1 -n

#Restart=always

Restart=on-failure

[Install]

WantedBy=graphical.target

#WantedBy=multi-user.target

위 명령 중에서 -b2M은 영상 비트레이트를 2M까지만 -m480은 최대 480p --max-fps는 10프레임 이하로 --rotation 1은 화면을 90도 돌리라는 의미입니다. 저는 주로 세로화면을 쓰기 때문에 이렇게 했습니다.

저장을 위해 Ctrl+O 그리고 엔터
이제 파일을 저장했으면

sudo systemctl daemon-reload
sudo systemctl enable scrcpy.service

위 명령어로 서비스에 등록합시다. 이제 USB로 스마트폰이 연결될때까지 라즈베리파이는 계속 연결을 시도할 것입니다.


그냥저냥 쓸 만한 속도가 나오네요. 제 보드는 라즈베리파이3니까 라즈베리파이4 이상이라면 fps를 높여서 더 빠르고 완벽한 속도를 보일 수 있을겁니다.

이제 필요하면 https://gitlab.com/larsfp/rpi-readonly

Projects · Ways / rpi-readonly

Make raspberry pi raspbian file system read-only

gitlab.com

여기의 것을 사용해서 SDCARD에 쓰기를 못하게 만들 수도 있습니다. 이러면 갑자기 Raspberrypi가 멈춰서 다시 시작해야 하는 일이 생기더라도 SDCARD를 보호 할 수 있습니다.

,