SUB/WAVE 是一个开源的自托管个人网络电台系统。它不仅仅是一个音乐播放器,而是一个真正的广播电台模拟器。通过连接你本地的 Navidrome 音乐库,SUB/WAVE 利用大语言模型(LLM)扮演 DJ,实时策划曲目、撰写串词、播报天气与时间,并通过 Icecast 协议向所有听众广播相同的音频流。

在这里,没有“跳过”按钮,没有个性化推荐算法,只有共享的收听体验和一位懂你口味的 AI 主持人。
核心理念:是电台,不是点唱机
- 📻 共享流体验:所有听众连接到同一个 Icecast 挂载点,在同一时刻听到完全相同的内容。这还原了传统广播的集体共鸣感。
- 🚫 无跳过机制:曲目结束是唯一的自然过渡。DJ 掌控节奏,听众只需调频收听。这种“被动式”体验让人从选择困难中解放出来,专注于聆听。
- 🎵 本地曲库驱动:音乐完全来自你自己的 Navidrome 库(通过 Subsonic API 获取)。AI 不生成音乐,而是作为策展人,挖掘你收藏中的宝藏。
功能亮点
🤖 AI DJ 与多角色互动
- 智能策展:DJ 理解自然语言指令(如“来点更有活力的”或“放首 Radiohead”),并将其插入播放队列。
- 生动播报:在曲目间隙,DJ 会播报电台标识、当前时间、天气状况,并对即将播放的歌曲进行简短介绍。
- 多角色支持:支持最多 24 个不同的 DJ 角色,每个角色拥有独特的声音和写作风格。甚至可以安排三位客座联合主持人,进行脚本化的互动对话。
- 情绪感知:DJ 的风格和选曲会根据时间、天气、节日甚至当前情绪自动调整。
🔊 专业级广播技术
- 多格式输出:始终提供 MP3 流,并可选 Opus、AAC 和无损 FLAC 挂载点。网页播放器会自动选择最佳格式。
- 平滑过渡:支持曲目间的淡入淡出(Crossfade)以及 DJ 语音下的音乐自动闪避(Ducking),确保听感专业流畅。
- 每小时存档:自动将每小时的广播内容保存为 MP3 文件,方便日后回听精彩片段。
🛠️ 高度可定制与自托管
- 灵活的 LLM 后端:支持 Ollama、Anthropic、OpenAI、Google、DeepSeek 等几乎所有兼容 OpenAI 的接口。可在管理界面随时切换,无需重新部署。
- 多样的 TTS 引擎:内置 Piper 和 Kokoro 用于快速本地语音合成,也可集成 Chatterbox、PocketTTS 或云端服务。不同角色可使用不同引擎。
- 可插拔技能:天气、新闻、交通等播报内容均为“技能”模块。内置技能以可编辑文件形式存在,用户可直接在控制台修改,无需编写代码。
- 定时节目表:支持 24×7 节目编排,不同时段可设定不同的 DJ 角色、情绪基调和技能组合。
📱 全平台覆盖与生态集成
- 原生应用与 PWA:提供 iOS、Android 和桌面原生播放器,以及可安装的渐进式 Web 应用(PWA)。
- 数据同步:播放记录可自动上报至 Last.fm 和 ListenBrainz。
- MCP 服务器:外部智能体可以通过 MCP 协议请求歌曲或驱动 DJ,实现更复杂的自动化工作流。
- 图书馆观测站:一个全屏的数据艺术地图,可视化展示你标签化的曲目分布。
为何选择 SUB/WAVE?
- 找回广播的浪漫:在算法推荐泛滥的今天,SUB/WAVE 提供了一种带有“人情味”和“不确定性”的收听体验。
- 隐私与自主:所有数据留在本地,音乐版权归你,AI 只是你的私人雇员。
- 极客的乐趣:从配置 LLM 参数到设计 DJ 人设,再到调整混音效果,整个过程充满了创造性和可控性。
- 社交属性:你可以邀请朋友加入你的私人电台,大家听着同一首歌,听着同一个 DJ 的吐槽,产生真实的连接。
快速开始
SUB/WAVE 设计为在单个 Linux 主机上运行(建议部署在 Cloudflare Tunnel 后以暴露公网 IP)。
- 准备环境:确保已安装 Docker 和 Navidrome。
- 配置 LLM:在管理界面填入你的 API Key(或使用本地 Ollama 地址)。
- 连接音乐库:输入 Navidrome 的 Subsonic API 地址和凭证。
- 启动广播:选择初始 DJ 角色,点击“开始广播”,你的私人电台就上线了!