たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

HoloLensでUnityちゃんに歌の口パクしてもらった

HoloLensでキャラクターに口パクさせてみた

歌に合わせた口パクのさせ方

調べる前に私が思っていた素朴なイメージ:
音源に合わせてミクさんの口を引っ張り、パラパラ漫画みたいに編集してく.

技術の進歩は素晴らしいもので…
音源から発音を抜き出す仕組みがあるんです.
そして、発音を基に表情を変える仕組みがあるんです!
つまり、自動で、人と同じように、口パクできるんです!!
技術はすげぇ…

音源に合わせた口パクはLipSync(くちびるの同期)という.
やり方は次のようなものがある。

  • 音楽データから自動lipSync
    • ボーカル音源を基にする
    • フル音源からボーカル部を抽出する
  • 手作業で付加

以下、調べもの中の内容を未整理なので、後でいろいろ整理する.
例の流れ図はそのうち乗せよう

音楽データを基にするには複数の方法がある.

  1. VOCALOID SDK for Unity
  2. OVRLipSync (Unity addon by Oculus)
  3. MMD4Mecanim LipSync Plugin

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をネイティブ内部で叩いてる気しか…

私にはここまでがかけられる労力的限界.
だれか…助けてけろ…