
家里的小爱音箱放床头吃灰快两年了。
当初买它图的是智能助手体验,实际用下来,除了设闹钟、查天气、控智能灯,但凡问点稍微复杂的问题,要么答非所问,要么机械甩一句“为你找到相关内容”,离真正的AI助手差了十万八千里。
想自己改造?小爱生态封得死死的,既不能换大模型,也没法对接私有服务,只能困在官方的能力池里。直到最近挖到 open-xiaoai-bridge 这个开源项目,折腾了一下午,终于给小爱换上了OpenAI的“大脑”,原生家电控制功能完全保留,相当于一台设备两套系统。
这篇就把完整的部署实操步骤全整理出来,跟着走,你也能把家里吃灰的小爱音箱改成专属AI语音助手。

open-xiaoai-bridge 是一款小爱音箱的开源AI桥接工具,核心是打破小爱音箱的封闭生态,通过软件层改造,让音箱自由对接外部大模型与AI服务。
整个架构分为两端:
它的核心能力完全覆盖定制需求:
这是整个操作的前提,也是唯一有门槛的一步——需要给小爱音箱刷机,开启SSH权限并安装客户端。
这一步不同型号操作差异较大,不做冗余展开,跟着官方对应教程完成即可:
完成后,你会得到两个关键信息:音箱的局域网IP、SSH登录账号密码,接下来就进入核心的服务端部署环节。
推荐用 Docker Compose 方式部署,全程无需配置依赖环境,复制粘贴命令即可完成,新手友好。
服务可以部署在家用NAS、闲置小主机、甚至常开的电脑上,只要和小爱音箱在同一个局域网就行。
提前安装好 Docker 与 Docker Compose,Windows/Mac/Linux 全平台均支持,国内服务器建议先配置Docker镜像加速,避免拉取镜像失败。
# 创建项目目录并进入
mkdir open-xiaoai-bridge && cd open-xiaoai-bridge
# 下载核心配置文件
curl -O https://raw.githubusercontent.com/coderzc/open-xiaoai-bridge/main/config.py
curl -O https://raw.githubusercontent.com/coderzc/open-xiaoai-bridge/main/docker-compose.yml
国内网络下载失败的话,可以直接去GitHub项目主页手动复制这两个文件到目录中。
./models 文件夹下编辑 config.py 文件,找到 openai 配置段,修改为你的大模型信息:
"openai": {
# 接口地址:官方填 https://api.openai.com/v1
# 本地Ollama填 http://你的局域网IP:11434/v1
# 中转服务填对应服务商的v1地址
"base_url": "https://api.openai.com/v1",
"api_key": "你的API Key",
"model": "gpt-4o-mini", # 按需替换模型名称
"input_mode": "xiaoai_asr", # 新手用小爱原生ASR,本地模型改local_asr
"session_key": "default",
"system_prompt": "你是一个简洁实用的语音助手,回答尽量口语化,控制在200字以内",
"temperature": 0.7,
"max_tokens": 512,
"history_max_messages": 20, # 上下文记忆长度
"tts_speaker": "xiaoai", # 用小爱原生TTS,也可替换为豆包音色
},
同时在环境变量配置里,开启OpenAI兼容服务开关: 编辑 docker-compose.yml,在environment段添加:
- OPENAI_ENABLE=1
- API_SERVER_ENABLE=1 # 可选,开启HTTP API控制接口
国内用户如果拉取官方镜像太慢,可以把docker-compose.yml里的镜像地址替换为国内镜像:
image: ghcr.nju.edu.cn/coderzc/open-xiaoai-bridge:latest
# 后台启动服务
docker compose up -d
# 查看运行日志,确认启动成功
docker compose logs -f
看到日志里输出 server started on 0.0.0.0:4399 就说明服务端已经正常运行了。
SSH登录到小爱音箱,执行以下命令,配置服务端地址并启动客户端:
# 创建工作目录
mkdir /data/open-xiaoai
# 配置桥接服务地址,替换成你部署服务端的局域网IP
echo 'ws://192.168.31.100:4399' > /data/open-xiaoai/server.txt
# 一键安装并启动客户端
curl -sSfL https://gitee.com/idootop/artifacts/releases/download/open-xiaoai-client/init.sh | sh
# 设置开机自启动(可选,推荐开启)
curl -L -o /data/init.sh https://gitee.com/idootop/artifacts/releases/download/open-xiaoai-client/boot.sh
reboot
音箱重启后,会自动连接到你的桥接服务,服务端日志里会出现设备连接成功的提示。
默认还不能直接唤醒对话,需要配置唤醒词和路由规则,还是修改 config.py 文件。
找到 wakeup 配置段,添加你想要的唤醒词:
"wakeup": {
"keywords": [
"小黑同学",
"你好小黑",
],
},
找到 before_wakeup 函数,添加路由逻辑:
async def before_wakeup(speaker, text, source, app):
# 唤醒词触发,进入OpenAI连续对话
if source == "kws":
if "小黑" in text:
await speaker.play(text="我在")
return "openai"
# 小爱语音指令触发单次对话
if source == "xiaoai" and "问小黑" in text:
await speaker.abort_xiaoai()
await app.send_to_openai_and_play_reply(text.replace("问小黑", ""))
return None
# 不匹配则交给小爱原生处理
return None
修改完成后,重启服务生效:
docker compose restart
现在对着音箱喊你的自定义唤醒词,就能直接和OpenAI对话了,全程连续多轮交互,不用反复唤醒,说完“再见”即可退出对话。
如果在意隐私安全,可以把整个链路全部换成本地服务:
local_asr 模式,用SenseVoice离线识别利用多唤醒词+Session路由,实现不同唤醒词对应不同模型/智能体:
AGENT_SESSIONS = {
"代码助手": "gpt-4o",
"生活顾问": "deepseek-chat",
"闲聊模式": "qwen2.5-7b",
}
async def before_wakeup(speaker, text, source, app):
if source == "kws":
for keyword, model in AGENT_SESSIONS.items():
if keyword in text:
app.set_openai_session_key(model)
await speaker.play(text=f"{keyword}在呢")
return "openai"
利用自带的HTTP API,可以对接任何自动化场景,比如服务器告警、快递提醒、门禁通知:
# 远程让音箱播放指定文字
curl -X POST http://服务端IP:9092/api/play/text \
-H "Content-Type: application/json" \
-d '{"text": "检测到服务器CPU占用超过90%,请及时处理"}'
vad.threshold 阈值,或者调大音频输入增益 audio_input.gain。network_mode: host 配置。vad.min_silence_duration 参数,单位是毫秒,默认值偏小的话,说话停顿一下就会被判定为说完,改成1000-1500即可改善。