はじめに
WeCloneはオープンソースのプロジェクトで、WeChatのチャットログと音声メッセージを大規模な言語モデルと音声合成技術と組み合わせることで、パーソナライズされたデジタル・ドッペルゲンガーを作成することができる。このプロジェクトは、モデルを訓練するためにユーザーのチャット習慣を分析することができ、また、少数の音声サンプルでリアルな声クローンを生成することができる。最終的には、デジタル・ドッペルゲンガーをWeChatボットに結びつけ、テキストや音声への自動返信を可能にする。このツールは、WeChatでAIアシスタントを使いたい人や、AI技術を学びたい人に適している。コードは完全に公開されており、多くの技術愛好家や開発者が参加している。
機能一覧
- チャットログトレーニングマイクロソフトのチャットトランスクリプトを使用して、ユーザーの発話を模倣するための大規模な言語モデルを微調整する。
- 高品質スピーチクローニング0.5Bのパラメトリックモデルと5秒間の音声サンプルを使って、最大95%の類似度を持つ音を生成します。
- WeChatロボット製本デジタルスプリットをWeChatに接続し、テキストと音声による自動返信をサポート。
- データ前処理ツールデフォルトで機密情報をフィルタリングし、チャットログをトレーニングデータに変換するスクリプトを提供します。
- モデルのパーソナライズ最適化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
ダウンロードに時間がかかる場合は、Magic Hitchコミュニティをご利用ください:
export USE_MODELSCOPE_HUB=1 # Windows 用 set
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
マジックマッチのモデルを交換する必要がある modeling_chatglm.py
ハギング・フェイス・ヴァージョン
データ準備
- チャットログのエクスポート
- ダウンロード
PyWxDump
マイクロソフトのデータベースを解読する - チャットバックアップ」をクリックし、CSV形式を選択して連絡先やグループチャットをエクスポートします。
- エクスポートされた
wxdump_tmp/export/csv
フォルダーの中./data/csv
. - サンプルデータは
data/example_chat.csv
.
- 加工データ
スクリプトをJSON形式で実行する:
./make_dataset/csv_to_json.py
携帯電話番号やID番号などの機密情報のデフォルトフィルタリング。これは blocked_words.json
禁止語を追加すると、禁止語を含む文全体が削除されます。
モデリングの微調整
- 設定パラメータ
- コンパイラ
settings.json
モデルのパスを指定する。 - アダプト
per_device_train_batch_size
歌で応えるgradient_accumulation_steps
ビデオメモリーの適応。 - データ量の調整
num_train_epochs
(ラウンド)とlora_rank
オーバーフィッティングを避ける。
- ワンカードトレーニング
python src/train_sft.py
著者らは20,000個のデータで訓練し、損失は3.5まで下がり、良い結果を得た。
- Dokaトレーニング
DeepSpeed をインストールします:
uv pip install deepspeed
マルチカードトレーニングを実行する(「使用するグラフィックカードの数」を置き換える):
deepspeed --num_gpus=使用显卡数量 src/train_sft.py
ボイスクローニング
- 5秒以上のWeChatボイスメッセージを用意する。
WeClone-audio
フォルダー - 関連スクリプトの実行(インストールが必要)
xcodec
)、生成されたサウンドはそのフォルダに保存されます。 - 声はイントネーションと感情を保ち、95%まで類似している。
WeChatロボット
- AstrBotの展開
- AstrBotをダウンロードしてインストールする。
- メッセージングプラットフォーム(WeChatなど)を設定する。
- APIサービスの開始
python src/api_service.py
デフォルトのアドレスは http://172.17.0.1:8005/v1
.
- AstrBotの設定
- サービスプロバイダを追加し、タイプにOpenAIを選択します。
- API ローカルアドレスのベースURL、モデル
gpt-3.5-turbo
. - ツールコールを閉じる:コマンドを送信
/tool off reminder
. - 微調整に使用するプロンプト語と一致するシステムプロンプト語を設定する。
ハードウェア要件
- ChatGLM3-6BとLoRAによるデフォルトの微調整には、16GBのビデオメモリが必要です。
- その他のオプションもある:
- QLoRA(4ビット精度):6GB(7Bモデル)~48GB(70Bモデル)。
- フル・パラメトリック・トリム(16ビット):60GB(7B)~600GB(70B)。
- GPUを推奨し、ビデオメモリ不足は低精度に調整するか、マルチカードを使用する。
ヒントとコツ
- データ量は少なくとも2,000件で、質が高ければ高いほど良い。
- ボイスサンプルは明瞭で、バックグラウンドノイズを避けること。
- テストモデルあり
web_demo.py
もしかしたらtest_model.py
.
そうすれば、あなたのデジタル・ドッペルゲンガーは、WeChat上で本人に非常に近い結果で自動的にチャットや音声返信ができるようになる。
アプリケーションシナリオ
- アシスタント
このデジタルスプリットは、WeChatのメッセージに対応するのに役立つ。例えば、忙しいときに友人からの挨拶に自動的に返信することができる。 - 技術練習
開発者は、大規模な言語モデルや音声クローン技術について学ぶために利用することができ、コードはオープンソースなので実際に実験することができる。 - 楽しいインタラクティブ
デジタル・ドッペルゲンガーに、あなたの声や口調で友達とおしゃべりをさせれば、エンターテインメントがさらに盛り上がる。
品質保証
- データ量が少ないとどうなるのか?
データ数が2000に満たない場合、モデルが不正確になる可能性があるため、より多くのダイアログと明瞭な音声を用意することを推奨する。 - 普通のコンピューターで動きますか?
16GBのビデオメモリを搭載したGPUが必要だが、通常のコンピューターでは不可能かもしれないので、低精度モードで試してみてほしい。 - サウンドクローンの類似性は?
5秒間のサンプルで生成された声の類似度は95%で、自然なイントネーションと感情を持っていた。