홈서버, rust, 백색소음 앱
1주전에 만든 N100 16GB RAM 미니PC 홈서버와
그리고 어제 오늘 공부한 rust 로(물론 코더는 gpt가)
작업용 생산성 백색소음 앱 만들어 봤습니다
기획부터 개발 배포까지 하루 만에 만들었네요
옵시디언 같은 생산성 메모 앱들이 인기가 있습니다만
논리적 전개 즉 CPU 같은 역할이고
저는 GPU 같이 연상작용을 증폭시키는 메모 앱 보조도구를 만들어 보고 싶었던건데
맨 처음에는 sveltekit PWA 와 rust wasm으로 클라이언트 웹브라우저에서 모든것(키워드 입력 + 키워드 음성 생성 + 음성에 사운드 이팩트 처리 + 오디오 재생)을 다하려고 했는데
그건 불가능한 일이었네요. tts라는 것이 쉬운게 아니더라구요.
언어와 음성을 다룬다는것은 ML으로 처리되는 복잡한 것이었고 기본적으로 이 기능을 rust 컴파일에 넣으려면 기술적으로 너무 복잡하고 또 wasm 빌드 크기가 웹에서 사용하기에는 너무 커집니다
결국 백엔드 서버에서 espeaks ng(tts), ffmpeg(wav→mp3) 프로그램 설치하고
rust 로 tts-processor, tts-api-server 2개의 프로그램을 만들어서
server로는 프론트엔드 api 요청을 처리(문자열을 받아서 processor한테 넘겨주고 processor한테 mp3를 받아서 클라이언트 웹브라우저로 보내주는 것)
processor는 문자열로 espeaks ng를 실행시켜서 음성wav를 만들어서 각종 사운드 이팩트 처리해서 백색소음 만들고 그 wav파일을 ffmpeg한테 전달해서 mp3로 압축하는 것
프론트엔드는 sveltekit PWA로 빌드해서 cloudflare pages에 배포
백엔드 서버로 API 요청은 cloudflared tunnel 통해서 nginx 리버스 프록시 통해서 내부망 사설IP 의 미니PC의 rust 로 만든 tts-api-server 로 연결
코더는 gemini cli
며칠 안쓴 동안에도 버전 업 되었고 성능이 더 더 좋아졌네요. rust는 오히려 gpt가 더 잘 할수도 있겠더라구요. 왜냐면 compile할때 워낙 자세한 에러 이유를 잘 설명해주니까 gemini cli가 코드작성하고 리팩터링하고 빌드까지 다 하면서 그 에러를 막바로 보고 다시 고치고 또 빌드하니까요 필요하면 라이브러리 종속성도 알아서 변경하고
원래는 백엔드 API서버 프로그램은 go로 만들려고 했는데 왜냐면 다른 웹 애플리케이션도 다 go로 만들어왔고 그 세팅 그대로 쓰면 편하기 때문에. 근데 rust로 api server 금방 만드는 것보고 그냥 썼어요. 잘 작동하네요
아래의 홍보문구도 gemini cli 한테 시켜서 만든겁니다
같이 만들었으니까 그 누구보다도 더 홍보문구도 잘 만듭니다
Infilter 오디오 경험: 집중력을 위한 사운드스케이프
Infilter는 단순한 소음이 아닌, 여러분의 집중력과 창의성을 극대화하도록 설계된 독특한 오디오 경험을 제공합니다. 복잡한
기술이 만들어내는 미묘한 사운드 레이어는 언어적 방해 없이 여러분의 작업 흐름을 부드럽게 감싸줍니다.
의미를 초월한 음성 (Granular Synthesis):
* 기술: 음성 신호를 미세한 조각으로 분해하고 재구성하여, 원래의 메시지는 사라지지만 음성 특유의 따뜻하고 유기적인
질감은 유지합니다.
* 경험: 마치 멀리서 들려오는 대화처럼, 내용은 알 수 없지만 사람의 목소리가 주는 편안함과 익숙함이 공간을 채워줍니다.
집중을 방해하지 않으면서도 고립감을 줄여줍니다.
부드러운 흐름의 리듬 (Tremolo & Phasing/Flanging):
* 기술: 볼륨의 미세한 주기적 변화(트레몰로)와 주파수 스펙트럼의 부드러운 물결(페이징/플랜징)을 적용합니다.
* 경험: 정적인 배경 소음이 아닌, 살아있는 듯한 미묘한 움직임과 리듬감을 선사합니다. 이는 사운드스케이프에 깊이와
유동성을 더하여, 여러분의 사고 흐름을 자연스럽게 이끌어줍니다.
인간적인 공명의 속삭임 (Formant Filtering):
* 기술: 음성의 특징적인 공명 주파수(포먼트)를 섬세하게 강조하여, 명료도 없이도 음성 본연의 부드럽고 인간적인 울림을
살려냅니다.
* 경험: 로봇처럼 딱딱한 소리가 아닌, 은은하게 퍼지는 인간적인 온기와 부드러움이 느껴져 더욱 편안하고 자연스러운
환경을 조성합니다.
자연스러운 질감의 레이어 (Crackles):
* 기술: 미세하고 불규칙적인 "타닥"거리는 소리를 추가하여, 아날로그 장비에서 느껴지는 따뜻하고 빈티지한 질감을
부여합니다.
* 경험: 디지털 사운드의 차가움을 덜어내고, 마치 오래된 라디오나 LP판에서 들려오는 듯한 아늑하고 친숙한 분위기를
더해줍니다.
깊고 풍부한 배경 (Pink & Brown Noise Blend):
* 기술: 모든 주파수 대역에 걸쳐 균형 잡힌 핑크 노이즈와 저음역대가 강조된 브라운 노이즈를 최적의 비율로 혼합합니다.
* 경험: 주변의 산만한 소음을 효과적으로 가려주면서도, 깊고 부드러운 저음이 안정감을 주어 마치 아늑한 공간에 있는
듯한 편안함을 제공합니다.
이러한 요소들이 결합되어, Infilter는 여러분의 생산성과 창의성을 위한 최적의 오디오 배경을 제공합니다.