개발동기
팝송을 듣고 흥얼거리다가, 우연히 가사도 같이 볼 수 있으면 너무 좋겠다는 생각이 들었다. 사실 운전 중에 좋아하는 팝송이 나오면 네이버 선생님에게 가사를 보여달라고 검색하다가 놓쳐서 아쉬웠던 적이 많았기 때문이다.
노래가 나오면 가사가 함께 나오는 팝송 따라부르기 앱을 만들어보기로 했다. (나중에 안 일이지만, 이미 이런 서비스가 있었다!)
(기존) 어디선가 팝송이 나오면 → AI 에게 곡명 들려주고 확인 → 검색 → 가사 찾기 (이미 곡 놓침)
(희망) 어디선가 팝송이 나오면 → 앱 켜면 → 바로 가사 확인 (따라부르기)
마침 Gemini 3이 우수하다고 듣고 있었고, 새로 발표된 Antigravity도 궁금했다.
Antigravity는 Agent Manager가 주도적으로 개발하는 것이 특징이라고 하는데, 나는 Antigravity가 과연 Cursor(유료사용)를 대체할 수 있을지 궁금하기도 했어서, 이번에는 VS Code나 Cursor와 가능하면 동일한 환경에서 사용해보기로 했다.
앱의 이름은 Pop(팝송) + Scout(탐색가)라고 지었다.
사용한 개발도구
- Antigravity : 구글이 25년 11월에 발표한 새로운 AI 통합개발환경(IDE)
- Gemini 3 pro (High)
- AudD : 음악 인식 및 가사 데이터 제공 서비스 (REST API 기반)
- Spotify : 음원 스트리밍 서비스
- 프론트엔드 : React(UI 구축 라이브러리), Vite(Build Tool), Tailwind CSS(Styling 프레임워크), Axios(백엔드 API와 비동기 통신방식 HTTP Client)
- 백엔드 : Node.js(자바스크립트를 실행시켜주는 기반환경(Runtime)), Express(Node.js를 위한 Web Framework)
의도한 결과물 : 팝송 따라부르기 앱
- 들려오는 팝송의 제목과 가수를 바로 보여준다
- 영어 가사도 바로 보여준다
- 사용자는 들리는 노래를 영어가사로 따라 부를 수 있다
- 마음에 드는 곡은 나중을 위해 목록에 저장해준다.
개발과정
주변에서 들려오는 팝송을 듣고 곡명과 가수를 알아내는 앱을 웹으로 구현하고 싶어. 어떤 앱을 이용해야 할까? 또 모바일에서 가능하게 하려면 어떻게 해야할까?
웹에서 “지금 들리는 팝송이 뭔지” 인식하는 기능은 보통 음악인식 API를 붙여서 구현하는 방식이 가장 현실적입니다. 모바일 지원은 같은 API를 쓰되, PWA나 하이브리드 프레임워크(Flutter, React Native 등)로 래핑해서 마이크 권한을 써 주면 됩니다이게 도대체 먼 소린지 ... 웹에서 직접 음악 인식 알고리즘을 구현하기보다는 SaaS API를 사용하기를 권고하는 정도로 알아들었다. 쉽고 가장 간단하게 구현하는 방법을 요청하고, 따라해보기로 마음먹었다.그랬더니 다음과 같은 구조로 구현하는 거란다.
노래를 들려주면 React(프론트)에서 마이크 입력으로 몇 초간 녹음
→ Node 서버(Express, FastAPI 등)로 녹음된 Blob 업로드
→ Node 서버에서 AudD API로 전송해 곡 정보(JSON)를 받음
→ 곡명·가수·앨범 커버 등을 프런트(React)에 보여줌구현을 위해서는 우선 AudD(https://audd.io/)에서 API 토큰을 발급받아야 한다. 300번까지는 무료로 호출 가능한 것 같다. 발급받은 API 토큰은 환경변수에 넣어준다.