
现在的 Spotify、Apple Music、YouTube Music、QQ音乐、网易云音乐等都越来越依赖推荐算法。在本地音乐库越来越完整、自托管成为主流的今天,很多人开始不满足于 Spotify 式的「个性化播放列表」,而想要真正的「电台感」——同一条流、同一时间所有人听到同一首歌、中间有 DJ 串词、报时、天气和点歌互动。
于是最近出现了一类很有意思的开源项目:不再把本地音乐库做成“Spotify”,而是把它变成一座真正的私人广播电台。音乐自动播放,所有听众听到相同的节目;AI 负责挑歌、报时、播天气、介绍歌曲,甚至像真人 DJ 一样在歌曲播放过程中插话。
之前介绍过的 SUB/WAVE 就属于这一类。
最近 GitHub 上出现了一个非常轻量的此类项目:radio-dj,只需要一个 Go 二进制就能跑起完整的 24/7 AI DJ 网络电台。
radio-dj:https://github.com/johncrash64/radio-dj
与SUB/WAVE 一样,radio-dj 会读取你的本地音乐库,然后自动建立一条持续运行的广播链路:
音乐库 → AI DJ → ffmpeg → Icecast → 浏览器 / VLC / Sonos / 手机
与普通音乐播放器最大的区别在于:radio-dj 不是播放列表,而是真正的“广播流”。
radio-dj 使用 Icecast 输出一个公共 HTTP 音频流:
你的音乐库->radio-dj->AI DJ->ffmpeg->Icecast->stream.mp3->所有听众
任何人连接这个地址,听到的都是此刻正在广播的内容。
虽然非常轻量,但麻雀虽小五脏俱全,radio-dj 同样支持:
- 本地音乐库
- Navidrome
- AI 自动选歌
- AI DJ 主持
- TTS 语音
- 天气与时间
- 听众点歌
- Icecast 广播
- Web 播放器
但 radio-dj 最大的特点不是功能更多,而是:把整套 AI 电台压缩成一个约 9MB 的 Go 可执行文件。
radio-dj 的核心能力:
- 从本地音乐文件夹(或 Navidrome)取曲,持续播出 192kbps MP3 Icecast 流
- AI DJ 实时生成串词(歌曲介绍、时间、真实天气、冷知识、点歌感谢等),支持任意语言
- 实时中途闪避(ducking):用 sidechain 压缩在 DJ 说话时自动压低音乐音量,听感自然
- 支持听众通过 Web UI / API 点歌,DJ 会读出点歌人名字
- 可编辑的 Skills(纯文本文件,放在 ~/.radio-dj/skills/,无需重新编译)
- BYOK(Bring Your Own Key):支持任何 OpenAI 兼容接口(OpenAI、OpenRouter、Ollama、Groq、GLM 等)
- 默认 TTS 用 edge-tts,也可换成 piper 或系统 say
- 安装后可作为 systemd / launchd / OpenRC 服务常驻
- 自带 neo-brutalist 风格 PWA 界面,可安装到手机主屏幕
radio-dj 的资源占用极低:Go 进程本身约 20–30MB RAM,加上 Icecast + ffmpeg 总占用约 50MB 左右。安装脚本一键搞定依赖,上手非常快。
radio-dj 与 SUB/WAVE比较

简单总结:
如果你想要最低资源、最快落地、单文件部署,radio-dj 目前几乎没有对手。radio-dj 更适合“我想要一个 AI DJ”。
如果你想要完整的电台运营体验(多 DJ 人格、节目表、精美客户端、社区生态),SUB/WAVE 是更成熟的选择。SUB/WAVE 更适合“我想拥有一家 AI 电台”。
类似 radio-dj 的开源自托管电台平台:
SUB/WAVE :https://www.getsubwave.com/
AzuraCast:https://www.azuracast.com/
LibreTime:https://libretime.org/
Navidrome:https://www.navidrome.org/
WRIT-FM:https://github.com/keltokhy/writ-fm
Claudio:https://github.com/stevenjia93/claudio