[{"data":1,"prerenderedAt":49},["ShallowReactive",2],{"content:\u002Farticles:home-assistant-with-mi-smart-speaker-navidrome":3},{"item":4,"md":14,"html":15,"menu":16,"excerpt":47,"related":48},{"title":5,"len":6,"tags":7,"id":9,"customSlug":10,"time":11,"modifyTime":12,"showComments":13,"encrypt":13},"Home Assistant 让小爱音箱播放 Navidrome 音乐",5614,[8],"home assistant",9123,"home-assistant-with-mi-smart-speaker-navidrome",1788629777911,1788673496920,false,null,"\u003Ch1 data-marked-line=\"1\">\u003Csup class=\"fake-head\" id=\"%E7%94%A8%20Home%20Assistant%20%E8%AE%A9%E5%B0%8F%E7%88%B1%E9%9F%B3%E7%AE%B1%E6%92%AD%E6%94%BE%20Navidrome%20%E9%9F%B3%E4%B9%90\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E7%94%A8%20Home%20Assistant%20%E8%AE%A9%E5%B0%8F%E7%88%B1%E9%9F%B3%E7%AE%B1%E6%92%AD%E6%94%BE%20Navidrome%20%E9%9F%B3%E4%B9%90\">用 Home Assistant 让小爱音箱播放 Navidrome 音乐\u003C\u002Fa>\u003C\u002Fh1>\u003Cp data-marked-line=\"3\">&emsp;&emsp;最近买了个小爱音箱，想折腾一下放我之前无聊部署的Navidrome音乐。\u003C\u002Fp>\n\u003Cp data-marked-line=\"5\">&emsp;&emsp;Navidrome 负责管理曲库，Home Assistant 里也已经有小爱音箱的 \u003Ccode>media_player\u003C\u002Fcode> 实体。两边看起来都准备好了，但真正连起来还有几个问题：怎么把语音识别到的名称对应到曲库，怎么让音箱访问音频，怎么连续播放歌单，以及怎么让语音、网页和 Home Assistant 自动化操作同一份播放队列。\u003C\u002Fp>\n\u003Cp data-marked-line=\"7\">&emsp;&emsp;所以我vibe了一个 Home Assistant HACS 自定义集成：\u003Csup>\u003Ca id=\"footnote-ref-1\" href=\"#footnote-1\" data-footnote-ref aria-describedby=\"footnote-label\">[1]\u003C\u002Fa>\u003C\u002Fsup>。\u003C\u002Fp>\n\u003Cp data-marked-line=\"9\">&emsp;&emsp;简单来说，这个集成把 Navidrome 曲库接入 Home Assistant，再通过已有的 \u003Ccode>media_player\u003C\u002Fcode> 实体把音乐下发给小爱音箱。配置、曲库索引、播放队列、语音事件和侧栏页面都在 Home Assistant 内运行。\u003C\u002Fp>\n\u003Cp data-marked-line=\"11\">\u003Cspan class=\"image-container\">\u003Cimg data-viewer alt=\"\" title=\"\" src=\"https:\u002F\u002Fr2-blog.yunyuyuan.net\u002F2026-09-06-fbee46f9.png\"\u002F>\u003Csmall class=\"desc\">\u003C\u002Fsmall>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch2 data-marked-line=\"13\">\u003Csup class=\"fake-head\" id=\"%E6%95%B4%E4%BD%93%E6%80%9D%E8%B7%AF\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E6%95%B4%E4%BD%93%E6%80%9D%E8%B7%AF\">整体思路\u003C\u002Fa>\u003C\u002Fh2>\u003Cp data-marked-line=\"15\">整个播放流程并不复杂：\u003C\u002Fp>\n\u003Cpre data-marked-line=\"17\" class=\"mermaid-block\">flowchart TD\n    A[&quot;小爱语音记录 \u002F Home Assistant 服务 \u002F 侧栏页面&quot;] --&gt; B[&quot;XiaoAI Navidrome 集成&quot;]\n    B --&gt; C[&quot;匹配曲目或读取歌单&quot;]\n    C --&gt; D[&quot;创建 Navidrome 限时分享链接&quot;]\n    D --&gt; E[&quot;media_player.play_media&quot;]\n    E --&gt; F[&quot;小爱音箱&quot;]\u003C\u002Fpre>\u003Cp data-marked-line=\"26\">集成提供了三个操作入口：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>入口\u003C\u002Fth>\n\u003Cth>用途\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>小爱语音\u003C\u002Ftd>\n\u003Ctd>播放单曲、播放歌单、上一首、下一首和停止\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Home Assistant 侧栏\u003C\u002Ftd>\n\u003Ctd>浏览曲库、搜索、查看歌单和维护播放队列\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Home Assistant 原生服务\u003C\u002Ftd>\n\u003Ctd>在自动化、脚本和开发者工具中控制播放\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp data-marked-line=\"34\">&emsp;&emsp;这三个入口并不是三套独立逻辑。它们使用同一份持久队列，所以从语音开始播放后，侧栏会立即显示当前曲目和完整队列；在侧栏里切到下一首，语音控制对应的也是新的位置。\u003C\u002Fp>\n\u003Ch2 data-marked-line=\"36\">\u003Csup class=\"fake-head\" id=\"%E9%9F%B3%E7%AE%B1%E5%A6%82%E4%BD%95%E8%AE%BF%E9%97%AE%20Navidrome%20%E9%9F%B3%E9%A2%91\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E9%9F%B3%E7%AE%B1%E5%A6%82%E4%BD%95%E8%AE%BF%E9%97%AE%20Navidrome%20%E9%9F%B3%E9%A2%91\">音箱如何访问 Navidrome 音频\u003C\u002Fa>\u003C\u002Fh2>\u003Cp data-marked-line=\"38\">&emsp;&emsp;Subsonic 的普通串流地址通常会带上用户名、salt、token 和一串查询参数。我不希望把这些内容直接交给音箱，而且某些音箱对复杂 URL 的处理也不够稳定。\u003C\u002Fp>\n\u003Cp data-marked-line=\"40\">&emsp;&emsp;Navidrome 提供了分享功能。集成会通过 Navidrome API 为当前曲目创建限时 share，再从分享播放列表中取得 \u003Ccode>\u002Fshare\u002Fs\u002F...\u003C\u002Fcode> 形式的签名路径。最终下发给音箱的是一个没有查询参数、用户名和 Subsonic 凭据的 URL。Navidrome 的公开分享流也支持音频播放所需的 Range 请求。\u003Csup>\u003Ca id=\"footnote-ref-2\" href=\"#footnote-2\" data-footnote-ref aria-describedby=\"footnote-label\">[2]\u003C\u002Fa>\u003C\u002Fsup>\u003C\u002Fp>\n\u003Cp data-marked-line=\"42\">&emsp;&emsp;Home Assistant 访问 Navidrome 的地址和音箱访问音频的地址可以分开配置。例如 Home Assistant 可以通过局域网地址读取 API，而音箱使用一个能够访问 \u003Ccode>\u002Fshare\u002F\u003C\u002Fcode> 的 HTTPS 地址下载音乐。\u003C\u002Fp>\n\u003Cp data-marked-line=\"44\">&emsp;&emsp;集成会校验分享播放列表中的地址，只接受预期的 \u003Ccode>\u002Fshare\u002Fs\u002F\u003C\u002Fcode> 路径。队列被替换或清空后，不再使用的 share 也会被回收；即使临时删除失败，链接仍会在有效期结束后失效。\u003C\u002Fp>\n\u003Ch2 data-marked-line=\"46\">\u003Csup class=\"fake-head\" id=\"Home%20Assistant%20%E4%BE%A7%E6%A0%8F%E9%A1%B5%E9%9D%A2\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#Home%20Assistant%20%E4%BE%A7%E6%A0%8F%E9%A1%B5%E9%9D%A2\">Home Assistant 侧栏页面\u003C\u002Fa>\u003C\u002Fh2>\u003Cp data-marked-line=\"48\">&emsp;&emsp;安装完成后，Home Assistant 侧栏会出现一个音乐页面。这个页面由集成直接注册，使用当前 Home Assistant 登录会话调用后端 WebSocket 命令。\u003Csup>\u003Ca id=\"footnote-ref-3\" href=\"#footnote-3\" data-footnote-ref aria-describedby=\"footnote-label\">[3]\u003C\u002Fa>\u003C\u002Fsup>\u003C\u002Fp>\n\u003Cp data-marked-line=\"50\">&emsp;&emsp;页面默认打开歌单列表，也可以切换到曲目并搜索整个曲库。曲目和歌单都支持封面与详情，点击行为则尽量保持直接：\u003C\u002Fp>\n\u003Cul data-marked-line=\"52\">\n\u003Cli>\u003Cp data-marked-line=\"52\">点击曲库中的曲目，会清空现有队列并立即播放该曲目。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp data-marked-line=\"54\">点击歌单，会进入歌单详情。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp data-marked-line=\"56\">点击歌单中的某一首，会把完整歌单加入队列，并从点击的曲目开始播放。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp data-marked-line=\"58\">点击队列中的曲目，只会移动当前播放位置，不改变队列顺序。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-marked-line=\"60\">&emsp;&emsp;播放器部分提供上一首、播放或暂停、下一首、清空队列和播放模式。播放模式可以在顺序循环、随机播放和单曲循环之间切换。进度、音量和静音控制则取决于当前 \u003Ccode>media_player\u003C\u002Fcode> 实体是否声明了对应能力，集成不会绕过 Home Assistant 实体本身的限制。\u003Csup>\u003Ca id=\"footnote-ref-4\" href=\"#footnote-4\" data-footnote-ref aria-describedby=\"footnote-label\">[4]\u003C\u002Fa>\u003C\u002Fsup>\u003C\u002Fp>\n\u003Cp data-marked-line=\"62\">&emsp;&emsp;页面支持日间、夜间和跟随 Home Assistant 三种主题。桌面端使用左右两栏，播放器和队列会停留在右侧；移动端则把播放器放到曲库上方，并用更紧凑的单列歌单列表。\u003C\u002Fp>\n\u003Cp data-marked-line=\"64\">&emsp;&emsp;封面不会直接从浏览器携带 Navidrome 凭据加载，而是经过 Home Assistant 鉴权代理。页面会根据实际显示尺寸请求缩略图，并在同一个 Home Assistant 浏览器页面中缓存已经加载的封面。从其他页面返回后，命中的封面不需要重新下载。\u003C\u002Fp>\n\u003Cp data-marked-line=\"66\">&emsp;&emsp;界面支持英语和简体中文，默认使用英语。语言只能在“设置 → 设备与服务 → XiaoAI Navidrome → 配置”中修改，页面本身没有额外的语言按钮。\u003C\u002Fp>\n\u003Ch2 data-marked-line=\"68\">\u003Csup class=\"fake-head\" id=\"%E8%AF%AD%E9%9F%B3%E7%82%B9%E6%AD%8C\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E8%AF%AD%E9%9F%B3%E7%82%B9%E6%AD%8C\">语音点歌\u003C\u002Fa>\u003C\u002Fh2>\u003Cp data-marked-line=\"70\">&emsp;&emsp;如果米家集成提供了包含小爱语音识别结果的 conversation 传感器，可以在配置页面中选择它。之后集成会监听这个实体的状态变化，并识别下面几类口令：\u003C\u002Fp>\n\u003Cpre data-marked-line=\"72\" data-lang=\"\" data-shiki>\u003Ccode class=\"language-\">\u003Cspan class=\"line\">\u003Cspan>播放家庭音乐&#x3C;曲目名称>&#x3C;歌手名称>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>播放家庭歌单&#x3C;歌单名称>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>上一首家庭音乐\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>下一首家庭音乐\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>停止家庭音乐\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp data-marked-line=\"80\">&emsp;&emsp;两个播放前缀都可以在集成配置中修改。传感器如果反复刷新同一条语音记录，集成会根据时间戳、conversation ID 或 sequence 去重，避免同一条命令被重复执行。\u003C\u002Fp>\n\u003Cp data-marked-line=\"82\">&emsp;&emsp;语音点歌的另一个问题是名称匹配。曲库中的标题不一定和说出来的内容完全一致，可能包含简繁体差异、大小写、日文假名或罗马字。\u003C\u002Fp>\n\u003Cp data-marked-line=\"84\">&emsp;&emsp;为了解决这个问题，集成会为曲目建立多组检索键，包括 Unicode NFKC、简繁转换、中文完整拼音、日文读音、平假名、片假名和罗马字，再结合字符距离进行排序。它不会生成拼音首字母，因为这种检索方式很容易让短词产生大量无关候选。\u003C\u002Fp>\n\u003Cp data-marked-line=\"86\">&emsp;&emsp;如果需要处理没有字符重合的跨语言表达，还可以配置 Ollama 或 OpenAI 兼容的 Embedding 接口。Embedding 只是额外的语义信号，不会覆盖明确的精确匹配；模型不可用时，普通词法匹配仍然可以继续工作。候选分数或第一、第二名的差距不足时，集成会拒绝自动播放，而不是随便选择一首。\u003C\u002Fp>\n\u003Ch2 data-marked-line=\"88\">\u003Csup class=\"fake-head\" id=\"%E9%98%9F%E5%88%97%E4%B8%8E%E7%8A%B6%E6%80%81%E5%90%8C%E6%AD%A5\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E9%98%9F%E5%88%97%E4%B8%8E%E7%8A%B6%E6%80%81%E5%90%8C%E6%AD%A5\">队列与状态同步\u003C\u002Fa>\u003C\u002Fh2>\u003Cp data-marked-line=\"90\">&emsp;&emsp;播放队列保存在 Home Assistant 的 \u003Ccode>.storage\u003C\u002Fcode> 中。Home Assistant 重启后可以恢复队列内容和当前指针，但不会自行恢复播放。\u003C\u002Fp>\n\u003Cp data-marked-line=\"92\">&emsp;&emsp;自动切歌按照曲目时长工作，同时直接监听所选播放器的 \u003Ccode>state_changed\u003C\u002Fcode> 事件。\u003Csup>\u003Ca id=\"footnote-ref-5\" href=\"#footnote-5\" data-footnote-ref aria-describedby=\"footnote-label\">[5]\u003C\u002Fa>\u003C\u002Fsup> 如果音箱进入暂停、停止、待机或不可用状态，集成会取消当前的自动推进计时。Panel 中的播放状态、音量和进度也来自同一套 Home Assistant 状态事件。\u003C\u002Fp>\n\u003Cp data-marked-line=\"94\">&emsp;&emsp;每次队列修改都会携带 revision。假设一次语音匹配还在处理中，而用户已经暂停、清空或切换了队列，那么较晚返回的匹配结果不能覆盖新的操作。这个限制主要用来避免异步任务把已经改变的播放状态改回去。\u003C\u002Fp>\n\u003Cp data-marked-line=\"96\">&emsp;&emsp;队列支持的主要操作包括：\u003C\u002Fp>\n\u003Cul data-marked-line=\"98\">\n\u003Cli>\u003Cp data-marked-line=\"98\">上一首、下一首、暂停、继续、停止和清空；\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp data-marked-line=\"100\">立即播放、插入下一首和追加到队尾；\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp data-marked-line=\"102\">顺序循环、随机播放和单曲循环；\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp data-marked-line=\"104\">选择输出播放器；\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp data-marked-line=\"106\">点击队列曲目直接跳转，但不改变队列顺序。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 data-marked-line=\"108\">\u003Csup class=\"fake-head\" id=\"%E9%A6%96%E9%A1%B5%E4%BB%AA%E8%A1%A8%E7%9B%98%E6%8E%A7%E5%88%B6\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E9%A6%96%E9%A1%B5%E4%BB%AA%E8%A1%A8%E7%9B%98%E6%8E%A7%E5%88%B6\">首页仪表盘控制\u003C\u002Fa>\u003C\u002Fh2>\u003Cp data-marked-line=\"110\">&emsp;&emsp;如果不想每次都打开侧栏页面，也可以直接使用 Home Assistant 原生卡片。\u003C\u002Fp>\n\u003Cp data-marked-line=\"112\">&emsp;&emsp;集成提供“快速播放歌单”选择实体。把它加入实体卡片后，可以从首页选择任意 Navidrome 歌单并立即播放。播放成功后，选择器会回到“播放歌单”，所以同一个歌单也可以连续选择多次。\u003C\u002Fp>\n\u003Cp data-marked-line=\"114\">&emsp;&emsp;上一首、暂停、继续和下一首则可以用普通按钮卡片调用这些服务：\u003C\u002Fp>\n\u003Cpre data-marked-line=\"116\" data-lang=\"\" data-shiki>\u003Ccode class=\"language-\">\u003Cspan class=\"line\">\u003Cspan>xiaoai_navidrome.previous\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>xiaoai_navidrome.pause\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>xiaoai_navidrome.resume\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>xiaoai_navidrome.next\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp data-marked-line=\"123\">&emsp;&emsp;除此之外，还可以在自动化或脚本中调用 \u003Ccode>xiaoai_navidrome.play\u003C\u002Fcode>、\u003Ccode>xiaoai_navidrome.play_playlist\u003C\u002Fcode>、\u003Ccode>xiaoai_navidrome.stop\u003C\u002Fcode>、\u003Ccode>xiaoai_navidrome.clear_queue\u003C\u002Fcode> 和 \u003Ccode>xiaoai_navidrome.sync_library\u003C\u002Fcode>。\u003C\u002Fp>\n\u003Cp data-marked-line=\"125\">&emsp;&emsp;例如播放一首曲目：\u003C\u002Fp>\n\u003Cpre data-marked-line=\"127\" data-lang=\"yaml\" data-shiki>\u003Ccode class=\"language-yaml\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">action\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">xiaoai_navidrome.play\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">data\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">  query\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">\"Synthetic Track Example Artist\"\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2 data-marked-line=\"133\">\u003Csup class=\"fake-head\" id=\"%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE\">安装与配置\u003C\u002Fa>\u003C\u002Fh2>\u003Cp data-marked-line=\"135\">&emsp;&emsp;使用前需要满足下面几个条件：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>组件\u003C\u002Fth>\n\u003Cth>要求\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Home Assistant\u003C\u002Ftd>\n\u003Ctd>2026.8.0 或更高版本\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>HACS\u003C\u002Ftd>\n\u003Ctd>已安装并可以添加自定义存储库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Navidrome\u003C\u002Ftd>\n\u003Ctd>0.63.2 或更高版本，并启用分享功能\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>音频地址\u003C\u002Ftd>\n\u003Ctd>小爱音箱可以访问 HTTPS 的 \u003Ccode>\u002Fshare\u002F\u003C\u002Fcode> 路径\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>播放实体\u003C\u002Ftd>\n\u003Ctd>支持 \u003Ccode>media_player.play_media\u003C\u002Fcode>，并支持暂停或停止\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>conversation 传感器\u003C\u002Ftd>\n\u003Ctd>只有使用小爱语音控制时才需要\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp data-marked-line=\"146\">&emsp;&emsp;先在 HACS 中打开“集成 → 右上角菜单 → 自定义存储库”，添加：\u003C\u002Fp>\n\u003Cpre data-marked-line=\"148\" data-lang=\"\" data-shiki>\u003Ccode class=\"language-\">\u003Cspan class=\"line\">\u003Cspan>https:\u002F\u002Fgithub.com\u002Fyunyuyuan\u002Fha-xiaoai-navidrome-bridge\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp data-marked-line=\"152\">&emsp;&emsp;类别选择 \u003Ccode>Integration\u003C\u002Fcode> 。下载完成并重启 Home Assistant 后，进入“设置 → 设备与服务 → 添加集成”，搜索 \u003Ccode>XiaoAI Navidrome\u003C\u002Fcode>。\u003C\u002Fp>\n\u003Cp data-marked-line=\"154\">&emsp;&emsp;配置分为两部分。第一部分填写 Navidrome API 地址、可选的对外分享地址、用户名和密码；第二部分选择输出播放器、conversation 传感器、语音前缀、页面语言和队列参数。\u003C\u002Fp>\n\u003Cp data-marked-line=\"156\">&emsp;&emsp;这里需要注意两个地址的区别：\u003C\u002Fp>\n\u003Cul data-marked-line=\"158\">\n\u003Cli>\u003Cp data-marked-line=\"158\">\u003Ccode>Navidrome 地址\u003C\u002Fcode> 是 Home Assistant 读取 API 的地址，可以使用 Home Assistant 实际能够访问的局域网地址。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp data-marked-line=\"160\">\u003Ccode>Navidrome 对外分享地址\u003C\u002Fcode> 是小爱音箱下载音乐的入口，需要能够访问 Navidrome 的 \u003Ccode>\u002Fshare\u002F\u003C\u002Fcode> 路径。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-marked-line=\"162\">&emsp;&emsp;配置完成后，打开侧栏页面，选择输出音箱并同步一次曲库即可开始使用。Embedding 不是必需项，建议先确认普通搜索、分享链接和音箱播放都正常，再决定是否启用。\u003C\u002Fp>\n\u003Ch2 data-marked-line=\"164\">\u003Csup class=\"fake-head\" id=\"%E6%9C%80%E5%90%8E\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E6%9C%80%E5%90%8E\">最后\u003C\u002Fa>\u003C\u002Fh2>\u003Cp data-marked-line=\"166\">&emsp;&emsp;这个项目要解决的问题其实很明确：让 Navidrome 继续负责音乐库，让 Home Assistant 负责设备、状态和自动化，再让小爱音箱只做最终的音频播放。\u003C\u002Fp>\n\u003Cp data-marked-line=\"168\">&emsp;&emsp;现在单曲、歌单、语音、侧栏和 Home Assistant 服务使用的是同一条播放链路。平时可以直接对小爱说话，也可以在 Home Assistant 中手动选择曲目；如果要加入自动化，则调用原生服务即可。\u003C\u002Fp>\n\u003Cp data-marked-line=\"170\">&emsp;&emsp;项目代码、安装说明和完整配置项都放在 GitHub：\u003Csup>\u003Ca id=\"footnote-ref-1-2\" href=\"#footnote-1\" data-footnote-ref aria-describedby=\"footnote-label\">[1]\u003C\u002Fa>\u003C\u002Fsup>。如果遇到问题，可以先下载 Home Assistant 中的集成诊断，再到仓库提交 Issue。诊断内容会过滤密码、API Key、曲目元数据、查询文本和语音记录。\u003C\u002Fp>\n\u003Chr data-marked-line=\"172\" \u002F>\n\u003Cp data-marked-line=\"174\">&emsp;&emsp;人话：所有代码，包含这篇文章，都是vibe的\u003Cimg src=\"\u002Fsticker\u002Faru\u002F26.png\" alt=\"sticker\"\u002F>\u003C\u002Fp>\n\u003Ch2 data-marked-line=\"176\">\u003Csup class=\"fake-head\" id=\"References\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#References\">References\u003C\u002Fa>\u003C\u002Fh2>\u003Csection class=\"footnotes\" data-footnotes>\n\u003Ch2 id=\"footnote-label\" class=\"sr-only\">Footnotes\u003C\u002Fh2>\n\u003Col>\n\u003Cli id=\"footnote-1\">\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyunyuyuan\u002Fha-xiaoai-navidrome-bridge\">https:\u002F\u002Fgithub.com\u002Fyunyuyuan\u002Fha-xiaoai-navidrome-bridge\u003C\u002Fa> &quot;XiaoAI Navidrome for Home Assistant&quot; \u003Ca href=\"#footnote-ref-1\" data-footnote-backref aria-label=\"Back to reference 1\">↩\u003C\u002Fa> \u003Ca href=\"#footnote-ref-1-2\" data-footnote-backref aria-label=\"Back to reference 1\">↩\u003Csup>2\u003C\u002Fsup>\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli id=\"footnote-2\">\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.navidrome.org\u002Fdocs\u002Fusage\u002Ffeatures\u002Fsharing\u002F\">https:\u002F\u002Fwww.navidrome.org\u002Fdocs\u002Fusage\u002Ffeatures\u002Fsharing\u002F\u003C\u002Fa> &quot;Navidrome Sharing&quot; \u003Ca href=\"#footnote-ref-2\" data-footnote-backref aria-label=\"Back to reference 2\">↩\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli id=\"footnote-3\">\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdevelopers.home-assistant.io\u002Fdocs\u002Ffrontend\u002Fcustom-ui\u002Fcreating-custom-panels\u002F\">https:\u002F\u002Fdevelopers.home-assistant.io\u002Fdocs\u002Ffrontend\u002Fcustom-ui\u002Fcreating-custom-panels\u002F\u003C\u002Fa> &quot;Home Assistant custom panels&quot; \u003Ca href=\"#footnote-ref-3\" data-footnote-backref aria-label=\"Back to reference 3\">↩\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli id=\"footnote-4\">\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdevelopers.home-assistant.io\u002Fdocs\u002Fcore\u002Fentity\u002Fmedia-player\u002F\">https:\u002F\u002Fdevelopers.home-assistant.io\u002Fdocs\u002Fcore\u002Fentity\u002Fmedia-player\u002F\u003C\u002Fa> &quot;Home Assistant media player entity features&quot; \u003Ca href=\"#footnote-ref-4\" data-footnote-backref aria-label=\"Back to reference 4\">↩\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli id=\"footnote-5\">\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdevelopers.home-assistant.io\u002Fdocs\u002Fintegration_listen_events\u002F\">https:\u002F\u002Fdevelopers.home-assistant.io\u002Fdocs\u002Fintegration_listen_events\u002F\u003C\u002Fa> &quot;Home Assistant event subscriptions&quot; \u003Ca href=\"#footnote-ref-5\" data-footnote-backref aria-label=\"Back to reference 5\">↩\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003C\u002Fsection>\n",[17,21,24,27,30,33,36,39,42,45],{"size":18,"text":19,"url":20},"big","用 Home Assistant 让小爱音箱播放 Navidrome 音乐","%E7%94%A8%20Home%20Assistant%20%E8%AE%A9%E5%B0%8F%E7%88%B1%E9%9F%B3%E7%AE%B1%E6%92%AD%E6%94%BE%20Navidrome%20%E9%9F%B3%E4%B9%90",{"size":18,"text":22,"url":23},"整体思路","%E6%95%B4%E4%BD%93%E6%80%9D%E8%B7%AF",{"size":18,"text":25,"url":26},"音箱如何访问 Navidrome 音频","%E9%9F%B3%E7%AE%B1%E5%A6%82%E4%BD%95%E8%AE%BF%E9%97%AE%20Navidrome%20%E9%9F%B3%E9%A2%91",{"size":18,"text":28,"url":29},"Home Assistant 侧栏页面","Home%20Assistant%20%E4%BE%A7%E6%A0%8F%E9%A1%B5%E9%9D%A2",{"size":18,"text":31,"url":32},"语音点歌","%E8%AF%AD%E9%9F%B3%E7%82%B9%E6%AD%8C",{"size":18,"text":34,"url":35},"队列与状态同步","%E9%98%9F%E5%88%97%E4%B8%8E%E7%8A%B6%E6%80%81%E5%90%8C%E6%AD%A5",{"size":18,"text":37,"url":38},"首页仪表盘控制","%E9%A6%96%E9%A1%B5%E4%BB%AA%E8%A1%A8%E7%9B%98%E6%8E%A7%E5%88%B6",{"size":18,"text":40,"url":41},"安装与配置","%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE",{"size":18,"text":43,"url":44},"最后","%E6%9C%80%E5%90%8E",{"size":18,"text":46,"url":46},"References","用 Home Assistant 让小爱音箱播放 Navidrome 音乐 最近买了个小爱音箱，想折腾一下放我之前无聊部署的Navidrome音乐。 Navidrome 负责管理曲库，Home Assistant 里也已经有小爱音箱的 media_player 实体。两边看起来都准备好了，但真正连起…",[],1793351205599]