はじめに
Ultralight Digital Humanは、モバイルデバイス上でリアルタイムに動作する超軽量デジタル人体モデルの開発を目指すオープンソースプロジェクトです。このプロジェクトでは、ソーシャルアプリケーション、ゲーム、バーチャルリアリティなど、様々なシナリオに対応したアルゴリズムとモデル構造を最適化することで、モバイルデバイス上でのスムーズな動作を実現しています。ユーザーは、自分のデジタル人体モデルを簡単にトレーニングし、展開することで、パーソナライズされた没入感のある体験を楽しむことができます。
モバイルで問題なく動作することについては、この現行モデルのチャンネル数を少し小さく変更し、オーディオ機能にwenetを使用すれば問題ない。
機能一覧
- リアルタイム操作モデルはモバイルデバイスでリアルタイムに実行でき、レスポンシブです。
- 軽量設計リソースが限られたモバイル機器に最適化されたモデル構造。
- オープンソースプロジェクトコードとモデルは完全にオープンソースであり、ユーザーが自由に変更して使用することができます。
- マルチシナリオアプリケーションソーシャルアプリケーション、ゲーム、バーチャルリアリティなど、さまざまなシナリオに適しています。
- 音声特徴の抽出wenetとhubertの両方の音声特徴抽出方式をサポートしています。
- 同期ネットワークシンクネット・テクノロジーによるリップ・シンクロの強化。
- 詳細チュートリアル詳細なトレーニングと使い方のチュートリアルが用意されており、すぐに使い始めることができます。
ヘルプの使用
設置プロセス
- 環境準備::
- Python 3.10以上をインストールしてください。
- PyTorch 1.13.1とその他の依存関係をインストールします:
conda create -n dh python=3.10 conda dh をアクティブにする conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia conda install mkl=2024.0 pip install opencv-python transformers numpy==1.23.5 soundfile librosa onnxruntime
- モデルファイルのダウンロード::
- 以下のリンクからwenet encoder.onnxファイルをダウンロードし、それを
data_utils/
カタログ ダウンロードリンク
- 以下のリンクからwenet encoder.onnxファイルをダウンロードし、それを
使用プロセス
- ビデオの準備::
- 3~5分のビデオを用意し、各フレームに顔の露出が十分にあり、音声がクリアでノイズがないことを確認する。
- ビデオを新しいフォルダに入れる。
- 音声特徴の抽出::
- オーディオの特徴を抽出するには、以下のコマンドを使用します:
cd data_utils python process.py YOUR_VIDEO_PATH --asr hubert
- オーディオの特徴を抽出するには、以下のコマンドを使用します:
- トレーニングモデル::
- より良い結果を得るためにsyncnetモデルをトレーニングする:
cd ... python syncnet.py ---save_dir ./syncnet_ckpt/ --dataset_dir ./data_dir/ --asr hubert
- 最も損失の少ないチェックポイントを使用して、デジタル・ヒューマン・モデルをトレーニングする:
python train.py --dataset_dir ./data_dir/ ---save_dir ./checkpoint/ --asr hubert --use_syncnet --syncnet_checkpoint syncnet_ckpt
- より良い結果を得るためにsyncnetモデルをトレーニングする:
- 推論::
- テスト音声の特徴を抽出:
python extract_test_audio.py YOUR_TEST_AUDIO_PATH --asr hubert
- 走る推理:
python inference.py --dataset ./data_dir/ --audio_feat ./your_test_audio_hu.npy ---save_path ./output.mp4 --checkpoint ./チェックポイント/best_model.pth
- テスト音声の特徴を抽出:
ほら
- ビデオのフレームレートが、選択した音声特徴抽出スキーム(wenetの場合は20fps、hubertの場合は25fps)と一致していることを確認する。
- 学習と推論のプロセスでは、モデルの損失値が定期的に監視され、最適なチェックポイントが選択されて学習が行われる。