HoloLensでキャラクターに口パクさせてみた
歌に合わせた口パクのさせ方
調べる前に私が思っていた素朴なイメージ:
音源に合わせてミクさんの口を引っ張り、パラパラ漫画みたいに編集してく.
技術の進歩は素晴らしいもので…
音源から発音を抜き出す仕組みがあるんです.
そして、発音を基に表情を変える仕組みがあるんです!
つまり、自動で、人と同じように、口パクできるんです!!
技術はすげぇ…
音源に合わせた口パクはLipSync(くちびるの同期)という.
やり方は次のようなものがある。
- 音楽データから自動lipSync
- ボーカル音源を基にする
- フル音源からボーカル部を抽出する
- 手作業で付加
以下、調べもの中の内容を未整理なので、後でいろいろ整理する.
例の流れ図はそのうち乗せよう
音楽データを基にするには複数の方法がある.
VOCALOID SKD for Unity
referenceはローカルに落としてある
soysoftware.sakura.ne.jp
lo25131.hatenablog.com
音声データから歌詞を引き出すのはVOCALOID SDKの範囲外っぽい
サンプルコードひっくり返した結果、「音節数カウント」「発音記号引き出し」「母音引き出し」はある。blendShape率の変更はただのスクリプト.
つまり、何らかの形でこの流れに乗せれば、VOCALOID SDKで統一して発音・LipSyncを扱えるはず。
でも見つからない
…VSQXファイル作ってまえばいいんでない?
それか、純然たる音声認識を使ってしまうか(リアルタイム性に問題ありな気しかしないけど、ネイティブなら何とか…?)
qiita.com
OVRLipSync
www.google.co.jp
MMD4Mecanim LipSync Plugin
github.com
tips.hecomi.com
フル音源・インストを利用したvocal extraction
ボーカル音声の抜き出し方 - ニコニコ動画
OVRLipSyncの可能性、そして悲しみ
2017-02-21で私が検証できるとこまでした結果です。将来どうなるか、本当に検証結果が合っているかは怪しいです
OVRLipSyncはHoloLens上で動かない。
Unity上では素晴らしい動きを見せたOVRLipSync氏、HoloLensにデプロイしたとたん、一切のlipSyncをしなくなる.
なんか設定間違えたかなと思い、Debug.Logしようとして気づいた。
HoloLens実機上でログ見えるの…??
どうも見方が分からず、調べたらDebug.Logの結果をUnity GameObject 3DTextに書き出すとの方法が.
無事デバックの準備が整い、さあ調べたら大変.
ネイティブコードの問題があるようでした.
OVRLipSyncはネイティブコード(OS等に強く依存するコード。C++なのかなんなのかは見てない)でコア部分が書いてある.
C#部はそのラッパーおよびUnity用コード, コード読み解けば分かる.
エラーがあるのはあろうことか、ネイティブコードの初期化部分.
具体的には
OVRLipSync.cs L208あたり
sOVRLipSyncInit = ovrLipSyncDll_Initialize(…
このネイティブ初期化関数が失敗してる.
L290あたり、if(IsInitialized()…)
のなかでエラーコードを無理やりDebug.Logで拾ったところ、-2000: Unknowエラーが…
ネイティブ関数は引数が2つ.
samplingRateとbufferSize.
Unityでの起動時、およびHoloLensでの起動時にこの二つをDebug.Log監視したが、異常なし.
これは…HoloLensでまだ叩けない低レベルAPIをネイティブ内部で叩いてる気しか…
私にはここまでがかけられる労力的限界.
だれか…助けてけろ…