Spaces:
Runtime error
Runtime error
A newer version of the Gradio SDK is available: 6.14.0
DittoTalkingHead プロジェクト
プロジェクト概要
このリポジトリは、音声から自然なトーキングヘッド動画を生成するDittoモデルの実装と、そのAPI化を行うプロジェクトです。単一の画像と音声ファイルから、音声に同期した自然な表情や口の動きを持つ動画を生成します。
作業フロー
本プロジェクトは、Statement of Work (SOW) ドキュメントを作成してから実装を行う段階的なアプローチを採用しています。
フェーズ構成
- Phase 1: 基本実装 - Hugging Face Spacesへのデプロイ
- Phase 2: API実装 - REST API化とクライアント実装
- Phase 3: パフォーマンス最適化 - 処理速度の大幅改善
ディレクトリ構造
/ ルートディレクトリ
README.md- Hugging Face Spaces用のメタデータ付きREADMEREADME_jp.md- 日本語プロジェクト説明(このファイル)README_ditto-talkinghead.md- Dittoモデルの技術詳細README_hf_space.md- Hugging Face Spacesデプロイメント説明app.py- Gradio Webアプリケーションのメインファイルinference.py- モデル推論の実装model_manager.py- モデルファイルの管理・ダウンロードtest_api.py- API機能のテストスクリプトtest_api_client.py- APIクライアントの実装test_performance.py- パフォーマンステストツールrequirements.txt- Python依存関係environment.yaml- Conda環境設定packages.txt- システムパッケージ依存関係
/ToDo 計画ドキュメント
plan-v0.md- 初期調査報告と実装計画0717-1_Phase1_SOW_revised.md- Phase 1 実装仕様書(基本実装)0717-2_Phase2_API_SOW.md- Phase 2 実装仕様書(API化)0717-3_Phase3_Performance_SOW.md- Phase 3 実装仕様書(高速化)
/core コアモデル実装
/atomic_components- モデルの基本コンポーネントaudio2motion.py- 音声から動きへの変換avatar_registrar.py- アバター登録処理wav2feat.py- 音声特徴抽出warp_f3d.py- 3D特徴のワーピング- 他多数の処理モジュール
/aux_models- 補助モデル(顔検出、ランドマーク検出等)face_mesh.py- 顔メッシュ検出hubert_stream.py- HuBERT音声モデルmediapipe_landmark478.py- MediaPipeランドマーク
/models- メインモデル実装appearance_extractor.py- 外観特徴抽出decoder.py- デコーダーlmdm.py- ランドマーク拡散モデル/modules- モデルモジュール群
/utils- ユーティリティ関数crop.py- 画像クロップ処理load_model.py- モデルロードtensorrt_utils.py- TensorRT最適化
/docs ドキュメント
APIドキュメント.md- API仕様書(日本語)api_documentation.md- API仕様書(英語)deployment_guide.md- デプロイメントガイドmodel_upload_guide.md- モデルアップロードガイド
/example サンプルファイル
audio.wav- サンプル音声image.png- サンプル画像2025-07-17_22-12-46.mp4- 生成サンプル動画
/scripts ユーティリティスクリプト
cvt_onnx_to_trt.py- ONNXからTensorRTへの変換
/stream_pipeline_* リアルタイム処理
stream_pipeline_online.py- オンラインストリーミング処理stream_pipeline_offline.py- オフライン処理
主要な機能
1. 基本的な動画生成
- 音声ファイル(WAV)とソース画像(PNG/JPG)から動画生成
- 自然な口の動きと表情の同期
- 高品質な動画出力
2. API機能
- REST APIエンドポイント(
/process_talking_head) - 画像の事前アップロード機能(
/prepare_avatar) - 非同期処理とキャッシュサポート
3. パフォーマンス最適化(Phase 3実装済み)
- ✅ 解像度320×320固定による高速化(実装済み)
- ✅ 画像埋め込みの事前計算とキャッシュ(実装済み)
- ✅ GPU最適化とMixed Precision(実装済み)
- ✅ Cold Start最適化(実装済み)
- 🔄 TensorRT/ONNX最適化(今後実装予定)
- 達成: 元の処理時間から約50-65%削減
使用方法
Web UI経由
- Hugging Face Spaces(https://huggingface.co/spaces/O-ken5481/talkingAvater_bgk)にアクセス
- 音声ファイルと画像をアップロード
- 「生成」ボタンをクリック
API経由
Gradio Client
from gradio_client import Client, handle_file
client = Client("O-ken5481/talkingAvater_bgk")
result = client.predict(
audio_file=handle_file("path/to/audio.wav"),
source_image=handle_file("path/to/image.png"),
api_name="/process_talking_head"
)
FastAPI (Phase 3最適化版)
import requests
# 1. アバターを事前準備(高速化)
with open("avatar.png", "rb") as f:
response = requests.post("http://localhost:8000/prepare_avatar", files={"file": f})
avatar_token = response.json()["avatar_token"]
# 2. 動画生成
with open("audio.wav", "rb") as f:
response = requests.post(
"http://localhost:8000/generate_video",
files={"file": f},
data={"avatar_token": avatar_token}
)
# 3. 保存
with open("output.mp4", "wb") as f:
f.write(response.content)
技術スタック
- モデル: Ditto TalkingHead(Ant Group Research)
- フレームワーク: PyTorch, ONNX Runtime, TensorRT
- WebUI: Gradio
- インフラ: Hugging Face Spaces(GPU: A100)
- 補助モデル: HuBERT(音声特徴)、MediaPipe(顔ランドマーク)
Phase 3の実装内容
最適化モジュール(core/optimization/)
- resolution_optimization.py: 解像度320×320固定化
- gpu_optimization.py: GPU最適化(Mixed Precision、torch.compile)
- avatar_cache.py: 画像埋め込みキャッシュシステム
- cold_start_optimization.py: 起動時間最適化
新しいアプリケーション
- app_optimized.py: Phase 3最適化を含むGradio UI
- api_server.py: FastAPI実装(/prepare_avatar、/generate_video)
- test_performance_optimized.py: パフォーマンステストツール
詳細は Phase 3最適化ガイド を参照してください。
今後の展開
- TensorRT/ONNX最適化の完全実装(追加で50-60%高速化)
- リアルタイムストリーミング対応
- 複数話者の対応
- バッチ処理の実装