본문으로 건너뛰기

트렌딩 - GitHub 인기 레포 & HuggingFace 모델

perminder-klair/subwave

TypeScript0 / 0

Navidrome 음악을 AI DJ가 선곡하고 Icecast로 함께 송출하는 self-hosted 라디오 플랫폼입니다.

TL;DR

SUB/WAVE는 Navidrome 음악 라이브러리를 바탕으로 AI가 선곡과 곡 사이 멘트를 수행하는 self-hosted 인터넷 라디오 플랫폼입니다. Icecast의 단일 공유 stream으로 모든 청취자에게 같은 방송을 전달하고, LLM과 TTS를 조합해 station ident, 날씨, 시간 안내, 곡 소개를 생성합니다. Docker Compose와 `subwave setup` CLI로 Linux 호스트에 배포하며 LLM provider, TTS engine, DJ persona, schedule, skill을 운영 중에 바꿀 수 있습니다. 라디오 방송의 일관된 편성, 자체 음악 보관, 세밀한 DJ 자동화를 원하는 운영자에게 적합하지만 Navidrome, Icecast, LLM, TTS 구성과 오디오 분석 서비스까지 관리해야 합니다.

핵심 포인트

  • SUB/WAVE는 독립 실행형 self-hosted 인터넷 라디오 애플리케이션이며 TypeScript 기반 CLI와 MCP server를 함께 제공합니다. Icecast 방송, Navidrome 음악 라이브러리, AI DJ controller, Next.js 웹 UI를 Docker Compose로 묶습니다. 특정 프레임워크의 플러그인보다는 한 대의 Linux 호스트에서 운영하는 통합 서비스에 가깝습니다.
  • AI DJ는 Navidrome의 곡을 고르고 LLM으로 곡 소개와 station ident를 작성한 뒤 TTS로 읽습니다. Ollama, Anthropic, OpenAI, Google, DeepSeek, OpenRouter 등 여러 LLM provider를 재배포 없이 교체할 수 있습니다. Piper와 Kokoro 같은 로컬 TTS부터 Chatterbox, PocketTTS, OpenAI, ElevenLabs까지 발화 유형별 엔진을 선택합니다.
  • 모든 청취자가 같은 Icecast mount에서 동일한 곡과 진행을 듣고 청취자용 skip은 제공하지 않습니다. 평문 요청은 DJ가 해석해 방송 queue에 삽입하며 운영자만 admin API에서 재생을 건너뛸 수 있습니다. 라디오의 편성 흐름과 개인 음악 라이브러리를 함께 운영하려는 경우에 적합합니다.
  • 24×7 schedule, 최대 24개 DJ persona, 최대 3명의 guest co-host, 편집 가능한 SKILL.md, mood-aware rotation을 지원합니다. 곡의 BPM, key, loudness, 종료 방식과 vocal 구간을 측정해 crossfade와 DJ speech ducking을 조정합니다. `/admin/playlists`의 자연어 playlist builder와 `/observatory`의 embedding 기반 Library Observatory가 운영 도구를 확장합니다.

이미지 분석

현재 곡 정보와 앨범 이미지, 진행 파형, 음량 및 신호 상태를 한 화면에 배치한 SUB/WAVE 청취용 player입니다.
화면 중앙에 `Celebrity Killer`와 아티스트, 장르·BPM·조성·에너지 정보가 표시되고 하단에는 재생 파형과 `Signal · Good` 상태가 배치되어 있습니다. 오른쪽 메뉴는 schedule, timeline, booth, request로 나뉘며 청취자가 공유 방송을 듣고 곡을 요청하는 구조를 드러냅니다. README가 말한 개인별 shuffle이 없는 단일 Icecast 방송과 in-app song request 기능이 실제 UI에 반영되어 있어 listener 경험을 확인하는 데 유용합니다.
UNIT SW-9 skin에서 현재 트랙과 다음 곡, 음량 조절, 음질 선택, 시각화 패널을 제공하는 대체 청취 화면입니다.
왼쪽에는 픽셀 도트 스타일의 시각화와 음량 조절기가 있고 오른쪽에는 `DXB`, 아티스트, 트랙 진행률, 막대형 레벨 표시가 나타납니다. 하단 카드에는 현재 곡과 interlude, 다음 곡 후보가 함께 표시되어 방송의 연속적인 queue를 확인할 수 있습니다. 여섯 가지 player skin과 MP3·Opus 같은 방송 포맷 선택을 지원한다는 README 내용과 직접 연결되는 화면입니다.
관리자 대시보드에서 실시간 청취자 수, DJ latency, TTS fallback, queue, booth log와 방송 제어를 확인하는 화면입니다.
상단에는 listeners, DJ latency, TTS fallback, on-air 상태가 수치와 게이지로 표시되고 중앙에는 다음 곡 queue와 최근 booth log가 배치되어 있습니다. 오른쪽 패널에서는 manual voice DJ 문장을 입력해 즉시 방송으로 보내고 station ID, time check, track link, banter 같은 DJ segment를 실행할 수 있습니다. AI DJ의 운영 상태와 수동 개입, 자동 선곡·자동 연결 설정을 한 화면에서 관리하는 구조라 self-hosted 운영 난이도를 판단하는 데 중요합니다.
DJ persona의 이름, tagline, 성격, 말하기 빈도, 문장 길이, 유머와 온기 같은 음성 스타일을 편집하는 관리자 화면입니다.
`Jazz` persona에 tagline과 성격 문장을 입력하고 talk frequency를 aggressive, script length를 concise로 조절하며 humour, local colour, warmth를 각각 다이얼로 설정합니다. 설정값은 DJ prompt와 발화 빈도에 반영되고 voice 섹션에서 언어와 음성을 연결하는 형태입니다. README의 최대 24개 persona, persona별 voice와 writing style, show별 host·co-host 편성 기능을 구체적인 운영 인터페이스로 확인할 수 있습니다.

1.3k

STARS

111

FORKS

+203

TRENDING

0

조회수

watchers 1.3kopen issues 51MIT License

관련 토론

아직 관련 토론이 없습니다.

댓글

댓글을 작성하려면 로그인이 필요합니다.