広告

WAN 2.1 Text-to-Video: 6週間のテスト後に下した開発者による率直な評価

Dev.to / 2026/4/3

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical UsageModels & Research

要点

  • WAN 2.1 は Alibaba の Tongyi ラボによる 14B パラメータの動画拡散モデルで、テキストから動画生成および画像から動画生成に対応しています。
  • 720p で最大 81 フレームまで生成可能です。

WAN 2.1 テキストから動画: 6週間のテスト後の率直な開発者評価

動画生成は「技術的に感心するおもちゃ」から「実際に本番環境で使える」へ、WAN 2.1によって変わりました。しかし、デモリールと現実世界での統合の間には、まだ大きなギャップがあります。

それを使って6週間開発した後に学んだことをまとめます。

WAN 2.1 とは

WAN(AlibabaのTongyiラボによるもの)は、140億パラメータの動画拡散モデルです。2.1のリリースでは次がサポートされています:

  • テキストから動画(T2V): テキストの説明から生成
  • 画像から動画(I2V): 静止画像をアニメーション化
  • 最大81フレームの720p(16fps換算でおよそ5秒)

PixelAPIのインフラで、RTX 6000 Ada(48GB VRAM)上で動作します。このハードウェアでは: ~5秒クリップあたり3分。

実際に機能するプロンプトの型

何百回もテスト生成を行った後、いくつか明確なパターンが見えてきました:

動作(モーション)動詞を明示的に使う:

# 弱い
"mountain lake at sunset"

# 強い  
"slow camera pan across a mountain lake at sunset, water rippling gently, golden reflections"

カメラ移動を指定する:

  • "dolly shot", "tracking shot", "crane shot", "static wide shot"
  • "zoom in slowly", "pull back to reveal"

物理を固定する:

"leaves falling slowly in autumn wind, gentle spiral motion, golden afternoon light filtering through trees"

スタイルのアンカーが役に立つ:

"4K cinematic, shallow depth of field, anamorphic lens, film grain"
"documentary style, handheld camera, natural lighting"
"time-lapse, fast motion, clouds moving rapidly"

統合パターン

動画ジョブは非同期です。同期的に待とうとしないでください:

import requests, time

class VideoJob:
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base = "https://api.pixelapi.dev/v1"
        self.headers = {"Authorization": f"Bearer {api_key}"}

    def submit(self, prompt: str, duration: int = 5) -> str:
        r = requests.post(f"{self.base}/video/generate",
            headers=self.headers,
            json={"prompt": prompt, "duration": duration})
        return r.json()["job_id"]

    def poll(self, job_id: str, max_wait: int = 600) -> dict:
        deadline = time.time() + max_wait
        while time.time() < deadline:
            r = requests.get(f"{self.base}/jobs/{job_id}", headers=self.headers)
            status = r.json()
            if status["status"] in ("completed", "failed"):
                return status
            time.sleep(20)
        raise TimeoutError(f"Job {job_id}
返却形式: {"translated": "翻訳されたHTML"}'{max_wait} 秒以内に完了できません") def generate(self, prompt: str) -> str: job_id = self.submit(prompt) result = self.poll(job_id) if result["status"] == "failed": raise Exception(f"生成に失敗しました: {result.get('error')}") return result["output_url"] # 使用方法 client = VideoJob("your_api_key") video_url = client.generate( "岩だらけの海岸で灯台をゆっくりと旋回する空撮ドローン、下には海の波、ゴールデンアワー" )

できないこと(まだ)

率直に言うと:

  • 映像内のテキスト描画: 文字はアニメーションしますが、多くの場合歪みます
  • 正確な動きの制御: 動きを指定すると解釈しますが、一貫性がありません
  • つなぎ目なしでの長尺クリップ: 生成あたり5秒のハードリミット
  • カット間でのキャラクターの一貫性: 各クリップは独立しています
  • 3分未満の生成: モデルが大きいです

クラウド動画APIの比較

サービス 品質 おおよそのコスト/5秒クリップ レイテンシ
Runway Gen-3 Excellent(優れている) 高(約0.50〜2.00) 1〜3分
Kling 1.6 Very good(とても良い) 中(約0.14) 2〜5分
PixelAPI経由のWAN 2.1 Very good(とても良い) 低(クレジットベース) 3〜5分
Sora(OpenAI) Excellent(優れている) 非常に高い 可変

WAN 2.1の品質は、コスト面で大幅に低いにもかかわらず、Klingと本当に競り合うレベルです。SoraやGen-3 Alphaではありませんが、ほとんどの制作用途――マーケティングコンテンツ、Bロール、ソーシャル動画――なら、十分に実用的です。

今日すぐに使える実用的なユースケース

  1. 背景/環境用の動画ループ: 自然のシーン、抽象的な動き、建築映像――信頼性が高く高品質
  2. プロダクトのリビールアニメーション: 製品が登場し、カメラが軌道を回り、ライティングが変化
  3. ソーシャル向けコンテンツ: shorts/reels向けの5秒クリップをスケールして生成
  4. プロトタイプのストーリーボード: 高価な撮影の前に素早くラフな動画を作成
  5. 自動化された天気/ニュースのBロール: プログラムによる大量生成

始め方

PixelAPIで非同期ジョブを送信します: pixelapi.dev。開始用の100個の無料クレジットがあります。動画ジョブは、所要時間に応じて約150〜200クレジットを使用します。

完全なAPIリファレンス: api.pixelapi.dev/docs

WAN 2.1(14B)は、PixelAPIのLLM3ノード上のRTX 6000 Ada 48GBで動作します。キューに基づくスケジューリングによりGPUの利用可能性が確保されます。

返却形式: {"translated": "翻訳されたHTML"}

広告