← 返回文章库

小智自建后端怎么选:四个开源实现的差别和配置要求

最后更新 2026-07-28
⏱ 约 13 分钟 🟡 涉接线/强电
你将学到
  • 知道小智有哪几个社区服务端实现,各自什么语言什么定位
  • 判断自己该选最简化安装还是全模块安装,以及要准备多大配置
  • 搞清楚自建之后 ASR/LLM/TTS 分别还要接什么
  • 想明白自建到底解决了什么问题、带来了什么新成本
⎇ 基于开源项目(学习解读,非搬运)
作者:78 等开源贡献者
协议:MIT

本文讲解原理与流程、引用关键片段并注明出处,版权归原作者,遵循其开源协议;一切以上游仓库最新版本为准。

小智默认可以接官方服务器,注册账号就能用。那为什么还有人要自建?

常见的理由有几个:数据不想过别人的服务器想换成自己的大模型和 TTS要做产品得掌握后端纯粹想搞明白这条链路怎么跑的

这些理由都成立。但自建不是免费的——它把"用别人的服务"换成了"自己运维一套服务"。这篇先帮你判断该不该建、建哪个,再讲要准备什么。

📌 说明

各服务端项目由不同团队维护、独立演进,功能和配置要求以各自仓库 README 当前内容为准。小智固件代码版权归原作者 78 及社区贡献者,遵循 MIT 协议。本文写于 2026 年 7 月底。

上游列出的四个实现

按小智上游 README 提到的社区服务端项目:

项目 语言
xinnan-tech/xiaozhi-esp32-server Python
joey-zhou/xiaozhi-esp32-server-java Java
AnimeAIChat/xiaozhi-server-go Golang
hackers365/xiaozhi-esp32-server-golang Golang

四个,两个是 Go。选哪个,最实际的判断标准是"你能改动哪个"——服务端你是要长期维护的,选一个你熟悉的语言,比选一个功能列表更长但你看不懂的强得多。

如果你没有语言偏好、只想找资料最好找的,Python 那个(xinnan-tech)在社区里讨论度最高,文档也相对完整,下面的配置数据就以它为例。Java 那个(joey-zhou)走的是企业级管理平台路线,把设备监控、音色定制、角色切换、对话记录管理做成了前后端一体的方案——如果你要管的是一批设备而不是一台,这个定位更对路。

两种安装方式,先选对

以 Python 版为例,它提供两种安装方式,差别不只是"装多装少":

最简化安装 —— 智能对话、单体管理,数据存在配置文件里。 配置要求:全 API 方案约 2 核 2G;如果要跑本地语音识别(FunASR),2 核 4G

全模块安装 —— 多用户 / 多智能体管理、Web 控制台、数据存数据库。 配置要求:全 API 方案约 2 核 4G;含本地语音识别方案 4 核 8G

怎么选:

  • 只是自己玩、一台设备、想快点跑通 → 最简化。改配置文件虽然原始,但少一层数据库和控制台,出问题好查得多。
  • 要管多个设备/多个角色,或者要给别人用 → 全模块。控制台省下的手工操作,很快就能把多出来的配置成本赚回来。

注意"全 API"和"本地"这个变量,它对配置要求的影响比安装方式本身还大:本地跑语音识别(FunASR 这类)能省 API 费用、数据不出门,代价是内存和 CPU 要求翻倍。4 核 8G 已经不是随便一台旧笔记本能舒服跑的了。

部署方式上,Docker 和本地源码两种都支持。没有特殊需求就用 Docker——自建服务端的依赖不算简单,Docker 能省掉一大堆环境问题。

自建之后,你还要接什么

这是最容易被低估的部分。"自建服务端"不等于"什么都自己跑",服务端更像一个调度中枢,真正干活的几个模型你还得挑:

ASR(语音识别) —— 可以本地跑 FunASR、SherpaASR,也可以调火山、讯飞、腾讯等 API。 LLM(大模型) —— 支持阿里百炼、火山引擎、DeepSeek、智谱、Gemini 等符合 OpenAI 接口的平台。 TTS(语音合成) —— 有 EdgeTTS 这类免费平台,也可以接火山、讯飞等商业服务。 VLLM(视觉模型) —— 阿里百炼、智谱 ChatGLM 等支持 OpenAI 接口的服务。

也就是说:自建服务端解决的是"链路归我控制",不是"不用花钱"。 除非 ASR/TTS 全用本地或免费方案,否则你只是把账单从一处换到了另几处。

还有一点要说清楚:这类开源项目通常会声明与第三方 API 服务商没有商业合作关系,密钥要你自己配。所以选型时把各家 API 的价格、限流、备案要求一起考虑进去,别只看功能表。

设备怎么知道要连你的服务器

这是自建里最容易卡住的一环,也是文档里往往一笔带过的地方:服务端跑起来了,设备却还在连官方的。

要理解的是:服务端地址是设备侧的配置,服务端自己跑得再好,设备不知道去哪找它也没用。所以自建的完整工作量其实是两半——把服务端跑起来,再把设备指过去,很多人只做了前一半。

指过去之后,连不上的常见原因有这么几类,按出现频率排:

一、地址或端口不对。 最基础但也最常见。注意区分局域网地址和公网地址——你在本机浏览器能打开控制台,不代表设备能连上:设备走的是另一条网络路径。

二、设备和服务器不在同一个网络里。 服务端跑在你电脑上、设备连的是手机热点,这就通不了。自建初期先让两者在同一个局域网,把变量降到最少。

三、防火墙 / 端口没放行。 服务端起来了,端口没对外开放。Docker 部署时还要确认端口映射有没有配对。

四、协议对不上。 小智支持 WebSocket 和 MQTT+UDP 等不同传输方式,设备侧和服务端侧得说同一种。

排查这一段有个很省事的办法:先在电脑上用工具连一下你的服务端,确认服务本身是通的。通了再查设备侧——这样就把"服务端有问题"和"设备连不上"这两件事分开了,不用两头猜。

自建之前,先问自己三个问题

一、我现在跑通过官方那条路吗? 如果没有,先用官方服务器把设备跑通。理由很简单:设备侧和服务端侧的问题混在一起排查,难度是叠乘的。先用官方服务器确认"我的板子是好的、固件是对的",再换服务端,这时候出问题你就知道是新引入的那一半。这一步能省下的时间,比自建本身花的时间还多。

二、我要的是隐私、可控,还是省钱?

  • 隐私 → 那 ASR/TTS 也得尽量本地,配置要求直接上到 4 核 8G 那一档;
  • 可控(换模型、改逻辑、接自己的业务)→ 那全 API 方案就够,配置要求低得多;
  • 省钱 → 先算笔账。一台常年开着的服务器 + 各家 API,未必比官方方案便宜。省钱通常不是自建的好理由。

三、这台服务器谁来管? 自建意味着你要管更新、管故障、管备份。设备在你手上不响的时候,你得知道是设备的问题还是你服务器的问题——这是自建之后新增的一整类排查工作,也是很多人自建后又退回官方的原因。

小结

自建服务端是条好路,但它的价值在可控,不在省事也不在省钱。

建议的推进顺序是:官方服务器跑通 → 想清楚自建要解决什么 → 选一个你能读懂的语言的实现 → 用 Docker 最简化装一遍跑通 → 再按需要升级到全模块和本地模型。

一上来就冲 4 核 8G 全本地全模块,是自建失败率最高的走法。

相关:小智自建后端 xiaozhi-server讲部署实操,小智怎么把语音送上云讲设备和服务端之间的传输协议,小智怎么换音色和人设讲自建之后音色人设怎么配。

📄 来源 / 自校链接

本文为公开资料整理,非亲测。关键参数与代码请结合实物与下列官方来源验证。

内容有错、看不懂、或想看下一期?告诉我们 →

本文为公开资料的学习整理,非亲测。涉接线/花钱/合规的步骤请结合实物与官方最新资料验证,风险自负。见免责声明