LingChat

LingChat

最近在玩DeepSeek Harness,无意中发现了很多一直想做的想法,已经被别人做出来了。譬如这个叫LingChat的基于DeepSeek的鲸鱼娘的galagame游戏
作者的Github:https://github.com/SlimeBoyOwO/LingChat

配置TTS(最麻烦的)

在配置TTS的时候,走了很多弯路,特别是用GPU来跑。不过用Workbuddy+DeepSeekV4Flash修复了。修复的方法见下面,就是替换了最新的DirectML.dll,重启lingchat就好了。

还有几个配置必须要注意:

  1. TTS的本地运行配置在【高级设置】【本地TTS】里面
    图片
    图片

  2. 要在【角色】里面配置TTS
    图片
    图片

缺了任何一步TTS都不能用。

如果你GPU跑不了TTS,就可以尝试我下面的解决方法。我也是用Workbuddy+DeepSeekV4Flash帮解决的,记得给AI看lingchat的日志。

LingChat 本地 TTS 走 GPU(DirectML)修复手册

适用环境:Windows 10(本机 22H2 / Build 19045),NVIDIA GTX 1650(4GB)
归档日期:2026-08-31
修复状态:✅ 已验证成功(GPU 显存占用 879 MiB,DML 推理确认运行)


1. 问题现象

  • LingChat 本地 TTS 合成语音极慢(只有 CPU 推理速度)
  • 应用日志 data\log\app\*.log 反复出现如下错误:
1
2
3
ERROR ort::ep: An error occurred when attempting to register `DmlExecutionProvider`:
...dml_provider_factory.cc(551)... Exception(1) tid(1a80) 887A0004 ...
source=session options
  • 887A0004 = DXGI_ERROR_UNSUPPORTED(设备接口或功能级别不受支持)

2. 根因分析

一句话结论:系统的 directml.dll 版本太旧(2020 年构建),不支持 ONNX Runtime 要求的 DML Feature Level 5.0,导致 DML 执行提供程序注册失败,应用回退到 CPU。

详细原因链:

环节 说明
ONNX Runtime 的 DML EP 初始化时调用 DMLCreateDevice1(..., DML_FEATURE_LEVEL_5_0, ...)(对应 dml_provider_factory.cc:551),要求显卡/DLL 支持 DML Feature Level 5.0
系统 DirectML.dll C:\Windows\System32\directml.dll 版本为 1.0.200713-1013.1(2020-07-13 构建),只支持旧 Feature Level → 返回 887A0004
影响范围 无论选 AMD 核显还是 NVIDIA 独显都会失败(是 DLL 层面的问题,不是显卡选择问题)

曾误判的方向(无效,供参考)

  • 双显卡(AMD Vega 10 核显 + NVIDIA GTX 1650)下 DML 选错 GPU —— 不是根因
  • 注册表 HKCU\Software\Microsoft\DirectX\UserGpuPreferences 设置 GpuPreference=2 —— 无效。原因:该注册表只影响 DXGI 1.6 的 EnumAdaptersByGpuPreference,不影响 ONNX Runtime 使用的 D3D12CreateDevice(nullptr) 默认适配器选择

3. 诊断方法(下次遇到可先自查)

1
2
3
4
5
6
7
8
9
10
# 1. 查看系统 DirectML.dll 版本(若为 2020 年左右的 1.0.200713 即根因)
powershell -Command "(Get-Item 'C:\Windows\System32\directml.dll').VersionInfo | Select FileVersion"

# 2. 查看应用日志中的 DML 错误
# 路径:C:\Users\Brian\AppData\Local\LingChat\data\log\app\
# 搜索关键字:DmlExecutionProvider / 887A0004

# 3. 确认 GPU 是否真的在跑(DML 推理成功后显存有占用)
nvidia-smi
# 期望:ling_chat.exe 出现在 Processes 列表,显存占用数百 MiB(本机 879 MiB)

4. 修复步骤(标准流程)

4.1 获取新版 DirectML.dll

方法一:使用本手册同目录的备份文件(推荐,已归档

1
直接使用本文件夹内的 DirectML.dll(版本 1.15.4,支持 FL 5.0)

方法二:从 NuGet 重新下载

1
2
3
4
5
6
7
8
9
# 查询最新版本
Invoke-RestMethod 'https://api.nuget.org/v3-flatcontainer/microsoft.ai.directml/index.json'

# 下载 1.15.4(或最新稳定版)
Invoke-WebRequest 'https://api.nuget.org/v3-flatcontainer/microsoft.ai.directml/1.15.4/microsoft.ai.directml.1.15.4.nupkg' -OutFile "$env:TEMP\dml.nupkg"

# 解压(nupkg 即 zip)
Expand-Archive "$env:TEMP\dml.nupkg" "$env:TEMP\dml_ext" -Force
# DLL 位置:$env:TEMP\dml_ext\bin\x64-win\DirectML.dll

4.2 部署到应用目录

1
Copy-Item "DirectML.dll路径" "C:\Users\Brian\AppData\Local\LingChat\DirectML.dll" -Force

原理:ONNX Runtime 加载 directml.dll 时优先从应用 exe 所在目录查找,因此放在 C:\Users\Brian\AppData\Local\LingChat\ 下会优先于系统目录的旧版被加载。不动系统文件,可随时删除回滚。

4.3 重启 LingChat

关闭并重新打开 LingChat,新 DLL 在进程启动时加载。


5. 验证方法

1
2
3
4
5
# 1. 日志确认:重启后无 DmlExecutionProvider 错误
# 2. GPU 确认:
nvidia-smi
# ling_chat.exe 在 GPU 0 上,显存占用数百 MiB(本机 879 MiB)
# 3. 实际体验:TTS 合成速度明显变快(GPU 秒出,CPU 需数秒~数十秒)

6. 升级 LingChat 后问题复发怎么办

应用升级可能覆盖/清理 DirectML.dll,导致同样问题复发。处理步骤:

  1. 重新复制归档的 DLL 到应用目录:

    1
    Copy-Item "C:\Users\Brian\WorkBuddy\2026-08-31-15-35-50\LingChat-DML修复\DirectML.dll" "C:\Users\Brian\AppData\Local\LingChat\DirectML.dll" -Force
  2. 重启 LingChat

  3. 按第 5 节验证

若新版应用已内置兼容的 DirectML/ONNX Runtime,则无需处理;是否内置可通过升级后日志是否报 887A0004 判断。


7. 相关配置信息(备忘)

项目 位置
推理设备配置 C:\Users\Brian\AppData\Roaming\com.noiq.ling-chat\settings.jsonfeatures.local_tts_device
设备值格式 cpu / gpu / npu / device:<id>(id 为 DXGI 枚举索引)
UI 设置路径 设置 → 高级设置 → 本地 TTS → 推理设备
本地 TTS 模型 C:\Users\Brian\AppData\Local\LingChat\data\models\tts-local\(ling-v2 249MB + deberta)
应用日志 C:\Users\Brian\AppData\Local\LingChat\data\log\app\
项目源码 GitHub: SlimeBoyOwO/LingChat;TTS 引擎依赖 sbv2_core(shadow01a/sbv2-api)

注意:UI 中显示的设备编号与实际驱动的显卡可能存在映射差异(本机 device:0 实际驱动 NVIDIA)。以 nvidia-smi 显存占用和实际语音质量为准。


8. 文件清单

文件 说明
DirectML.dll 修复用运行库(Microsoft.AI.DirectML 1.15.4,win-x64,18.5MB)
LingChat-DML修复手册.md 本手册