Eli의 여백

바쁜 나날들 사이에서 생각났던 이런저런 것들을 적어봅니다.

프로그래밍 19

오디오 파일 읽어서 SoundCloud Waveform처럼 만들기 관련 자료

얼마 전 비전공자 입장에서 TTS 제작하는 SCE-TTS라는 곳에서 Mimic Recording studio 사용하는 것을 봤는데 무슨 도커깔고 서버열고 하는거보고 이건 아니다 싶었고, 녹음하는 부분이 개선될 여지가 있을까 해서 잠깐 이것저것 찾아봄. 당연히 기본 녹음의 경우 Audacity를 이용하면 쉽게 할 수 있으나, 좀 더 아름답게 waveform 그리는 것 관련해서 이전 글에서도 잠깐 흥미가 생겨서 검색해봤던 점도 있고 해서 audio visualization 관련으로 약간 더 찾아봄. 그 결과 유용한 자료들 몇 가지를 찾은 것 같아서 간단하게 기록으로 남겨 본다. NAudio.WaveFormRenderer 맨 위의 그림처럼 대략적인 프리셋이 이미 갖춰진 example을 포함한다. https:/..

프로그래밍 2022.02.21

manifest v3 Chrome extension에서 service worker와 indexedDB를 올바르게 사용하기

들어가며 최근에 크롬 익스텐션 만들 일이 하나 생겨서 좀 찾아보니 표준이 manifest v3로 버전 업이 되어있었다. 마지막으로 chrome extension 관련해서 깨작거려본지 몇 년 된지라 역변한 기술을 받아들이기가 힘들었다. 그래도 신문물을 써보려고 가이드를 참고하여 manifest.json에 version 3을 입력하고 background.js도 worker로 변경을 했는데 보안 이슈로 웬만한걸 다 막아놔서 extension에서 접근이 안되는게 너무 많았다. 특히 특정 사이트를 스크래핑해서 DB에 정리하고 그 DB를 써서 다른 페이지의 html을 변경하는 것이 목적이었는데 자꾸 CORS인지 하는 보안경고를 띄우니 답답 그 자체였다. 몇시간의 삽질 끝에 정석적으로 올바르게 통신하는 chrome ..

프로그래밍 2022.02.16

Jupyter lab 환경에서의 MNIST 재해석

들어가며 이번 주에는 실험을 하다가 즉석에서 계량과 오차계산을 다 해야 했던 실험과정이 있었다. 계산기를 쓰면 편한데 손에 라텍스 장갑을 끼고 있어서 키보드에 묻을 가능성도 있고 매우 찝찝했었다. 그래서 이전 글에서 세팅한 음성인식이 생각이 났다. 노트북에 동일한 세팅을 하고 OriginLab에 연결시켜두면 자동계산이 될 것 같았다. 찾아보니까 origin도 python 연동이 되긴 하는데 2021버전부터 지원하고, 내 소속기관 라이센스는 2019가 한계라 불가능했다. 어쩔 수 없이 엑셀에 미리 수식을 써놓은 파일을 만들고 입력 부분만 말로 연동할 수 있게 하는걸로 계획을 변경했다. 그래서 다른 사람 글을 참고해서 python으로 엑셀을 제어할 수 있는 모듈을 하나 작성했다. 음성인식 부분도 google..

MATLAB으로 웹캠 OCR 하기

준비사항 1. USB 웹캠 라이브러리 https://kr.mathworks.com/matlabcentral/fileexchange/45182-matlab-support-package-for-usb-webcams MATLAB에서 웹캠 기능을 쓰려면 위 라이브러리 패키지를 다운받은 후 설치하면 된다. 2. Computer Vision Toolbox https://kr.mathworks.com/products/computer-vision.html 이 글에서는 툴박스 라이센스가 있어서 바로 사용했고, 만약 라이센스 없거나 octave인 경우에는 OpenCV로 대체 가능할 듯하다. 웹캠에서 이미지 얻기 https://kr.mathworks.com/help/supportpkg/usbwebcams/ug/acquire..

프로그래밍 2020.01.03

MATLAB으로 머신러닝 입문(?)

최근에 인공지능이 아주 폭발적으로 크고 있고, 최소한 앞으로도 그게 지속될 것이라는 것은 누구나 아는 사실이다. 현재 나의 연구분야는 아직 인공지능이 깊이 들어와 있지 않다. 이게 오히려 기회가 되지 않을까? 하면서 머신러닝과 딥러닝 쪽을 이전부터 기웃거리고 있긴 한데, 어떻게 써먹어야 할지는 대충 감이 오는데 현재 상황상 일단 눈앞에 놓인 학위 연구 같은 것들 때문에 실천은 못하고 있는 중이다. 딥러닝으로 구현한 프로그램들이 그동안 상상도 못했던 것들을 만들어내는 것이 현실이고, 나도 시대에 뒤쳐지지 않기 위해 흥미롭기도 한 머신러닝을 몇 년 전부터 깔짝대고 있다. 그동안은 정말로 관심은 많이 갔지만 대중 매체에는 맨날 보면 뉴럴넷 그림 같은 거 박아놓고 중간과정은 싸그리 생략하고 놀라 자빠질만한 결과..

프로그래밍 2019.12.13

GitLab 설정

일단 GitLab에서 새로운 repository를 만들었다고 가정한다. GitLab은 보안을 위해 ssh key를 이용해서 통신하기 때문에 작업하는 컴퓨터와 gitlab 모두에 ssh key가 일치되어야 권한문제가 생기지 않는다. ssh로 통신을 시도하게 되면 자신의 ssh public key를 원격지로 전송한다. 이 때 기본 경로는 c:/user/사용자명/.ssh 폴더이다. 여기에 아무것도 없으면 통신이 성립되지 않는다. 그리고 GitLab에서 자기가 갖고있는 public key랑 맞는지 확인을 한다. public key가 등록이 안되어있으면 당연히 통신이 성립되지 않는다. 즉 GitLab을 정상적으로 사용하기 위해서는 두 가지 절차가 필요하다. 1. 작업하는 컴퓨터에서 ssh키 쌍(pair) 만들기 ..

프로그래밍 2018.04.07

BMS구동기 v0.4

작동모습 현재까지 완료된 것 irrklang으로 소리 재생 계산된 시간에 따라 BMS의 음원을 재생(일단 간격은 ms단위) 다음단계 계획 싱크가 맞으면서 wav와 ogg까지 커버되는 음원 재생 라이브러리를 찾는다. 일때문에 바빠서 이제서야 다시 기록한다. 일단 시간축을 dictionary로 생성하고 element의 key를 time, value를 list of string (음원파일이름이 있는)으로 줬다. 그리고 BMS파일 읽은거에서 time에 맞춰서 list of string에 추가하는 식이다. 나중에 재생할 때는 timer를 돌리면서 시계처럼 한칸한칸씩 다음 key로 넘어가면 해당 시간에 재생되어야 할 list of string이 나오는데 for loop으로 재생을 돌리는 것이다. 문제는 이게 싱크가..

프로그래밍 2016.02.13

BMS구동기 v0.3

결과물 화면 현재까지 완료된 것 monogame으로 ogg 재생 안되던 문제를 외부 dll으로 해결 자체 작곡한 샘플 BMS를 넣음 (저작권이 나한테 있으므로 문제될 게 없다.) Garbage collection을 이해 다음단계 계획 이제 마음껏 wav ogg mp3를 재생시킬 수 있으니 BMS를 실제로 처음부터 끝까지 시간계산해서 소리나게 하는 것 하.. 여기까지 오는데 미친듯한 삽질을 많이 했다. monogame에서 wav나 ogg를 재생하려면 content.mgcb를 직접 열어서 일일이 wav는 wav importer로, ogg는 mp3 importer를 지정해주고 파일도 수작업 했어야 됐었다. 게다가 이렇게 하면 모든 음원이 xnb라는 자기네 자체 파일형식으로 컴파일이 되는데, 이 컴파일을 명시적..

프로그래밍 2016.01.24

BMS구동기 v0.2

결과물 모습 현재까지 완료된 것 BPM 읽기 regular expression을 이용한 종류별(소리, 노트, BGA별) crop 메인 클래스와 BMS읽는 클래스를 개별 파일로 분리 차후 해결과제 라인별로 읽으면서 데이터 정리 나중에 BMS 에디터도 개발하긴 하겠지만 (BMSE로 만들었을 때 uBMplay를 돌리면 윈10에서는 안돌아간다), 어차피 지금은 사람들이 BMSE로 제작하기 때문에 각 항목이 나오는 순서가 정해져 있다. 하지만 개발자인 야네 우라오씨는 (야네가 성이고 우라오가 이름이다) 포맷에 관해 별도의 순서를 지정하고 있지 않기 때문에(링크), 기존 BMS와의 호환성을 확인하는 차원에서 그냥 순차적으로 읽으면서 속도를 증가시키는 방향으로 다시 짤 것 같다. 일단 BMS파일 자체에는 용량이 그렇..

프로그래밍 2016.01.24

BMS구동기 v0.1

결과물 사진 사용한 것 Visual studio 2015, community edition (CE) monogame (C#기반이다) GitHub for visual studio (extension) 현재까지 완료된 사항 키를 누르면 하위 폴더에 포함된 사운드 재생 키를 누르면 하위 폴더에 포함된 BMS 읽기 키를 누르면 line by line으로 읽은 BMS 출력 Visual studio와 GitHub를 연동 차후 해결과제 읽은 BMS파일을 가지고 regular expression을 이용해서 노트 순서와 시간 계산 원래는 private repository가 되는 GitLab하고 연동하려고 했는데 잘 안되어서 어쩔 수 없이 코드가 공개되는 GitHub랑 연동한다. 이 코드를 숨기는 것보다 내가 개발하는 것..

프로그래밍 2016.01.24

02. Git 다운로드 및 GitLab과 연동

이제 local에서 버전관리를 할 수 있는 Git를 다운받고, 저번에 만든 GitLab과 연동하는 작업을 해 보겠다. 먼저 Git를 다운로드 하기 위해 다음의 사이트에 들어간다. http://git-scm.com/ 딱봐도 다운로드같이 생긴 버튼을 눌러서 받으면 된다. 본인이 windows 64bit가 아니라면 취소하고 다른 버전으로 받으면 된다. 실행하고 설치를 시작한다. 보통은 default 설정으로 하게 된다. 설치가 끝나면 default로 체크되어 있는 옵션에 의해 아무 폴더(바탕화면 포함)에나 가서 마우스 우클릭을 해보면 Git GUI here Git Bash here 이런 옵션이 추가적으로 뜨게 된다. 본인은 프로젝트용 폴더를 하나 만들고 마우스 우클릭으로 Git GUI Here을 선택했다. 그..

프로그래밍 2015.09.02

01. GitLab 가입 및 프로젝트 생성

10인 이하의 사용자에게는 무료로 원격 저장소를 제공하는 GitLab을 이용하여 local 계정의 code를 비밀리에 관리해 본다. GitHub는 공개가 원칙이라면, 여기는 비공개가 원칙이라는 점이 다르다. 인터넷에서 보이는 말들로는 local에 GitLab 서버를 따로 돌릴 수도 있다고 한다. 여튼 필자는 온라인에서 anywhere anytime access가 가능한 code basecamp를 만들고 싶었기 때문에 GitLab을 선택했다. 일단 적당한 ID와 비밀번호를 이용해서 https://gitlab.com에 계정을 만들고 로그인한다. 위와 같은 창이 뜬다. New project를 누른다. 적당하게 잘 입력해 준다. 새로 만드는 것이기 때문에 import는 선택하지 않았다. 그리고 개인 projec..

프로그래밍 2015.08.31