AI 활용

집 Sonos에서 나오는 곡의 가사를 스마트폰에 띄우는 앱을 AI와 아침 2시간 만에 만든 이야기

집 Sonos에서 나오는 곡의 가사를 스마트폰에 띄우는 앱을 AI와 아침 2시간 만에 만든 이야기

안녕하세요. まさきん입니다.

저희 집에서는 Sonos로 음악을 트는 일이 많습니다. 그런데 J-POP을 같이 따라 부르려고 하면 가사를 모르겠더라고요. 그래서 오늘 아침, 가사를 화면에 띄워 주는 앱을 만들어 봤습니다. Claude와 상의하면서 진행한 작업입니다.

※ 글 게시 시점의 정보입니다. 최신 조건은 공식 사이트에서 확인해 주세요.

POINT
  • Sonos에서 재생 중인 곡에 맞춰, 지금 부르는 줄이 스마트폰에서 빛나는 앱을 만들었습니다
  • Sonos 정보는 집에 있는 Mac에서 직접 읽어 옵니다
  • 가사는 무료 공개 데이터베이스 ‘LRCLIB’에서 가져옵니다
  • 가족에게 배포하는 건 Tailscale로 했고, 추가 비용은 0원이었습니다
  • 상담을 시작해서 아내의 iPhone에서 돌아가기까지 아침 약 2시간이 걸렸습니다

만든 것

스마트폰으로 열면 Sonos에서 나오는 곡의 가사가 표시됩니다. 지금 부르는 줄이 하얗게 빛나고, 화면이 자동으로 스크롤되면서 현재 줄을 가운데에 맞춰 줍니다.

써 보니 편리했던 기능도 몇 가지 있습니다.

줄 탭 기능은 생각보다 훨씬 편했습니다. ‘후렴만 한 번 더’가 바로 됩니다. 노래 연습에도 쓸 수 있을 것 같아요.

시작은 “만들 수 있을까?” 한마디

아침 6시 40분쯤 Claude에게 “만들 수 있을까?” 하고 물어본 게 시작이었습니다. 가장 먼저 확인받은 건 음악을 어디서 재생하느냐였습니다.

답은 Sonos였습니다. 집 안에서만 쓸 거라는 점, 그리고 Mac이 항상 켜져 있다는 점도 전했습니다. 이 두 가지로 구조의 틀이 거의 정해졌습니다.

주로 듣는 게 J-POP이라는 이야기도 했습니다. 이게 가사를 어디서 가져올지 고르는 결정적인 기준이 됐습니다. 처음에 ‘어디서’와 ‘무엇을’을 정해 두면 이야기가 빨리 진행된다고 느꼈습니다.

전체 구조

구조는 세 가지 부품으로 이루어져 있습니다.

  1. Sonos 본체(집 네트워크 안)
  2. 집 Mac에서 돌아가는 작은 중계 서버
  3. 스마트폰으로 여는 화면(PWA)

Mac의 중계 서버가 Sonos에서 곡명과 재생 위치를 읽어 옵니다. 동시에 가사 데이터베이스에서 타임스탬프가 붙은 가사를 가져옵니다. 스마트폰은 Mac에 1초마다 “지금 어디야?” 하고 물어서 빛낼 줄을 정합니다.

중계 서버는 외부 패키지 없이 짜 달라고 했습니다. Mac 쪽에 새로 설치한 건 없습니다. 집에서 돌릴 거라면 부품이 적을수록 안심이 되는 것 같아요.

Sonos는 집 안에서 직접 읽는다

Sonos에는 공식 클라우드 API도 있습니다. 다만 개발자 등록이나 로그인 연동 같은 준비가 필요합니다.

읽는 방법준비동작 위치어울리는 사용법
공식 클라우드 API개발자 등록·로그인 연동어디서든외출 중에도 조작하고 싶을 때
집 안에서 직접거의 필요 없음집 네트워크 안집 안에서만 쓸 때

이번에는 집 안에서 쓸 거라 직접 읽는 방식을 택했습니다. Sonos는 집 네트워크 안에서 곡명과 재생 위치를 알려 줍니다. 집에 5대가 있는데 자동으로 찾아 주었습니다.

여러 방을 묶어서 재생하는 ‘그룹’도 그대로 읽을 수 있습니다. 그래서 방마다 다른 곡을 틀고 있어도 고를 수 있습니다.

가사는 LRCLIB에서 가져온다

가사는 시간 정보가 붙어 있는 것이 필요합니다. ‘이 줄은 1분 23초부터’ 같은 정보죠. 이런 형식을 LRC라고 부릅니다.

후보 몇 가지를 비교해 봤습니다.

가져올 곳비용J-POP 타임스탬프 가사사용 편의성
LRCLIB무료유명한 곡은 꽤 많음API 키 없이 조회 가능
음악 스트리밍 서비스의 가사계약에 따라 다름풍부함개인용 창구가 없음
일본 가사 사이트무료로 볼 수 있음풍부함개인용 창구가 없음

LRCLIB은 자원봉사자들이 모으는 공개 데이터베이스입니다. J-POP이 얼마나 있는지 실제로 몇 곡 시험해 봤습니다.

가족이 함께 듣는 유명한 곡이라면 상당 부분 커버될 것 같습니다. 못 찾는 곡은 직접 LRC 파일을 넣어 두면 쓸 수 있게 만들어 달라고 했습니다.

로마자 곡명에서 막혔다

만들자마자 곤란한 일이 생겼습니다. 표시된 가사가 로마자였던 겁니다.

원인은 재생하던 YouTube Music의 곡 정보였습니다. 아티스트명이 ‘Aimyon’이나 ‘Kenshi Yonezu’처럼 로마자로 들어옵니다. 그대로 검색하니 로마자 가사가 선택되어 버렸습니다.

그래서 가사 속 일본어 비율을 점수에 반영하도록 했습니다. 가나나 한자가 많은 버전을 우선하는 방식입니다. 아티스트명이 로마자냐 일본어냐의 차이는 감점하지 않도록 했습니다.

곡명 쪽에도 궁리한 점이 있습니다. ‘타다 코에 히토츠 - One Voice’처럼 영어 부제가 붙는 곡이 있기 때문입니다. 부제나 괄호를 뗀 이름으로도 검색하도록 했습니다.

주의
  • 일본어 버전에 번역 가사가 섞여 있으면 로마자 버전이 선택되는 경우가 있습니다
  • 요네즈 켄시의 ‘Lemon’이 바로 이 경우였습니다
  • 그럴 때는 화면의 ‘후보’에서 다른 버전으로 바꿀 수 있습니다

1초 미만으로 맞추는 요령

또 하나의 과제는 타이밍 어긋남이었습니다. Sonos가 알려 주는 재생 위치는 초 단위에서 버림한 숫자입니다. 그대로 쓰면 최대 1초가 어긋납니다.

가사에서 1초는 의외로 큽니다. 줄이 늦게 바뀌면 노래 첫 소절을 놓치게 됩니다.

그래서 조금 궁리를 더해 달라고 했습니다. 실제 위치는 ‘돌아온 초’와 ‘그 1초 뒤’ 사이에 있을 겁니다. 화면 쪽에서 진행시키고 있는 예측값을 계속 그 범위 안에 붙잡아 둡니다.

1초마다 물어보는 사이에 범위가 점점 좁혀집니다. 테스트에서는 어긋남이 0.5초 이내로 들어왔습니다. 원리를 이해한 순간은 좀 짜릿했습니다.

스마트폰에서 쓰려면 HTTPS가 필요하다

처음에는 집 네트워크 안에서 그냥 열어서 썼습니다. 동작은 했지만 곤란한 점이 두 가지 있었습니다.

둘 다 HTTPS로 연 페이지에서만 쓸 수 있는 기능이었습니다. 화면을 꺼지지 않게 하는 기능(Wake Lock)은 보안 연결이 전제입니다.

여기서 도움이 된 게 원래 설치해 두었던 Tailscale입니다. Tailscale의 ‘serve’ 기능으로 Mac 서버에 정식 인증서가 붙은 URL이 생겼습니다. IP 주소를 고정할 필요도 없어집니다.

집 안의 이런 장치들은 늘 통신 위에서 돌아갑니다. 가족 스마트폰으로 쓰는 장치가 늘어날수록 회선 내용도 신경 쓰이게 되네요.

가입하지 않아도 100포인트를 받는 요금 시뮬레이션 가족 휴대폰 요금을 라쿠텐 모바일로 재점검하기

누르면 라쿠텐 로그인 페이지가 열립니다. 로그인하면 캠페인 내용이 표시됩니다.

가족에게 배포한다면 Tailscale

아내도 쓸 수 있게 하고 싶어서 배포 방법을 고민했습니다.

배포 방법상대가 할 일사용감신경 쓰이는 점
집 Wi-Fi에서 직접 열기없음화면이 꺼짐·앱처럼 안 됨집 밖에서는 못 씀
Tailscale에 초대앱 설치 후 로그인앱처럼 쓸 수 있음VPN 앱이 하나 늘어남
공개 URL에 로그인 걸기처음에 이메일 인증앱처럼 쓸 수 있음설정 수고가 늘어남

아내는 다른 앱도 Tailscale을 통해 쓸 예정이라 초대하는 방식으로 했습니다. Tailscale의 개인용 무료 플랜은 최대 6명까지 쓸 수 있습니다. 가족이 쓰기에는 충분하죠.

아내 iPhone에서의 절차는 다음 네 가지뿐이었습니다.

  1. 초대 링크를 열고 계정을 만든다
  2. App Store에서 Tailscale을 설치하고 같은 계정으로 로그인한다
  3. ‘VPN 구성 추가’를 허용한다
  4. Safari에서 URL을 열고 홈 화면에 추가한다

아내 iPhone에서 보이지 않았던 이유

절차대로 진행했는데도 아내 iPhone에서 Mac이 보이지 않았습니다. Tailscale 앱은 ‘연결됨’ 상태였습니다. 그런데 보이는 기기가 자기 한 대뿐이었습니다.

관리 화면을 보니 기기 상태에 ‘Owner needs approval’이라고 떠 있었습니다. 기기가 아니라 사용자 승인 대기였던 겁니다.

공식 설명에 따르면 2025년 5월 22일 이후에 만든 tailnet은 사용자 승인이 처음부터 켜져 있습니다. 승인 전의 사용자는 Tailscale에 접속은 됩니다. 하지만 다른 기기와는 통신할 수 없습니다.

관리 화면의 ‘Users’에서 승인하자 바로 보이게 됐습니다. 가족을 초대할 때는 이 부분을 기억해 두면 좋겠습니다.

Mac에서 계속 돌리기 위한 소소한 팁

중계 서버는 Mac의 상주 실행 구조(launchd)로 돌리고 있습니다. 죽어도 자동으로 다시 뜨도록 설정했습니다.

저희 집만의 규칙이 하나 있습니다. launchd로 프로그램을 직접 실행하면 문서 폴더를 읽지 못해 죽는 경우가 있습니다. 그래서 셸을 거쳐 실행하는 형태로 통일하고 있습니다.

이번에도 Claude가 처음에는 직접 실행하는 형태로 작성했습니다. 저희 집 체크 장치가 이를 잡아내서 바로 고쳐 받을 수 있었습니다. 집의 규칙을 문서로 정리해 두면 AI와 작업할 때도 효과가 있다고 느낍니다.

들어간 비용과 시간

항목내용
추가 비용0원
Sonos 읽기집 안에서 직접(등록 불필요)
가사LRCLIB(무료)
가족 배포Tailscale 무료 플랜
소요 시간아침 6시 40분에 상담 시작→9시쯤 아내 iPhone에서 동작

Mac은 원래 항상 켜 두던 것을 쓰고 있습니다. 새로 산 건 없습니다.

잘 맞는 사람·안 맞는 사람

잘 맞을 것 같은 건 이런 가정입니다.

반면 안 맞는 경우도 있습니다.

자주 묻는 질문

Q. 프로그래밍 지식이 필요한가요?

이번에는 코드를 전부 Claude가 작성해 주었습니다. 다만 Mac의 터미널이나 launchd 개념을 알면 안심이 됩니다. 막혔을 때 어디가 문제인지 함께 생각하기가 쉬워집니다.

Q. Spotify나 Apple Music에서도 쓸 수 있나요?

Sonos로 재생하고 있다면 곡명과 재생 위치는 Sonos에서 가져올 수 있습니다. 그래서 스트리밍 서비스 종류는 크게 상관없을 겁니다. 제가 시험해 본 건 YouTube Music뿐입니다.

Q. 가사를 못 찾는 곡은 어떻게 되나요?

화면에 ‘가사를 찾지 못했습니다’라고 나옵니다. ‘후보’에서 다른 버전을 다시 찾아볼 수 있습니다. 그래도 없으면 직접 LRC 파일을 넣어 두면 다음부터 쓸 수 있습니다.

Q. 집 밖에서도 쓸 수 있나요?

Tailscale을 거치면 외출 중에도 열 수 있습니다. 다만 표시되는 건 집 Sonos에서 흐르는 곡입니다. 밖에서 듣고 있는 곡의 가사가 나오는 건 아닙니다.

Q. 가사 타이밍이 어긋날 때는요?

화면 아래의 ‘빠르게/느리게’로 0.3초씩 조정할 수 있습니다. 조정한 값은 곡마다 기억하므로 다음부터는 그대로 적용됩니다.

Q. iPhone에서도 화면이 꺼지지 않게 되나요?

HTTPS로 열었다면 최근 iOS에서는 작동할 겁니다. 오래된 iOS에서는 홈 화면에서 열었을 때 작동하지 않는 경우가 있습니다. iOS를 최신으로 유지해 두면 안심입니다.

Q. 월 비용이 드나요?

저희 집의 경우 0원이었습니다. LRCLIB은 무료이고, Tailscale은 개인용 무료 플랜 범위 안입니다. Mac 전기료 정도일 것 같아요.

참고한 공식 정보

집 자동화 이야기는 다른 글에도 썼습니다. Cloudflare Workers 무료 플랜에서 Cron이 부족해졌을 때와 학교 안내문을 집 사이니지에 띄우는 구조도 함께 읽어 보세요.

마무리

“만들 수 있을까?”로 시작해서 아침 2시간 만에 가족이 쓸 수 있는 데까지 왔습니다. 어려웠던 건 로마자 곡명과 타이밍 어긋남 정도였습니다. 둘 다 실제 곡으로 시험하면서 고칠 수 있었습니다.

가사를 따라가며 가족과 함께 노래하는 건 생각보다 훨씬 즐겁습니다. Sonos가 있는 집이라면 한번 시도해 볼 가치가 있을지도 모릅니다.

가입하지 않아도 100포인트를 받는 요금 시뮬레이션 가족 통신비를 라쿠텐 모바일로 체크하기

누르면 라쿠텐 로그인 페이지가 열립니다. 로그인하면 캠페인 내용이 표시됩니다.

이 글에는 제휴 광고가 포함되어 있습니다. 이 사이트의 링크를 통해 상품·서비스에 신청하시면 제휴사로부터 보상을 받을 수 있습니다. 또한 운영자는 라쿠텐 그룹 소속 직원으로, 사원 추천 프로그램을 통해 보상을 받는 경우가 있습니다. 기사 내용과 평가는 광고 유무와 관계없이 운영자의 실제 경험과 조사를 바탕으로 작성했지만, 위 관계를 이해하신 후 읽어 주시기 바랍니다. 자세한 내용은 면책조항·제휴 링크 안내를 참고해 주세요. 면책조항·제휴 링크 안내

이 글에는 기계 번역이 포함되어 있습니다. 정확한 조건은 라쿠텐 모바일 공식 사이트의 다국어 페이지에서 확인해 주세요.

라쿠텐 모바일의 통신 지역·전파 상황이 궁금하신 분은, 공식 전파 개선·조사 요청 양식 을 통해 문의하실 수 있습니다.

ABOUT THE AUTHOR
まさきん

라쿠텐 그룹 근무·디지털 마케터(FP 자격 보유)

40대 초반, 맞벌이·네 자녀의 아빠. 라쿠텐 그룹에서 디지털 마케터로 근무하면서, 재무설계사(FP) 자격을 활용해 가계 관리와 자산 형성에도 힘쓰고 있다.

프로필 보기

관련 글

RELATED
Gemini(Google AI Pro) 패밀리 공유는 가족 5명까지. 설정 절차와 범위 AI 활용

Gemini(Google AI Pro) 패밀리 공유는 가족 5명까지. 설정 절차와 범위

Google AI Pro는 관리자 외에 가족 5명까지 공유할 수 있습니다. Gemini 앱과 저장용량은 공유되고 YouTube Premium Lite는 관리자만. Flow 한도는 가족이 나눠 씁니다. 설정 절차와 자녀 계정 처리를 공식 도움말로 정리했습니다.

2026.10.13 · 읽는 시간 약 13분
AI 구독 청구일과 가계부가 어긋나는 3가지 이유|Claude는 업그레이드하면 청구일이 바뀐다 AI 활용

AI 구독 청구일과 가계부가 어긋나는 3가지 이유|Claude는 업그레이드하면 청구일이 바뀐다

Claude는 월 중간에 Max로 올리면 청구 주기가 리셋되어 그날이 새로운 청구일이 됩니다. 달러 결제의 엔화 환산은 카드사에 데이터가 도착한 시점에 정해지고, 명세와 가계부 반영은 며칠 늦습니다. 영수증 메일을 기준으로 월을 정하는 5단계를 정리했습니다.

2026.10.13 · 읽는 시간 약 14분
freee 회계의 미처리 내역을 월 1회 대사 작업으로. 매월 5일 7:30·3구분·상한 15건으로 사람에게 넘기는 설계 AI 활용

freee 회계의 미처리 내역을 월 1회 대사 작업으로. 매월 5일 7:30·3구분·상한 15건으로 사람에게 넘기는 설계

freee 회계의 미처리 내역이 18건 정도, 주간 확인 6번 동안 움직이지 않은 채 남아 있었습니다. 매월 5일 아침 7:30에 집 Mac에서 돌리는 대사 작업의 설계와, 확정할 수 있는 분은 월 1건, 망설여지는 내역은 1건씩 상한 15건으로 사람에게 넘기는 기준을 정리합니다.

2026.10.12 · 읽는 시간 약 15분
라쿠텐 모바일로 전환 시 최대 14,000포인트 가입하지 않아도 100포인트를 받는 요금 시뮬레이션 →
지금 신청하기 →