综合介绍
WeClone 是一个开源项目,它通过微信聊天记录和语音消息,结合大语言模型和语音合成技术,让用户创建个性化的数字分身。项目能分析用户的聊天习惯来训练模型,还可以用少量语音样本生成逼真的声音克隆。最终,数字分身可以绑定到微信机器人,实现自动回复文字和语音。这个工具适合想在微信上用AI助手或学习AI技术的人。代码完全公开,吸引了不少技术爱好者和开发者参与。
功能列表
- 聊天记录训练:用微信聊天记录微调大语言模型,模仿用户说话方式。
- 高质量语音克隆:用0.5B参数模型和5秒语音样本,生成相似度高达95%的声音。
- 微信机器人绑定:将数字分身接入微信,支持自动文字和语音回复。
- 数据预处理工具:提供脚本将聊天记录转为训练数据,默认过滤敏感信息。
- 模型个性化优化:支持LoRA微调技术,让模型更符合用户语言习惯。
使用帮助
WeClone 需要一定的技术基础,比如会用 Python 和 Git。下面是详细的操作步骤,帮你从安装到使用一步步上手。
安装流程
- 克隆项目
打开终端,输入:
git clone https://github.com/xming521/WeClone.git
然后进入项目目录:
cd WeClone
- 设置环境
项目建议用 Python 3.9。推荐用uv
管理环境,安装命令如下:
uv venv .venv --python=3.9
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows
- 安装依赖
激活环境后,运行:
uv pip install --group main -e .
注意:这不包括语音克隆的 xcodec
依赖,若需要可另行安装。
- 下载模型
默认使用 ChatGLM3-6B 模型。可以用 Hugging Face 下载:
git lfs install
git clone https://huggingface.co/THUDM/chatglm3-6b
如果下载慢,可用魔搭社区:
export USE_MODELSCOPE_HUB=1 # Windows 用 set
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
魔搭模型需替换 modeling_chatglm.py
为 Hugging Face 版本。
数据准备
- 导出聊天记录
- 下载
PyWxDump
,解密微信数据库。 - 点击“聊天备份”,选择 CSV 格式导出联系人或群聊记录。
- 将导出的
wxdump_tmp/export/csv
文件夹放入./data/csv
。 - 示例数据在
data/example_chat.csv
。
- 处理数据
运行脚本转为 JSON 格式:
./make_dataset/csv_to_json.py
默认过滤手机号、身份证号等敏感信息。可以在 blocked_words.json
添加禁用词,整句含禁用词会被去掉。
模型微调
- 配置参数
- 编辑
settings.json
,指定模型路径。 - 调整
per_device_train_batch_size
和gradient_accumulation_steps
适配显存。 - 根据数据量调整
num_train_epochs
(轮次)和lora_rank
,避免过拟合。
- 单卡训练
python src/train_sft.py
作者用2万条数据训练,loss 降到 3.5,效果不错。
- 多卡训练
安装 DeepSpeed:
uv pip install deepspeed
运行多卡训练(替换“使用显卡数量”):
deepspeed --num_gpus=使用显卡数量 src/train_sft.py
语音克隆
- 准备5秒以上微信语音消息,放入
WeClone-audio
文件夹。 - 运行相关脚本(需安装
xcodec
),生成的声音保存在该文件夹。 - 声音保留语调和情感,相似度可达95%。
绑定微信机器人
- 部署 AstrBot
- 下载并安装 AstrBot(支持微信、QQ 等平台)。
- 配置消息平台(如微信)。
- 启动 API 服务
python src/api_service.py
默认地址为 http://172.17.0.1:8005/v1
。
- 配置 AstrBot
- 添加服务提供商,类型选 OpenAI。
- API Base URL 填本地地址,模型填
gpt-3.5-turbo
。 - 关闭工具调用:发送指令
/tool off reminder
。 - 设置与微调时一致的系统提示词。
硬件要求
- 默认用 ChatGLM3-6B 和 LoRA 微调,需16GB显存。
- 其他选项:
- QLoRA(4位精度):6GB(7B模型)到48GB(70B模型)。
- 全参数微调(16位):60GB(7B)到600GB(70B)。
- 建议用GPU,显存不足可调低精度或用多卡。
使用技巧
- 数据量至少2000条,质量越高越好。
- 语音样本要清晰,避免背景噪音。
- 测试模型可用
web_demo.py
或test_model.py
。
完成后,你的数字分身就能在微信上自动聊天和语音回复,效果非常接近本人。
应用场景
- 日常助手
数字分身能帮你回复微信消息,比如忙时自动回应朋友问候。 - 技术实践
开发者可以用它学习大语言模型和语音克隆技术,代码开源适合动手尝试。 - 趣味互动
让数字分身用你的声音和语气跟朋友聊天,增加娱乐性。
QA
- 数据量少会怎样?
数据少于2000条可能导致模型不准,建议多准备对话和清晰语音。 - 普通电脑能跑吗?
需要16GB显存的GPU,普通电脑可能不行,可用低精度模式试试。 - 声音克隆有多像?
用5秒样本生成的声音,相似度高达95%,语调和情感都很自然。