一個極具爭議的開源專案,「微信克隆人」火了!

你的微信裡有沒有一個對話窗?它很久都沒有彈出新訊息,但你卻常常在深夜裡點開反反覆覆地翻著。
如果現在,你可以用這些聊天記錄克隆出對方的“數字分身”,儲存下 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_epochslora_ranklora_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 聊天機器人及開發框架。
使用步驟:
  1. 部署 AstrBot
  2. 在 AstrBot 中部署訊息平臺
  3. 執行 python ./src/api_service.py ,啟動api服務
  4. 在 AstrBot 中新增服務提供商,型別選擇OpenAI,API Base URL 根據AstrBot部署方式填寫(例如docker部署可能為http://172.17.0.1:8005/v1) ,模型填寫gpt-3.5-turbo
  5. 微調後不支援工具呼叫,請先關掉預設的工具,訊息平臺傳送指令: /tool off reminder,否則會沒有微調後的效果。
  6. 根據微調時使用的 default_system ,在 AstrBot 中設定系統提示詞。
>/ 本期作者:Tashi & JackCui
>/ JackCui:AI領域從業者,畢業於東北大學,大廠演算法工程師,熱愛技術分享。


相關文章