你的微信裡有沒有一個對話窗?它很久都沒有彈出新訊息,但你卻常常在深夜裡點開反反覆覆地翻著。
如果現在,你可以用這些聊天記錄克隆出對方的“數字分身”,儲存下 TA 說話的語氣、風格、獨特的口頭禪,甚至還能給你發來語音,你會怎麼選?
最近,GitHub 上新開源了一個的專案 WeClone——讓你記憶裡的那個 TA 在數字世界裡永生,已不再是不可能。

WeClone 透過個人微信聊天記錄對大語言模型( LLM )進行微調,打造個性化的數字分身。
它提供從文字生成到語音克隆、從訓練到部署的全鏈路解決方案。讓數字分身不僅替 TA 說話,還聽起來像 TA 本人。
除了留住記憶裡的 TA,你也可以創造自己的數字分身。 你有沒有想過,和自己聊天會是什麼樣的體驗?你會喜歡和自己聊天嗎?


數字人技術的可玩性確實很高,一經推出,內網和外網上都引來了一大波網友的關注。許多網友也是紛紛腦洞大開。


專案指路: https://github.com/mtcto/weclone
我們先一起來了解一下WeClone的核心功能。
核心功能
-
使用微信聊天記錄微調LLM
WeClone 支援匯出微信聊天記錄,並進行格式化處理成問答格式,用於模型微調。
在模型微調方面,WeClone 基於 LoRA 支援對主流 0.5B–7B 規模模型進行低資源微調,包括 ChatGLM3-6B、Qwen2.5-7B 等模型。有效捕捉使用者的語言習慣和表達方式。
模型訓練需要約 16GB 視訊記憶體,視訊記憶體需求可控,訓練效率高,滿足小樣本低資源場景。
需要的視訊記憶體估算值如下:

-
使用微信語音訊息 + Spark-TTS 模型實現高質量聲音克隆
專案配套子模組 WeClone – audio (https://github.com/xming521/WeClone/tree/master/WeClone-audio)基於輕量級 Tacotron 或 WavLM 模型,用 0.5B 引數模型和 5 秒語音樣本,就可以克隆出相似度高達95%的聲音,進一步增強數字分身的真實感。
-
多平臺部署
透過 AstrBot 框架,將數字分身部署到微信、QQ、Telegram、企業微信、飛書等多個聊天平臺。一行命令即可快速啟動,即可與數字分身即時對話。
可能的應用場景
個人助理定製:在你忙碌時,數字分身可以代替你回覆訊息,處理日常事務,例如寫郵件、回覆評論等。
內容創作:快速產出特定風格的個性化文字內容,幫助你運營多個風格一致的小號。例如寫推文、寫指令碼、寫解說等。
數字永生:建立自己或者他人的數字分身,實現永存。
核心模組介紹
WeClone 的數字分身全鏈路核心模組包括了三部分:
資料匯出與預處理 → LoRA模型微調 → 多平臺部署
接下來,我們分模組看看各部分的技術亮點。
1. 資料匯出與預處理
WeClone 首先將微信匯出的 CSV/SQLite 檔案轉為標準的 JSON 檔案。 然後進行文字清洗,主要是為了去除噪聲,以及過濾掉敏感資訊。最後分割對話資訊,對聊天記錄進行分段標註,並保留時間戳、
2. 模型微調
WeClone 使用 ChatGLM3-6B 為基礎模型,基於 LoRA 框架進行 SFT(Supervised Fine-Tuning)階段的微調。
關鍵的亮點點包括:
-
使用低秩介面卡,顯著減少可訓練引數。
-
單機/分散式訓練相容,支援多卡訓練加速。
3. 模型部署
WeClone 使用 FastAPI/Flask 打包微調後的模型,支援 GPU/CPU 混合部署、多平臺登入,並且支援自定義引數。
安裝部署教程
環境搭建
建議使用 uv ,這是一個非常快速的 Python 環境管理器。安裝uv後,您可以使用以下命令建立一個新的Python環境並安裝依賴項,注意這不包含xcodec(音訊克隆)功能的依賴:
git clone https://github.com/xming521/WeClone.gitcd WeCloneuv venv .venv --python=3.9source .venv/bin/activateuv pip install --group main -e . Note
訓練以及推理相關配置統一在檔案 settings.json。
資料準備
請使用 PyWxDump 提取微信聊天記錄。下載軟體並解密資料庫後,點選聊天備份,匯出型別為 CSV ,可以匯出多個聯絡人或群聊,然後將匯出的位於
wxdump_tmp/export
的 csv 資料夾放在 ./data
目錄即可,也就是不同人聊天記錄的資料夾一起放在 ./data/csv
。 示例資料位於 data/example_chat.csv
。資料預處理
專案預設去除了資料中的手機號、身份證號、郵箱、網址。還提供了一個停用詞詞庫 blocked_words ,可以自行新增需要過濾的詞句(會預設去掉包括停用詞的整句)。 執行
./make_dataset/csv_to_json.py
指令碼對資料進行處理。在同一人連續回答多句的情況下,有三種處理方式:

模型下載
首選在 Hugging Face 下載 ChatGLM3 模型。如果在 Hugging Face 模型的下載中遇到了問題,可以透過下述方法使用魔搭社群,後續訓練推理都需要先執行
export USE_MODELSCOPE_HUB=1
來使用魔搭社群的模型。由於模型較大,下載過程比較漫長請耐心等待。
export USE_MODELSCOPE_HUB=1 # Windows 使用 `set USE_MODELSCOPE_HUB=1`git lfs installgit clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
魔搭社群的
modeling_chatglm.py
檔案需要更換為 Hugging Face 的。配置引數並微調模型
-
(可選) 修改 settings.json 選擇本地下載好的其他模型。
-
修改
per_device_train_batch_size
以及gradient_accumulation_steps
來調整視訊記憶體佔用。 -
可以根據自己資料集的數量和質量修改
num_train_epochs
、lora_rank
、lora_dropout
等引數。
單卡訓練
執行
src/train_sft.py
進行sft階段微調,本人loss只降到了3.5左右,降低過多可能會過擬合,我使用了大概2萬條整合後的有效資料。python src/train_sft.py
多卡訓練
uv pip install deepspeeddeepspeed --num_gpus=使用顯示卡數量 src/train_sft.py
使用瀏覽器demo簡單推理
python ./src/web_demo.py
使用介面進行推理
python ./src/api_service.py
使用常見聊天問題測試
python ./src/api_service.pypython ./src/test_model.py
部署到聊天機器人
AstrBot方案
AstrBot 是易上手的多平臺 LLM 聊天機器人及開發框架。
使用步驟:
-
部署 AstrBot -
在 AstrBot 中部署訊息平臺 -
執行 python ./src/api_service.py
,啟動api服務 -
在 AstrBot 中新增服務提供商,型別選擇OpenAI,API Base URL 根據AstrBot部署方式填寫(例如docker部署可能為http://172.17.0.1:8005/v1) ,模型填寫gpt-3.5-turbo -
微調後不支援工具呼叫,請先關掉預設的工具,訊息平臺傳送指令: /tool off reminder
,否則會沒有微調後的效果。 -
根據微調時使用的 default_system ,在 AstrBot 中設定系統提示詞。
>/ 本期作者:Tashi & JackCui
>/ JackCui:AI領域從業者,畢業於東北大學,大廠演算法工程師,熱愛技術分享。