本文的解决方案来自开发者 justa-cai,需要配合Arcs-Mini(LS26开发板)使用,自由DIY没有费用负担。适合想深入研究本地部署、模型自定义、端侧 AI 架构的开发者参考学习。
项目实现分为服务端和设备端,可以实现如下功能:
✅ Server 全本地化部署(ASR / TTS / LLM 全打通)
✅ 支持 角色扮演 / 家居控制/ 音色切换 / MCP 工具调用
✅ 支持本地歌曲点播,同时实现 AI 歌词封面生成
服务端源码:https://github.com/justa-cai/listenai-server
设备端源码:https://github.com/justa-cai/listenai-arcs_mini

Python 3.10.x
Linux (推荐 Ubuntu 22.04+)
NVIDIA GPU 16G显存以上(推荐4090) + CUDA 12.x
安装 uv (如果未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
创建虚拟环境
uv venv --python 3.10 source .venv/bin/activate
安装依赖
uv pip install -r requirements.txt
source .venv/bin/activate
modelscope download --model FunAudioLLM/Fun-ASR-Nano-2512 --local_dir asr/FunAudioLLM/Fun-ASR-Nano-2512
modelscope download --model xiaowangge/voxcpm-0.5b --local_dir tts/VoxCPM-0.5B
modelscope download --model Qwen/Qwen3-4B-Instruct-2507 --local_dir llm/Qwen3-4B-Instruct-2507
modelscope download --model Tongyi-MAI/Z-Image-Turbo --local_dir music/Z-Image-Turbo
mkdir -p vad
git clone https://github.com/TEN-framework/ten-vad.git vad/ten-vad
cd asr
sh auto.sh
测试客户端:https://github.com/justa-cai/listenai-server/blob/master/pic/ASR_WEBCLIENT.png
cd tts sh auto.sh
cd cloud
sh auto.sh
cd music
sh auto.sh
music/data
cd music /可以修改代码,更换成更大的参数量模型,提升提取效果
python3 get_lyrics.py
cd music /可以修改代码,更换成更大的参数量模型,提升提取效果
python3 generate_images_from_lyrics.py
cd llm /llm的环境不一样,需要使用独立的虚拟环境
source .venv/bin/activate
./Qwen3-4B-Instruct-2507.sh
服务器默认配置,需要根据实际修改服务器地址,有两种方式配置云服务器地址:
¶ 方式一:KV 存储(推荐,无需重新编译)
使用 ADB 命令动态设置服务器地址:
adb shell kv set string user.kcloud_host "192.168.1.100"或者使用域名:
adb shell kv set string user.kcloud_host "your-domain.com"设置后重启设备生效:
adb shell reboot
¶ 方式二:编译时配置
编辑 prj.conf 文件,修改 CONFIG_MY_CLOUD_HOST 配置项:
自托管云服务器地址配置:CONFIG_MY_CLOUD_HOST="192.168.1.100"
将 192.168.1.100 改为你的实际服务器地址,例如:
CONFIG_MY_CLOUD_HOST="192.168.1.100" - 局域网地址
CONFIG_MY_CLOUD_HOST="your-domain.com" - 域名地址修改后重新编译:
./build.sh¶ 配置优先级: KV 存储 > prj.conf 配置
在长时间的playback模式下,AEC并不稳定,暂时先降低音量进行规避
adb shell kv set int user.mic_gain 70
adb shell kv set int user.aec_gain 40
adb shell kv set int user.volume 30
请先部署listenai-server,放置本地音乐在data目录下,并启动music服务
通过按键触发 按键原进入语音识别模式功能,被屏蔽掉,改成了触发播放下一首
设备有个灯,可以配合listenai-server实现调用本地注册的tools继而实现关灯功能
查询下设备固件号(本地设备端能力)/查询天气(服务器端能力)等等
请确保服务器已经有这些可以clone的音色,目前支持以下示例音色切换

示例:
支持通过指令进入角色模式,例如:切换角色模式到至尊宝,LLM的system prompt的设定就是至尊宝。
问:当你遇到了紫霞仙子,你什么话想对她说的?
答:曾经有一份真诚的爱情放在我面前,我却不知道珍惜,直到失去了才后悔莫及。现在想来,如果时间能够倒流,我一定会对你说:“我爱你,一万年!”
不过说真的,跟你在一起的那些日子,虽然有时候你总是拿剑指着我,但我心里其实暖暖的。你知道吗?我这辈子都不想做孙悟空,我只想做个普通人,陪在你身边,保护你,疼爱你。可惜啊,命运弄人,我们终究还是分开了...
(轻叹一声)现在想起来,那段时光真是美好得让人想哭。神仙姐姐,如果你能听到我的话,一定要记得,我至尊宝的心里,永远都有你的一席之地。哪怕你现在变成了紫霞仙子,我还是会毫不犹豫地告诉你——我爱你!
(突然想到什么,咧嘴一笑)不过嘛,要是你再这么凶巴巴地对我,我可就要考虑要不要重新当回那个不靠谱的山贼了!哈哈~
在角色扮演模式,是无法控制任何设备的,你可以通过指令 "退出角色模式"来回到正常模式下
后台内置角色模式,如下
ZHIINZUBAO = "至尊宝"
ZIXIA = "紫霞仙子"
BULLYING = "牛魔王"
TANG_SENG = "唐僧"
PIGGY = "猪八戒"
SHA_SENG = "沙僧"
拜年模式
第一次烧写,构建后统一使用recovery.sh烧写,避免1.6基础固件升级到1.7升级失败。
平常调试使用 ./build.sh && ./download.sh