スクリプト

PSDToolkit用自然な口パク

スクリーンショット

概要

音声の強弱に合わせて自然な口パクを生成

詳細説明

PSDToolKit Natural LipSync

AviUtl2版PSDToolKit2の立ち絵を、音声の強弱から自然に口パクさせる非公式ランタイムです。AviUtl1版PSDToolKitの音声解析を土台にしていますが、完全再現ではなく、さまざまな声質や口形状で自然に見える動きを目指しています。公式のPSDToolKit.luaは変更しません。

特徴

  • 256サンプルのHamming窓、Ooura RDFT、音量判定を使って、発話中の口形状をネイティブモジュールで解析します。
  • 16-bit PCM WAVはAviUtl2のメディアキャッシュを介さず読み取り、安定した24 kHzの解析音声へ変換します。
  • 音量がしきい値以上なら1段階開き、未満なら1段階閉じるため、半開きなどの中間口形状を開閉の途中だけに表示します。
  • 複数の口形状欄に同じレイヤーが設定されている場合は連続する重複を除き、同じ画像で遷移が停滞するのを防ぎます。
  • .anm2 / .obj2を複数まとめてドラッグ&ドロップ変換できます。

本ツールの通常モードは、音声の強弱に合わせて閉じ口から開き口までを1フレームずつ移動します。16-bit PCM WAV向けの旧定義互換モジュールもLipSyncAviUtl1Legacy.luaとして同梱していますが、通常モードでは同じ画像が連続する口形状欄を自動的に整理します。

必要環境

  • Windows 10 / 11 x64
  • AviUtl2
  • PSDToolKit2

PSDToolKit2は先に導入してください。本ツールだけではPSDを表示できません。

インストール

AviUtl2カタログまたはパッケージファイル

ReleasesからPSDToolKit_NaturalLipSync_v*.au2pkg.zipを取得します。AviUtl2カタログではパッケージファイルとして読み込めます。手動の場合はZIPのScriptフォルダをC:\ProgramData\aviutl2へ展開してください。

インストール後は次の3ファイルが同じ場所に置かれます。

C:\ProgramData\aviutl2\Script\PSDToolKit\LipSyncAviUtl1.lua
C:\ProgramData\aviutl2\Script\PSDToolKit\LipSyncAviUtl1Legacy.lua
C:\ProgramData\aviutl2\Script\PSDToolKit\LipSyncAviUtl1.mod2

立ち絵定義の変換

  1. AviUtl2を終了します。
  2. C:\ProgramData\aviutl2\Script\PSDToolKit\AviUtl1LipSyncToolsを開きます。
  3. 変換したい.anm2 / .obj2、または定義を含むフォルダをPSDToolKit口パク変換へドロップ.cmdへドロップします。
  4. 完了後にAviUtl2を起動します。

複数ファイルと複数フォルダを同時にドロップできます。片方だけを指定した場合も、同名の.anm2 / .obj2を対で変換します。元ファイルはその場で更新され、変換前の内容は日時付きフォルダへバックアップされます。

既存エイリアスが変換済みの定義名を参照している場合、エイリアス自体を作り直す必要はありません。AviUtl2の再起動後から新しい口パク処理が使われます。

2.0.0の互換性

汎用ツールであることを明確にするため、厳密な旧状態判定モジュールをLipSyncAviUtl1Legacy.luaへ改名しました。旧名のLipSyncAviUtl1MtULegacy.luaは配布せず、旧名との互換性も提供しません。

旧名を直接requireしている独自定義は、新しいモジュール名へ変更するか、元のPSDToolKit定義から通常モードへ再変換してください。変換ツールが生成した通常モードの定義と、LipSyncAviUtl1を参照している既存エイリアスには影響しません。

公開名は2.0.0からPSDToolKit Natural LipSyncへ変更しました。既存定義と更新導入を維持するため、ランタイムのLipSyncAviUtl1というファイル名、カタログID、AviUtl1LipSyncToolsという導入先フォルダ名は内部互換名として残しています。

対応範囲

16-bit PCM WAVのモノラル、およびステレオのトラック0を主な高精度解析対象としています。圧縮音声や24 kHz未満の音声はAviUtl2のデコーダーを経由するため、解析結果が異なる場合があります。

口形状はPSDToolKit定義に登録されている順番を使用します。閉じ・開きの2形状だけでも、半開きなどを含む3から5形状でも動作します。

ビルド

Visual Studio 2022の「C++によるデスクトップ開発」とWindows SDKが必要です。

.\Build-LipSyncAviUtl1.ps1
.\New-ReleasePackage.ps1 -SkipBuild

Build-LipSyncAviUtl1.ps1はネイティブ単体テストも実行します。配布物はdistへ生成されます。

ライセンス

本プロジェクトはMIT Licenseで公開しています。AviUtl2 SDKとOoura FFTのライセンス・著作権表示はnative/THIRD_PARTY_NOTICES.mdを参照してください。

PSDToolKit2は本リポジトリに含みません。PSDToolKit2本体のライセンスと配布条件は公式リポジトリに従ってください。

AIの利用について

READMEを含む本リポジトリのコード、文書、配布素材は、AI(OpenAI Codex)を使用して生成・編集されています。

謝辞

  • AviUtl / AviUtl2: KENくん
  • PSDToolKit / PSDToolKit2: おおぶ(oov)さん
  • General Purpose FFT: Takuya Oouraさん

本プロジェクトは上記各プロジェクトの公式配布物ではありません。

依存関係

  • oov.PSDToolKit2