# Nightingale – 컴퓨터의 모든 노래를 사용할 수 있는 오픈소스 노래방 앱

> Clean Markdown view of GeekNews topic #27632. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=27632](https://news.hada.io/topic?id=27632)
- GeekNews Markdown: [https://news.hada.io/topic/27632.md](https://news.hada.io/topic/27632.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-03-19T09:44:14+09:00
- Updated: 2026-03-19T09:44:14+09:00
- Original source: [nightingale.cafe](https://nightingale.cafe/)
- Points: 11
- Comments: 1

## Summary

개인 음악 파일을 **노래방 형태로 변환**해주는 오픈소스 앱 **Nightingale**은 음성 분리와 가사 동기화를 자동화해 누구나 손쉽게 자신만의 노래방을 만들 수 있게 합니다. UVR Karaoke나 Demucs로 보컬과 반주를 분리하고, WhisperX로 단어 단위 가사를 정렬해 정교한 싱크를 제공합니다. 마이크 입력 기반의 실시간 **피치 점수**와 사용자별 기록 기능으로, 음악 감상에서 노래 연습까지 자연스럽게 확장되는 경험을 지원합니다.

## Topic Body

- 개인 음악 파일을 **노래방 형태로 변환**해주는 오픈소스 애플리케이션으로, 음성 분리·가사 동기화·실시간 점수 기능을 제공  
- **UVR Karaoke 모델**이나 **Demucs**를 이용해 보컬과 반주를 분리하고, **WhisperX**로 단어 단위 가사를 자동 전사  
- **마이크 입력 기반의 피치 점수**와 **별점·곡별 기록** 기능으로 게임처럼 노래 실력을 측정  
- **여러 사용자 프로필**, **비디오 파일 배경 재생**, **GPU 셰이더 기반 동적 배경**, **게임패드 조작** 등 다양한 인터랙션 지원  
- **Linux, macOS, Windows**에서 실행되며, 설치 없이 단일 실행 파일로 구동되는 **자급형 구조**를 갖춤  

---

### 주요 기능

- **보컬 분리(Stem separation)** 기능은 UVR Karaoke 모델 또는 Demucs를 사용해 음성과 반주를 분리  
  - 가이드 보컬의 볼륨을 조절할 수 있음  
- **단어 단위 가사(Word-level lyrics)** 기능은 WhisperX로 오디오에 맞춰 각 단어를 정렬  
  - LRCLIB에 기존 가사가 있을 경우 이를 우선 사용  
- **피치 점수(Pitch scoring)** 기능은 마이크로 노래를 부르면 실시간으로 점수를 계산  
  - 별점과 곡별 점수판으로 진행 상황을 추적  

### 사용자 및 인터페이스

- **플레이어 프로필(Player profiles)** 기능으로 여러 사용자가 각자의 점수 기록을 유지  
  - 가수 전환 시에도 데이터 손실 없음  
- **비디오 파일 지원(Video file support)** 기능으로 .mp4나 .mkv 파일을 불러오면 원본 영상을 배경으로 재생  
  - 오디오에서 자동으로 보컬을 분리  
- **동적 배경(Dynamic backgrounds)** 기능은 GPU 셰이더 효과(플라즈마, 오로라, 성운 등)나 Pixabay 영상 루프, 또는 원본 비디오를 배경으로 사용  
- **게임패드(Gamepad)** 지원으로 메뉴 탐색, 곡 선택, 재생 제어를 컨트롤러로 수행  

### 작동 방식

- **Separate 단계**에서 UVR Karaoke 또는 Demucs가 트랙을 보컬과 반주로 분리  
  - 비디오 파일에서 오디오를 자동 추출  
- **Transcribe 단계**에서 LRCLIB에서 동기화된 가사를 검색하고, 없을 경우 WhisperX로 단어 단위 전사 수행  
- **Play 단계**에서 반주를 재생하며 하이라이트된 가사, 피치 점수, 동적 배경, 게임패드 입력을 함께 표시  

### 플랫폼 및 배포

- **Linux(x86_64, aarch64)**, **macOS(ARM, Intel)**, **Windows(x86_64)** 에서 실행 가능  
- **CUDA** 또는 **Metal**을 통한 GPU 가속 지원, 미지원 환경에서는 CPU로 동작  
- **ffmpeg, Python, PyTorch, ML 모델**이 첫 실행 시 자동 부트스트랩되어 별도 설치 과정이 필요 없는 **단일 바이너리 구조**  

### 업데이트 알림

- 신규 릴리스와 업데이트 소식을 이메일로 받을 수 있으며, 원치 않을 경우 언제든 구독 해지 가능

## Comments



### Comment 53333

- Author: neo
- Created: 2026-03-19T09:44:14+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47422942) 
- 방금 소스를 받아 빌드해서 실행해봤는데, 처음 실행하자마자 인터넷에서 **바이너리 다운로드**를 시작해서 놀랐음  
  이미 FFMpeg과 Python이 설치되어 있는데도 새로 설치하려고 시도했음  
  앱이 설치된 Python을 `lib` 폴더에서 찾는 바람에 실행이 실패했음. 이런 기본적인 오류가 릴리스 코드에 포함된 게 놀라움  
  또 tarball의 빌드 스크립트를 실행하니 **Docker 컨테이너**를 설치하려고 해서 당황했음. 데스크톱 앱을 빌드하는데 Docker라니, 이해가 안 됨
  - 많은 앱들이 자체 **Python 런타임**을 포함함. Blender, Houdini, Bitwig, Krita 등도 마찬가지임  
    Krita는 빌드 시 시스템 Python을 사용하지만, 결과물에는 자체 Python을 포함시킴  
    다만 이 앱은 다운로드보다는 번들링하는 편이 나았을 것 같음  
    보안 문제는 npm이나 pip도 비슷한 위험을 가지므로 완전히 예외는 아님
  - “왜 이런 식으로 만들었을까?”라는 질문의 답은 아마 “**내 컴퓨터에서는 잘 됐음**”일 것 같음
  - Python 설치 생태계가 워낙 **혼란스러움**. OS마다 설치 경로와 방식이 다르고, Conda나 여러 패키지 매니저가 섞여 있음  
    그래서 개발자가 앱이 의존할 수 있는 단일 환경을 만들고 싶었던 마음은 이해됨
  - 요즘 이런 식으로 시스템에 **무단 설치**를 시도하는 앱이 늘고 있음  
    최근에도 Python 앱을 실행했더니 Node/NPM을 설치하려고 해서 깜짝 놀랐음  
    내 컴퓨터는 내 작업공간이므로, 앱이 마음대로 설치하는 건 **공급망 공격 위험**이자 사용자에 대한 무례한 행위라고 생각함
  - 이건 결국 **정적 링크 vs 동적 링크**, **vim vs emacs** 같은 끝없는 논쟁의 시작일지도 모름

- 내가 만든 **Nightingale**은 음악 폴더를 지정하면 곡을 **자동으로 노래방 트랙**으로 변환해주는 앱임  
  보컬 분리, 가사 싱크, 피치 점수, 게임패드 지원, GPU 가속 등을 제공함  
  모든 처리는 로컬에서 이루어지고, 계정이나 구독, 텔레메트리도 없음  
  첫 실행 시 필요한 **ML 모델과 Python 환경**을 자동으로 설정함  
  Rust와 Bevy 엔진으로 작성했고, 완전한 오픈소스 프로젝트임
  - 예전에 신호처리를 공부했는데, 예전엔 트랙 분리가 어려웠음  
    지금은 **Demucs** 같은 신경망을 써서 해결하는 걸 보고 흥미로웠음  
    순수 수학적 접근으로도 경쟁할 수 있을지 궁금함
  - [B.E.D - Walk Away](https://www.youtube.com/watch?v=_MFT4H3VoNE)를 테스트했는데 30초 이후 가사 싱크가 어긋났음  
    재생 중 앞뒤로 **스킵 기능**이 필요하고, 문장부호 처리 및 결과 편집 기능이 있으면 좋겠음  
    그래도 FOSS로 공개해줘서 고마움
  - 정말 멋진 프로젝트임. FOSS 쪽에서 **노래방 앱**은 거의 없었는데, 이건 큰 진전임  
    CUDA 최소 사양과 AMD/Intel의 iGPU 가속 지원 계획이 있는지 궁금함  
    가족들이 써보길 기대 중임
  - [UltraSinger](https://github.com/rakuri255/UltraSinger)와의 차이가 궁금함. 품질 비교한 사람이 있는지 알고 싶음
  - WhisperX가 **중국어(한자)** 가사도 잘 처리하는지 궁금함
  - 일본어 곡을 테스트했는데 가사 정렬이 전혀 안 됨  
    코드에서 `line_text.split()`로 단어를 나누는데, 일본어는 띄어쓰기가 없으니 작동하지 않음  
    [fugashi](https://github.com/polm/fugashi) 같은 **형태소 분석기**를 써야 할 것 같음

- 예전 Firefox 기반의 **Nightingale 미디어 플레이어**가 떠올랐음  
  iTunes/Winamp 대안으로 개발됐지만 10년 넘게 활동이 없음  
  [getnightingale.com](https://getnightingale.com/)에서 옛 흔적을 볼 수 있음
  - 그게 Songbird의 후속 프로젝트였던 걸로 기억함

- 과거에 비슷한 **피치 트래킹** 프로젝트를 만든 적이 있음  
  현재 앱의 피치 라인이 다음 음 높이를 보여주는 기능인지 궁금함  
  - 현재는 단순한 **피치 점수 기능**만 있고, 다음 음 높이 예측은 아직 구현되지 않았음  
    좋은 기능 제안으로 받아들임

- 로컬 실행, 오픈소스, 열정 기반 프로젝트라서 정말 감동적임  
  이런 뉴스가 **인류애를 회복**시켜줌

- 커밋 히스토리를 보니 개발 속도가 매우 빠름  
  아마 **AI 보조 개발**을 활용한 듯함  
  “AI가 개발자를 대체한다”는 말과 반대로, AI가 **소규모 프로젝트의 실현 가능성**을 높여줬다고 생각함  
  - 비슷한 소프트웨어가 Windows 95 시절에도 있었음. 펜티엄 2에서도 가능했음

- 앱이 정확히 뭘 하는지 몰랐는데, 가사를 제거하는 줄 알았음  
  여러 곡을 시도했지만 보컬이 그대로 들림. 어떻게 **보컬 제거**를 조정하는지 모르겠음  
  - 키보드의 + / - 키로 **가이드 레벨**을 조정할 수 있음  
    [컨트롤 설명서](https://nightingale.cafe/docs/controls) 참고

- 정말 멋진 프로젝트임.  
  한 기기에서 곡을 처리하고 다른 기기에서 재생할 수 있는지, 혹은 **서버/클라이언트 모드**로 동작할 수 있는지 궁금함  
  - 관련 답변은 [이슈 #7](https://github.com/rzru/nightingale/issues/7)에 있음

- 음악가로서, 밴드 연주 중 **가사를 따라가며 표시해주는 앱**이 있으면 좋겠다고 생각함  
  지금은 휴대폰을 마이크 스탠드에 고정해두지만 금방 위치를 잃음  
  - 맞음, 이런 **실시간 싱크**는 Spotify조차 자주 틀림
