Open-LLM-VTuber 报错排查:Live2D 模型文件结构缺失

Open-LLM-VTuber 报错排查:Live2D 模型文件结构缺失


Ollama
Open-LLM-VTuber Ollama Qwen 2.5 Sherpa-Onnx Edge-TTS

在部署 Open-LLM-VTuber 时,加载自定义 Live2D 模型容易遇到引擎初始化失败,或者触发表情时报 NoneType 异常的问题。排查物理目录会发现 .moc3 核心文件和 .exp3.json 表情文件都在,但后端依然提示文件丢失。

问题出在主配置文件 .model3.json 的内部索引结构不完整。

1. 解析机制偏差

Open-LLM-VTuber 后端不会主动遍历目录去扫描所有物理文件。它完全依赖模型的主配置文件(.model3.json)来加载资源。如果建模师在导出模型时,没有将表情(Expressions)写入主 JSON,后端引擎就不会注册这些资产。

当 LLM 输出包含特定情绪的文本并触发面部表情时,后端在索引里找不到对应项,就会触发空指针异常,直接拉挂进程。

2. 补齐文件索引

修复方法是手动修改模型主 JSON 文件。使用文本编辑器打开模型目录下的 xxx.model3.json 文件。

找到 FileReferences 节点,检查内部是否包含 Expressions 数组。如果没有,手动加上,并将文件夹里的 .exp3.json 文件映射进去。

代码修改对齐如下:

{
    "Version": 3,
    "FileReferences": {
        "Moc": "魔女.moc3", 
        "Textures": [
            "魔女.8192/texture_00.png",
            "魔女.8192/texture_01.png"
        ],
        "Physics": "魔女.physics3.json",
        "DisplayInfo": "魔女.cdi3.json",
        "Expressions": [
            {"Name": "fz", "File": "fz.exp3.json"},
            {"Name": "cw", "File": "cw.exp3.json"}
        ]
    }
}

Name 字段是代码层调用的内部名称,File 字段对应同级目录下的物理文件相对路径。确保语法结构正确,逗号和括号严格闭合。

3. 动作文件同步关联

如果你的模型目录下存在 .motion3.json 动作文件,同理需要在 FileReferences 内部增加 Motions 节点进行注册。修改并保存 JSON 文件后,重启 Docker 容器。后端会根据完整的映射表重新载入模型资产。

4.再次运行

docker compose down
docker compose up

输入http://127.0.0.1:12393 image.png

© 2026 Personal Website
Developed by Ryan 🫡