LoginSignup
0
1

More than 3 years have passed since last update.

JALI tool のメモ

Last updated at Posted at 2019-10-23

何か?

vtuber などで, 任意の音声を与えて speech animation させたい用です.

台本と音声から, よろしく speech animation を作ってくれます.
基本的には Phoneme(Viseme)のアニメーション(時系列重み)を計算してくれるだけで, これに対応した rig が必要になります. 基本的には後述の jRig を使います.
(キャラクタの静的メッシュを与えたら, よろしく唇や顎, 目や表情を作ってくれるわけではない)

筆者は Maya plugin を調達しましたが, 最近では Unity plugin や C++ SDK も出ているようです.
少なくとも Maya plugin は, リアルタイム用途ではありません(オフラインで animation 作る用)

似たようなツールとしては, iClone の lip sync でしょうか. ただし iClone だと, FBX で import/export できる rig 限定になります. 動かしたいキャラクタを Maya で生成している場合は rig が iClone に変換してインポートできればいいですが, できない場合は JALI くらいになるかも?(https://facefx.com/ も同様なことができそうですが, 未検証)

コンポーネント

いくつかコンポーネントがあります. Maya の plugin との前提で話をします.

jAnalyze

テキスト(台本)と音声データから phoneme 位置の alignment 情報を計算します
(中身的にはほぼ Montreal Forced Aligner 動かしているだけっぽい)

筆者は自前で MFA を動かしてアラインメントデータ作成対応したので, jAnalyze のライセンスは調達しませんでした.

jSync

テキスト, 音声データとアラインメント情報から, speech アニメーションデータを生成します.
生成時間は数百ミリから数秒で終わります(機械学習などは使っていないっぽい)

似たようなことができるものに, VisemeNet があります.

ただ, VisemeNet だと毎フレームのキーフレームデータになります. jSync だとアニメーションカーブなので, あとでアニメーション調整ができます.

また, VisemeNet よりは jSync のほうが品質がよいし, VisemeNet だと足りないパラメータ(Viseme)があったりします. eye blink なども VisemeNet は出力できません(eye blink については適当にランダムで生成でもよさそうですが)

とりあえず jSync がどんなものか試したいときは, 評価版を使ったり, VisemeNet を動かしてみるといいでしょう.
VisemeNet を試したい場合, 推論だけする VisemeNet-infer を作りましたのでこちらを使うとよいでしょう: https://github.com/lighttransport/VisemeNet-infer

ちなみに, jSync は, ドキュメントには記載が無いのですが, ネットワーク認証をしていて, ネットに繋がっていないと Maya がクラッシュするので注意ください(2 週間くらいこれでハマった)

jAmbient

筆者がライセンスを調達したときにはありませんでした.
ambient motion を音声データからよろしく設定するものでしょう.
(一応秋くらいにアップデートで ambient motion 対応すると連絡がありましたが, 今の所まだ連絡はありません)

たとえば音声データからそれっぽい首の動きをするとか, ambient gaze motion とか.
(eye blink や眼球運動(サッカード)などは, 現状の jSync でそこそこ出すことができます)

jRig

jSync の出すデータは, 基本 jRig と連動しています,

この手の出始めのツールにあるあるですが, 基本ドキュメントも説明動画もほぼありません. サポートも問い合わせてもまともに返事が無いので, 自分でいろいろ手探りで使い方を調べる必要があるため, どのパラメータがどのような動きをするのかを知るリファレンスとして jRig は必要になるので, 基本 jRig も必須です.

中身的には Viseme, FACS, jaw/lip のボーンのパラメータのブレンドをする Maya カスタムノード(dll)です. Viseme/FACS(表情)は, skinning と blendshapes で実現しています.

それぞれのパラメータのブレンドを Maya の標準ノードで構築すると膨大になるので, 一つの native dll にして対応しています(input/output が 200 個くらいある, 1 個のノードになっている!). 残念ながらソースコードは公開していないようなので, 基本的にはキャラクタ rig は jRig node を含んだ形にして作ることになるでしょう.

Viseme 形状の制作

jSync は各 Viseme(Jaw/Lip + Tongue)のパラメータを出してくれるだけなので, 動かしたいキャラクターが各 Viseme でどのような口の形になるかは自身で設定(モデリング, リギング)しなくてはなりません.

や, JALI, VisemeNet の論文, Phoneme -> Viseme mapping などでググって調べる必要があります.
(youtube 英会話発音動画とか参考になるかも)

もしくは IPA(Internal Phonetic Alphabet, https://en.wikipedia.org/wiki/International_Phonetic_Alphabet )を参考にして, 実際にアクターに発音してもらい, パフォーマンスキャプチャ -> 3D 復元して生成するという手もあります.

ただし, IPA は英語用なので, 日本語など他の言語では調整が必要. 日本語は母音ベースなので, 英語に比べれば viseme パターンは少なめと思われますが,

音素の組み合わせの動きなどもきちんと考えようとすると, 英語よりは難しくなってくるかも...?

ところで, Amazon Polly のドキュメントは専門的で参考になりますね.

TODO

  • TTS であれば Tacotron などを使ってアラインメントを計算して jSync に渡す(MFA は今回のような speech animation 用に使うには使いづらい)
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1