【免费下载链接】subwave
Personal internet radio: Agentic AI DJ
SUB/WAVE 是一款自托管的个人 AI 网络电台:所有听众连接同一条 Icecast 直播流,同一时刻听到同一场广播,而由 AI DJ 负责选歌、报时、说天气和在歌曲之间串场。它刻意不是"播放列表"——没有随机乱序,没有跳过按钮,也没有"为你推荐的下首歌"。本文用大白话拆解它的 6 个核心概念,帮你看懂这套 AI 电台的设计哲学。
一条共享广播流:为什么它不是播放列表
播放列表是"你控制的一张歌单",广播是"你加入的一场播出"。SUB/WAVE 属于后者:
- 只有一条流。所有设备(网页、手机 App、Sonos、车机)都连接到同一个 Icecast mount,每个字节都同步——这正是它成为"电台"而不是"点唱机"的原因。
- AI 是 DJ,不是曲库。音乐全部来自你自己的曲库(通过 Navidrome 提供),LLM 只负责决定"下一首放什么"并在歌曲间隙开口说话。它不生成音乐,也不代替你的品味。
- 自托管、可替换。一台 Linux 机器 +
docker compose up -d即可开播,LLM 服务商可以在管理界面随时切换,无需重新部署。
这张截图里的细节很有代表性:"Next on the platter: nothing cued – Marlowe decides at the run-out"(下一首尚未确定——由 DJ 在歌曲收尾时决定)。在 SUB/WAVE 里,你看到的永远是"正在播",而不是"接下来要播的 10 首"。
没有 skip 按钮:广播的哲学底线
这是新手最常问的问题:为什么不能跳过一首歌?
答案写在 README.md 里:歌曲播完是唯一自然的过渡点,节奏归 DJ 管,不归听众管。运营者(也就是你自己)可以通过管理 API 跳歌,但普通听众不行。
这个"底线"换来了三样东西:
- 真实的播出感——所有人共享同一个时间线,点歌请求按顺序在自然间隙插入,而不是各听各的;
- 过渡的工程质量——混音管线(liquidsoap/radio.liq)可以精确地围绕"歌曲结束"安排交叉淡化、串场口播甚至 stem 混音,因为边界是确定的;
- 节目结构——没有随时打断,节目表、整点报时、台标口播才能像真正的电台一样准时运转。
AI DJ 如何选歌和串场:不是曲库生成器
AI 在这套电台里扮演的是"人",而不是"搜索引擎":
- 选歌:默认启用 agent 模式,模型带着一组"发现工具"(按声音搜、按歌词搜、按情绪搜、按能量搜……)在你的曲库里主动搜索,再用一次
done提交选择;超时或失败会自动回退到候选池模式,任何情况下都不会断播。 - 串场:台标、整点报时、天气、新闻、给点歌听众的回应——都由 LLM 写稿、TTS 合成,并在合适的间隙播出,音乐会自动"让路"(ducking)。
- 人设:最多 24 个 DJ persona,各有独立的声音、语气和幽默度旋钮;一个节目甚至可以有 3 位嘉宾主持互相接话。
左侧的Queue(接下来播什么)、中间的Booth Log(DJ 每一次选歌的完整推理记录)、右侧的Manual Voice(运营者随时插一句话上播)——这就是"广播间"的视角。
DJ 的耳朵:它真的"看懂"了你的曲库
选歌不是玄学。内置的分析器会为每首歌测量 BPM、调性、响度、情绪,甚至歌曲结尾的真实形态(长渐弱还是冷不丁停住),串场长度据此自适应。所有分析结果在/observatory页面聚成一张数据艺术地图:
每颗点是一首歌,颜色是能量值。点进去能看到完整"档案":BPM、调性、情绪、embedding 指纹和向量空间里的近邻。曲库从几百首到几万首都能承载——这就是 AI DJ"品味"的物质基础。
节目表(Shows)与播放列表(Playlists)的区别
很多新手以为它们是二选一,其实它们是两层,Show 可以使用 Playlist:
| Playlist(播放列表) | Show(节目) | |
|---|---|---|
| 本质 | 一组有名字的歌 | 节目表上的一格播出时段 |
| 有固定时间 | ❌ | ✅(这本来就是它的意义) |
| 有 persona / 主题 / 过滤条件 | ❌ | ✅ |
| 位置 | Navidrome / Admin → Playlists | Admin → Shows、Schedule |
一句话判断法:"固定时段、固定人设的节目"用 Show;"随处可取的一组歌"用 Playlist;"这一小时只播这些歌"= Show 锚定 Playlist 并打开 strict 模式。24×7 的节目网格让深夜档安静、通勤档提气,每格都能指定自己的 persona、情绪和技能——这是"广播"才有的时间结构。详细对比见 docs/concepts.md。
用大白话点歌 + 为什么坚持自托管
听众可以说"放点更上头的"或"来首 Radiohead",DJ 会理解意图、在下一个自然间隙把歌插进队列,并念一句回应。整套广播逻辑(队列、会话、DJ agent、调度器、台标)集中在 controller/src/broadcast/,选歌与曲库交互在 controller/src/music/,想深入机制可以读 docs/internals/broadcast.md。
而自托管是这一切的前提:
- 音乐不出你的服务器——曲库、收听记录、点歌历史全在自己手里;
- LLM 想换就换(Ollama、OpenAI、Anthropic、Google、DeepSeek 等),每日 token 预算超限后会"降级":少说话,但音乐不停;
- 部署文档在 DEPLOY.md,从零到开播大致是:
curl -fsSL https://cli.getsubwave.com | sh # 安装并启动 subwave setup # 连接 Navidrome 曲库 + LLM小结:一句话记住 SUB/WAVE
播放列表是"我控制什么",SUB/WAVE 是"我加入什么"。
一条共享流、一个有性格的 AI DJ、一张 24×7 的节目表、一座你完全自持的服务器——这就是"广播"而不是"播放列表"的全部含义。📻
【免费下载链接】subwave
Personal internet radio: Agentic AI DJ
相关推荐
Docker项目核心概念解析:什么是容器镜像?
Docker项目核心概念解析:什么是容器镜像? 容器技术已经成为现代应用开发和部署的重要基石,而容器镜像则是这一技术的核心组件。本文将深入解析Docker项目中
文档教程Screenbox媒体播放器:为什么它是我用过最省心的Windows播放器?
Screenbox媒体播放器:为什么它是我用过最省心的Windows播放器? 还在为电脑上的视频播放问题头疼吗?格式不支持、界面复杂、功能缺失...这些问题Sc
音视频视频5大实战技巧玩转ComfyUI API节点:从零构建多模态AI工作流
5大实战技巧玩转ComfyUI API节点:从零构建多模态AI工作流 还在为AI工具链断裂而头疼?ComfyUI的API节点系统让你无缝对接Stability
人工智能大模型媒体生成本地部署
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考