基于 Janus-Pro-7B 与 GPT-SoVITS 的本地 AI 桌宠项目,支持:
- 桌宠悬浮与托盘控制
- 文本对话
- 图片+文本多模态问答
- 文本生图
- TTS 语音合成与播放
项目为 Windows 本地运行方案,内置 runtime/python.exe 与模型目录,默认通过 run.bat 一键启动。
- 多模态对话:使用
Janus-Pro-7B_0进行文本/图像理解 - 图片生成:在桌宠菜单中提供“文本生成图片”
- 语音合成:通过
api_v2.py提供 FastAPI TTS 接口(默认127.0.0.1:9880) - 语音播放:桌宠自动调用 TTS 接口并播放返回音频
- 系统托盘:支持显示/隐藏、静音、气泡大小、桌宠大小、退出
mytest6_2.py- PyQt5 桌宠主程序
- 加载 Janus 模型并处理聊天/生图
- 调用本地 TTS API 获取语音并播放
api_v2.py- FastAPI + Uvicorn 启动 TTS 服务
- 封装 GPT-SoVITS 推理参数与音频流输出
run.bat- 先启动 TTS API,再延时启动桌宠主程序
- Windows 10/11
- NVIDIA GPU(代码中强依赖 CUDA)
- 建议显存 >= 8GB(生图流程会检测显存并给出提示)
- FFmpeg(用于部分音频封装,例如 AAC)
根据仓库内 说明.txt:
- 解压
ffmpeg-master-latest-win64-gpl-shared.7z到D:\ - 将
D:\ffmpeg-master-latest-win64-gpl-shared\bin加入系统环境变量PATH
在项目根目录双击:
run.batrun.bat 会执行以下流程:
- 启动
runtime\python.exe api_v2.py - 等待 18 秒
- 启动
runtime\python.exe mytest6_2.py
注意:
- 启动后的两个终端窗口都不要关闭
- 首次加载模型时间较长,属正常现象
.
├─ api_v2.py # GPT-SoVITS TTS API(FastAPI)
├─ mytest6_2.py # 桌宠主程序(PyQt5 + Janus)
├─ run.bat # 一键启动脚本
├─ 说明.txt # 中文启动说明
├─ Janus-Pro-7B_0/ # Janus 模型目录
├─ GPT_SoVITS/ # GPT-SoVITS 推理代码
├─ GPT_weights_v2/ # GPT 权重
├─ SoVITS_weights_v2/ # SoVITS 权重
├─ runtime/ # 内置 Python 运行时与依赖
├─ test_pic/ # 桌宠皮肤/托盘图
└─ outputs/ # 生成的临时语音输出
默认地址:http://127.0.0.1:9880
GET/POST /tts:文本转语音GET /set_gpt_weights:切换 GPT 权重GET /set_sovits_weights:切换 SoVITS 权重GET /set_refer_audio:设置参考音频GET /control?command=restart|exit:服务控制
示例:
curl "http://127.0.0.1:9880/tts?text=你好&text_lang=zh&ref_audio_path=GPT_SoVITS/ref/cyn.wav&prompt_lang=zh&prompt_text=你好&text_split_method=cut5&media_type=wav"- 报错“未检测到 CUDA 设备”
- 当前代码会直接退出,请确认 NVIDIA 驱动与 CUDA 可用
- TTS 无声音或接口报错
- 检查
api_v2.py是否已启动 - 检查
PATH是否包含 FFmpeg
- 检查
- 启动后响应慢
- 大模型首次加载较慢,可先观察终端日志
- 新功能优先在
mytest6_2.py中拆分模块(UI、推理、音频解耦) - 生产部署建议把模型与权重改为外部配置,不直接提交仓库
- 建议补充
.gitignore(过滤outputs/、临时缓存、日志等)
- Janus 模型来自 DeepSeek Janus 系列(请遵循其模型与代码许可证)
- GPT-SoVITS 请遵循对应项目许可证与使用规范
如用于公开分发,请在发布前补充完整 LICENSE 与第三方依赖声明。