以下、本発明の一実施の形態に係るリップシンクアニメーション作成装置について説明する。後述するように、このリップシンクアニメーション作成装置は、コンピュータハードウェアと、コンピュータハードウェアにより実行されるプログラムと、コンピュータの記憶装置に格納される音響モデルなどのデータとにより実現される。
最初に、以下の説明で使用される用語について説明する。
「視覚素」とは、英語の「viseme」の訳語である。「口形素」とも呼ばれる。視覚素は、音声における音素と同じく、顔の動きの中に存在する基本的な顔(特に口)の形状を表す情報の組のことをいう。
「視覚素ラベル」とは、視覚素を識別するために各視覚素に付与される名称のことをいう。音素における「音素ラベル」と同様に使用される。
「視覚素コーパス」とは、発話しているときの発話者の顔の動きをモーションキャプチャ装置によって収録し、視覚素別に分割して保持したデータベースのことをいう。本実施の形態では、視覚素コーパスは複数の視覚素ユニットを含む。各視覚素ユニットは、顔の特徴点の位置ベクトルの時系列データと、視覚素名と、位置ベクトルの時系列データのうち、各視覚素に対応する部分の時間情報と、各視覚素に対応する部分の音声のパワーとを含んでいる。なお、本実施の形態では、視覚素コーパスに、最初に収録された音声データも付してある。これを「音声−視覚素コーパス」と呼ぶ。
「視覚素データ」とは、入力される音声から得られる、視覚素コーパス中から視覚素を選択するための基準となるデータのことをいう。本実施の形態では、視覚素データは、選択されるべき視覚素の視覚素ラベルと、その継続長と、視覚素に対応する入力音声の平均パワーとを含む。視覚素の継続長も、その視覚素に対応する入力音声の音素の継続長から得られる。
「三つ組視覚素ラベル」とは、ある視覚素の視覚素ラベルと、その視覚素の直前の視覚素の視覚素ラベルと、その視覚素の直後の視覚素の視覚素ラベルとを、時間軸上での順序にしたがって組合せたもののことをいう。本実施の形態では、視覚素コーパス中の各視覚素ユニットには、この三つ組視覚素のラベルが付されている。これらを本明細書では三つ組視覚素ユニットと呼ぶ。
[構成]
以下、本発明の一実施の形態に係るプログラムにより実現されるリップシンクアニメーション作成装置の機能的構成について説明する。図1に、このリップシンクアニメーション作成装置40のブロック図を示す。図1を参照して、リップシンクアニメーション作成装置40は、所定のテキストを発話しているときの発話者50の顔の特徴点の動きをその音声とともに収録し、音声−視覚素コーパスを作成するための収録システム60と、収録システム60により作成された音声−視覚素コーパスを記憶するための音声−視覚素コーパス記憶部62と、入力される音声データ42から、音声データ42と同期して動く、顔の特徴点の動きベクトル列をアニメーションデータとして合成するためのアニメーションデータ合成装置44と、アニメーションデータ合成装置44により合成されたアニメーションデータを記憶するためのアニメーションデータ記憶部46とを含む。
音声−視覚素コーパス記憶部62に記憶される音声−視覚素コーパスは、発話時の発話者50の映像から得られた三つ組視覚素ユニット列を含む。
リップシンクアニメーション作成装置40はさらに、実際のアニメーションの作成時に、アニメーションデータ記憶部46に記憶されたアニメーションデータを読出し、予め準備されたワイヤフレームからなる、アニメーションのキャラクタの顔モデルに対してこのアニメーションデータを適用することにより、入力される音声データ42と同期して動く顔モデルの時系列データを作成し、さらに顔モデルに対し顔のテクスチャを適用してレンダリングをすることによって、所定フレーム/秒のレートで表示されるキャラクタの顔のアニメーションを作成するためのアニメーション作成装置48と、アニメーション作成装置48により作成されたアニメーションを音声データ42とともに記憶するためのアニメーション記憶部98とを含む。
リップシンクアニメーション作成装置40はさらに、アニメーションの表示時に、アニメーション記憶部98に記憶されているアニメーションを読出して所定フレームレートで図示しないフレームメモリに書込むためのアニメーション読出部100と、アニメーション読出部100によりフレームメモリに書込まれたアニメーションをその音声とともに再生し表示するための表示部52とを含む。
図2に、収録システム60の構成を示す。図2を参照して、収録システム60は、発話者50による発話音声と発話時における発話者50の動画像とを収録するための録画・録音システム112と、発話時における発話者50の顔の各部位の位置及びその軌跡を計測するためのモーションキャプチャ(Motion Capture。以下「MoCap」と呼ぶ。)システム114と、録画・録音システム112により収録された音声・動画データ116及びMoCapシステム114により計測されたデータ(以下、このデータを「MoCapデータ」と呼ぶ。)118から、音声のデータ、発話時の発話者の顔の各部位の三次元の動きベクトル、視覚素ラベル、視覚素の継続長、及びその視覚素の発話時の音声の平均パワー等の系列からなるデータセット120を作成し、音声−視覚素コーパス記憶部62に音声−視覚素コーパスとして格納するためのデータセット作成装置122とを含む。なお、発話者の顔の特徴点の三次元データは、後述するように頭部の動きを除去した動きベクトルとなるように加工される。本明細書ではこの処理を正規化処理と呼び、正規化された後の顔の特徴点の三次元動きベクトル系列を顔パラメータと呼ぶ。
録画・録音システム112は、発話者50により発せられた音声を受けて音声信号に変換するためのマイクロホン130A及び130Bと、発話者50の動画像を撮影しその映像信号とマイクロホン130A及び130Bからの音声信号とを同時に記録して音声・動画データ116を生成するためのカムコーダ132とを含む。
カムコーダ132は、MoCapシステム114に対してタイムコード134を供給する機能を持つ。カムコーダ132は、音声信号及び映像信号を所定の形式でデータ化し、さらにタイムコード134と同じタイムコードを付与して図示しない記録媒体に記録する機能を持つ。
本実施の形態に係るMoCapシステム114は、高再帰性光学反射マーカ(以下、単に「マーカ」と呼ぶ。)の反射光を利用して計測対象の位置を計測する光学式のシステムを含む。MoCapシステム114は、発話者50の頭部の予め定める多数の部位にそれぞれ装着されるマーカからの赤外線反射光の映像を、所定の時間間隔のフレームごとに撮影するための複数の赤外線カメラ136A,…,136Fと、赤外線カメラ136A,…,136Fからの映像信号をもとにフレームごとに各マーカの位置を計測し、カムコーダ132からのタイムコード134を付与して出力するためのデータ処理装置138とを含む。
図3に、発話者50の頭部110に装着されるマーカの装着位置の例を模式的に示す。図3を参照して、発話者50の頭部110に近い顔、首、及び耳の多数の箇所160にそれぞれマーカが装着される。マーカの形状は半球状又は球状であり、その表面は光を再帰反射するよう加工されている。マーカの大きさは直径数ミリメートル程度である。音声−視覚素コーパス62を充実したものにするには、複数日にわたり又は複数の発話者50について計測を行なうことが必要となる。そのため、マーカの装着順序を予め定めておき、装着位置として、顔器官の特徴的な位置又は装着済みのマーカとの相対的な関係によって定められる位置を予め定めておく。こうして定められる装着位置を、本明細書では「特徴点」と呼ぶ。
顔の物理的な構造上、発話者50の顔の表面上には、頭自体の動きに追従して移動するが発話者50の表情変化の影響をほとんど受けない箇所がある。例えばこめかみ160A及び160B,鼻の先端160Cがこのような特徴を持つ。本実施の形態では、このような箇所を特徴点として予め定めておく。以下、このような特徴点を不動点と呼ぶ。モーションキャプチャでは、顔の特徴点の三次元的位置が計測されるが、その位置の変動は発話者50の頭部110自体の移動による変動も含む。顔の動きを得るためには、各特徴点の位置データから、頭部の動きを差引く必要がある。この処理を正規化と呼ぶ。その詳細については後述する。不動点は正規化処理で用いられる。正規化処理のためには4点以上の不動点を定めることが望ましい。
再び図2を参照して、データ処理装置138は、各マーカの位置の計測データ(以下、「マーカデータ」と呼ぶ。)をフレームごとにまとめてMoCapデータ118を生成し、データセット作成装置122に出力する。MoCapシステム114には、市販の光学式MoCapシステムを利用できる。市販の光学式MoCapシステムにおける赤外線カメラ及びデータ処理装置の機能及び動作については周知であるので、これらについての詳細な説明はここでは繰返さない。
データセット作成装置122は、音声・動画データ116を取込んで記憶するための音声・動画記憶部140と、音声・動画記憶部140に記憶された音声・動画データ116を読出し、三つ組視覚素データ列124を作成して出力するための三つ組視覚素データ列作成部144と、MoCapデータ118を取込んで記憶するためのMoCapデータ記憶部142と、MoCapデータ記憶部142に記憶されたMoCapデータを読出し、MoCapデータ152を正規化して、顔の各特徴点の顔パラメータの系列126に変換するための正規化処理部146と、三つ組視覚素データ列作成部144からの三つ組視覚素データ列124及び正規化処理部146からの顔パラメータの系列126を、それらのタイムスタンプを利用して同期させて結合することによりデータセット120を生成し、音声−視覚素コーパス記憶部62に音声−視覚素コーパスとして格納させるための結合部148とを含む。
正規化処理部146は、MoCapデータ152の各フレームにおいて、前述の不動点の位置変化が0になるよう、当該フレームの各マーカデータを変換することによって、当該フレームの顔パラメータを生成する機能を持つ。本実施の形態では、この変換にアフィン変換を用いる。
時刻t=0のフレームのMoCapデータ152におけるマーカデータを同次座標系でP=〈Px,Py,Pz,1〉、時刻t≠0におけるマーカデータをP'=〈P'x,P'y,P'z,1〉と表すと、マーカデータPとマーカデータP’との関係は、アフィン行列Mを用いて次の式(1)のように表現される。
顔パラメータの系列126の各フレームにおいて不動点の位置データがすべて同じ値となれば、不動点の位置変化が0になり、それ以外の特徴点の位置を不動点の位置を基準として正規化できる。そこで、本実施の形態では、フレームごとに、t=0のフレームにおける各不動点のマーカデータと、処理対象のフレームにおける当該不動点のマーカデータとから、当該フレームにおけるアフィン行列Mを算出する。このアフィン行列Mを用いて、各マーカデータをアフィン変換する。変換後のマーカデータはそれぞれ、t=0での頭の位置のまま発話を行なった状態での顔の特徴量の位置を表すものとなる。
本実施の形態ではさらに、無表情の発話者の顔の画像から得られた各特徴点のマーカデータを、上記正規化により得られた各特徴点のマーカデータから差し引くことによって、各フレームでの特徴点の位置を動きベクトルで表す。こうすることで、顔モデルのアニメーションを作成する際には次のような処理をすればよいことになる。
図4を参照して、アニメーションキャラクタの顔モデル170が予め準備されているものとする。この顔モデル170に対し、3つの連続するフレーム180、182及び184からなる顔画像のアニメーション172を作成するときには、顔モデル170の各特徴点のマーカデータに、上記した処理で得られた動きベクトルV180,V182及びV184をそれぞれ加算する。この処理により、三つのフレーム180,182及び184の各々における顔モデルの各特徴点の位置が得られる。実際には、顔モデルはワイヤフレームで与えられ、特徴点の位置がワイヤフレームのノードの位置とは必ずしも一致しないので、顔モデル170のノードに、特徴点をマッピングしておく必要がある。顔モデルの変形の詳細については後述する。
図2に示す三つ組視覚素データ列作成部144の詳細について図5を参照して説明する。図5を参照して、三つ組視覚素データ列作成部144は、音声・動画記憶部140から音声・動画データ116を読出し、音声を音響処理のための所定のフレーム長及びフレーム間隔でフレーム化するためのフレーム化処理部200と、フレーム化処理部200により出力される各フレームの音声データから後述するビタビアライメントで使用する特徴量230を抽出するための特徴抽出部201と、発話者50(図1参照)の音声による学習によって得られた統計的音響モデルを記憶するための音響モデル記憶部202と、収録システム60による発話データの収録時の発話テキストを記憶するための発話テキスト記憶部204と、特徴抽出部201により出力される特徴量の系列から、音響モデル記憶部202に記憶された音響モデル及び発話テキスト記憶部204に記憶された発話テキストを用いたビタビアライメントにより、発話テキストに対応する各音素のラベルとその継続長とからなる音素データの系列であって尤度最大となるもの(音素データ列232)を出力するためのビタビアライメント部206と、ビタビアライメント部206により出力された音素データ列232を記憶するための音素データ列記憶部208とを含む。なお、本実施の形態では、音響モデルとしては音響HMMからなるものを用いる。
三つ組視覚素データ列作成部144はさらに、音素ラベルと視覚素ラベルとの間の対応関係を示す音素−視覚素変換テーブルを記憶するための音素−視覚素変換テーブル記憶部210と、音素データ列記憶部208に記憶された音素データ列を読出し、各音素データに含まれる音素ラベルを、音素−視覚素変換テーブル記憶部210に記憶された音素−視覚素変換テーブルを参照して、対応する視覚素ラベルに変換して、視覚素ラベルとその継続長とからなる視覚素データとし、視覚素データ列234を出力するための音素−視覚素変換部212と、音素−視覚素変換部212から出力される視覚素データ列234を記憶するための視覚素データ列記憶部214と、視覚素データ列記憶部214に記憶された視覚素データ列を読出し、各視覚素データに含まれる視覚素ラベルを、その前の視覚素データの視覚素ラベル、処理対象の視覚素データの視覚素ラベル、及びその直後の視覚素データの視覚素ラベルをこの順番で組合せた三つ組視覚素ラベルに変換し、三つ組視覚素データ列236として出力するための視覚素−三つ組視覚素変換部216と、視覚素−三つ組視覚素変換部216により出力される三つ組視覚素データ列236を記憶するための三つ組視覚素データ列記憶部218とを含む。音素−視覚素変換部212は、音素ラベルを視覚素ラベルに変換した結果、同一の視覚素ラベルが連続するときには、それらをまとめて一つの視覚素データとし、その継続長も合計する。音素−視覚素変換部212はさらに、各視覚素データに対応する音声の平均パワーも算出し、視覚素データに韻律的情報として付与する。
図6に、ビタビアライメント部206が行なう処理の概略を示す。本実施の形態では、特徴抽出部201は、音声の各フレームから特徴量230としてMFCC(メル周波数ケプストラム係数)を算出し、ビタビアライメント部206に与える。ビタビアライメント部206は、音響モデル記憶部202に記憶された多数の音素HMMと、発話テキスト記憶部204に記憶された発話テキストとを用い、発話テキストに対応した音素列の分割として最も尤度の高くなるような分割方法にしたがって音声を音素列に分割し、各音素のラベルとその継続長とからなる音素データ列232を出力する。
図7に、視覚素−三つ組視覚素変換部216から出力され、三つ組視覚素データ列記憶部218に記憶される三つ組視覚素データ列236の例を示す。図7に示すように、三つ組視覚素データの各々は、三つ組視覚素ラベルと、ミリ秒単位の継続長と、その継続長全体での音声の平均パワーとを含む。図7において、三つ組視覚素の中央にある記号がその視覚素データ本来の視覚素ラベルである。その左側に記号「−」をはさんで付されているのがその直前の視覚素データの視覚素ラベルであり、右側に記号「+」をはさんで付されているのがその直後の視覚素データの視覚素ラベルである。なお、図中、「sil」は無音状態に対応する視覚素ラベルを示し、「sp」は短いポーズに対応する視覚素ラベルを示し、A,R,Y等はそれぞれ所定の音素に対応する視覚素ラベルを示す。
図8に、図5に示す音素−視覚素変換テーブル記憶部210に記憶された音素−視覚素変換テーブルの一例を示す。音素−視覚素変換テーブルの構成はこれ以外にも種々に考えられる。基本的には、音素ラベルを、その音素を発音しているときの口の形を示す視覚素ラベルに関連付けたものが音素−視覚素変換テーブルである。図8に示すように、本実施の形態では、一つの視覚素ラベルには1以上の音素ラベルが対応付けられている。これは、発音している音が異なっていても、口の形がよく似ている場合があること、そのような場合には、異なる音に対し同じ口の形状でアニメーションを作成しても違和感を与えないこと、に基づく。
なお、図8において「silB」は発話の直前の無音状態を、「silE」は発話の直後の無音状態を、それぞれ表す。
以上から、音声−視覚素コーパス記憶部62に記憶される音声−視覚素コーパスの構成を示すと図9のようになる。図9を参照して、音声−視覚素コーパスは、音声波形データ240と、動きベクトル列242と、三つ組視覚素ユニット列244とを含む。音声波形データ240及び動きベクトル列242にはいずれもタイムコードが付されている。本実施の形態では音声波形データ240は使用しない。
三つ組視覚素ユニット列244中の各ユニットは、ユニットを識別するためのユニットID(識別番号)と、そのユニットの三つ組視覚素ラベルと、そのユニットの視覚素の継続長と、その視覚素に対応する音声の平均パワーと、その視覚素に対応する動きベクトルの、動きベクトル列242における開始位置を示す時間とを含む。本実施の形態では、三つ組視覚素ユニットには動きベクトル列は含まれていないが、開始位置と、継続長とで動きベクトル列242を参照することにより、その視覚素ユニットに属する動きベクトル系列が動きベクトル列242中のどこにあるかを知ることができる。
再び図1を参照して、アニメーションデータ合成装置44は、入力される音声データ42から三つ組視覚素データ列を作成するための、図2に示す三つ組視覚素データ列作成部144と同様の機能を実現する三つ組視覚素データ列作成部80と、三つ組視覚素データ列作成部80により作成された三つ組視覚素データ列に含まれる視覚素データの各々について、入力される音声データ42に同期したアニメーションを作成するために最適と評価される三つ組視覚素ユニットを音声−視覚素コーパス記憶部62の中から選択するための三つ組視覚素ユニット選択部82と、三つ組視覚素ユニット選択部82により選択された三つ組視覚素ユニットに含まれる顔の特徴点の三次元動きベクトルを時間軸に沿って互いに連結することにより、アニメーションデータを作成するための三つ組視覚素ユニット連結部84とを含む。
図10に、三つ組視覚素データ列作成部80の構成の詳細を示す。三つ組視覚素データ列作成部80は、図5に示す三つ組視覚素データ列作成部144と基本的に同じ構成である。
図10を参照して、三つ組視覚素データ列作成部80は、入力される音声データ42を所定フレーム長及び所定フレーム間隔のフレームによってフレーム化するためのフレーム化処理部280と、フレーム化処理部280により出力される音声データの各フレームから、MFCCを特徴量として抽出し、特徴量からなる系列を出力するための特徴量抽出部282と、音声データ42の発話者の音声により学習を行なった音響モデルを記憶するための音響モデル記憶部284と、入力される音声データ42の発話テキストを記憶するための発話テキスト記憶部286と、特徴量抽出部282により抽出された特徴量の系列に対し、音響モデル記憶部284に記憶された音響モデルと、発話テキスト記憶部286に記憶された発話テキストとを用いたビタビアライメントを行ない、発話テキストにしたがった音素の音素ラベル及びその継続長を含む音素データの系列(音素データ列)を出力するためのビタビアライメント部288とを含む。
三つ組視覚素データ列作成部80はさらに、図5に示す音素−視覚素変換テーブル記憶部210に記憶されたものと同一の音素−視覚素変換テーブルを記憶するための音素−視覚素変換テーブル記憶部290と、ビタビアライメント部288により出力される音素データ列に含まれる音素データの各々の音素ラベルを、音素−視覚素変換テーブル記憶部290に記憶された音素−視覚素変換テーブルを参照して対応する視覚素ラベルに変換し、視覚素データ列を出力するための音素−視覚素変換部292と、音素−視覚素変換部292により出力される視覚素データ列を記憶するための視覚素データ列記憶部293と、視覚素データ列記憶部293に記憶された視覚素データ列を読出し、視覚素データの各々に対し、その視覚素ラベルをその前後の視覚素データの視覚素ラベルと順番に結合して得られる三つ組視覚素ラベルに置換することによって、三つ組視覚素データ列を出力するための視覚素−三つ組視覚素変換部294と、視覚素−三つ組視覚素変換部294により出力される三つ組視覚素データ列を記憶するための三つ組視覚素データ列記憶部295とを含む。図1に示す三つ組視覚素ユニット選択部82は、三つ組視覚素データ列記憶部295から三つ組視覚素データ列296を読出すことになる。
図11に、図1に示す三つ組視覚素データ列作成部80から三つ組視覚素ユニット選択部82に渡される三つ組視覚素データ列296の構成を示す。図11を参照して、この三つ組視覚素データ列296に含まれる三つ組視覚素データの各々は、入力される音声データ42中の視覚素データの順序を示すシーケンス番号と、三つ組視覚素ラベルと、視覚素の継続長と、この視覚素データに対応する音声の平均パワーとを含む。
図12に、三つ組視覚素ユニット選択部82より出力される三つ組視覚素データ列300の構成を示す。図12を参照して、この三つ組視覚素データ列300に含まれる三つ組視覚素データは、図11に示す三つ組視覚素データ列と同様の構成を持つが、アニメーションデータを生成するために最適であると三つ組視覚素ユニット選択部82により評価され、音声−視覚素コーパス記憶部62から選択された視覚素ユニットを識別するための選択ユニットIDをさらに含んでいる。この選択ユニットIDは、図9に示す三つ組視覚素ユニット列244の左端の「ユニットID」に相当する。このユニットIDがあれば、音声−視覚素コーパス記憶部62を参照して、三つ組視覚素ユニット列244の中の対応する三つ組視覚素ユニットの「開始時間」及び「継続長」のデータを用いて動きベクトル列242からこのユニットに属する動きベクトル系列を抽出できる。
図13に、コンピュータを三つ組視覚素ユニット選択部82として機能させるためのコンピュータプログラムの制御構造をフローチャート形式で示す。図13を参照して、この機能ブロックでは、ステップ310において、三つ組視覚素データ列作成部80により出力される三つ組視覚素データ列のうち、読出ポインタ位置にある三つ組視覚素データを読む。ステップ312では、読出ポインタ位置が、読込むべき三つ組視覚素データ列の終了位置に達したか否かを判定する。達していれば処理を終了する。終了位置に達していなければステップ314に進む。
ステップ314では、ステップ310で読んだ三つ組視覚素データに含まれる三つ組視覚素ラベルと一致する三つ組視覚素ラベルを持つ視覚素ユニットが音声−視覚素コーパス記憶部62に記憶された音声−視覚素コーパス内に存在しているか否かを判定する。そのような視覚素ユニットが音声−視覚素コーパス内に存在していればステップ318に進み、なければステップ316に進む。
ステップ318では、ステップ314で見つけられた三つ組視覚素ユニットを全て音声−視覚素コーパスから読み出す。この後ステップ320に進む。
一方、ステップ316では、ステップ310で読んだ三つ組視覚素データに含まれる三つ組視覚素ラベルのうち、前半の二つ組視覚素ラベル、又は後半の二つ組視覚素ラベルと一致するような二つ組視覚素ラベルを三つ組視覚素ラベルの前半又は後半に持つ三つ組視覚素ユニットを音声−視覚素コーパスから全て読み出す。この後、ステップ320に進む。
ステップ320では、ステップ316又はステップ318で読み出された三つ組視覚素ユニットの全てについて、以下の式によりコストCを計算する。
ただし、TD及びTPは、ステップ310で読んだ三つ組視覚素データに含まれる視覚素継続時間及び平均パワーであり、UD及びUPは、コスト計算の対象となっている三つ組視覚素ユニットに含まれる視覚素の継続時間及び平均パワーであり、w
TD及びw
TPはそれぞれ継続時間の差及び平均パワーの差に対して割当てられる重みである。重みw
TD及びw
TPは、話者の相違などの条件によって異なるため、主観的テストによって決定する必要があるが、例えばw
TD=w
TPとしてもよい。また、この状態からw
TD及びw
TPの値を少しずつ変えることにより、これらの値の好ましい組合せを徐々に求めるようにしてもよい。
ここで算出するコストCは、処理中の三つ組視覚素データに対する顔の特徴点の動きベクトルを与える三つ組視覚素ユニットとして最適なものを、視覚素に対応する音声の韻律的特徴を用いて評価するための評価関数である。上の式から分かるように、本実施の形態では、コスト関数として、視覚素の継続長(これは視覚素に対応する音声の継続長に等しい。)の差の絶対値と、視覚素に対応する音声の平均パワーの差の絶対値の線形和を用いる。この他にもコスト関数としては種々のものが考えられる。三つ組視覚素データ及び三つ組視覚素ユニットの構成を定める際には、コスト関数としてどのような情報を用いるかを検討し、必要なデータを保存するようにしなければならない。
ステップ322では、ステップ320で計算されたコストの最小値を求め、最小値を与えた三つ組視覚素ユニットを選択する。この三つ組視覚素ユニットが、処理中の三つ組視覚素データに対する最適な動きベクトル列を与えるものとして選択される。この後、制御はステップ310に戻り、次の三つ組視覚素データに対する処理を実行する。
図13に示すフローチャートに対応する制御構造を有するコンピュータプログラムにより、図1に示す三つ組視覚素ユニット選択部82を実現することができる。
次に、図1に示す三つ組視覚素ユニット連結部84の機能について説明する。以上述べたように、図1に示す三つ組視覚素ユニット選択部82により、入力される音声データ42に対応する三つ組視覚素ユニット列が選択される。これら三つ組視覚素ユニット列をそのまま時間軸上で連結すると、ユニットとユニットとの間で各特徴点の位置のずれが生じたり、ユニットとユニットとの間で時間軸上でのギャップ又は重複が生じたりするために、画像が不自然なものになってしまう。三つ組視覚素ユニット連結部84は、そのような特徴点の位置のずれを解消させながら三つ組視覚素ユニットを時間軸上で連結する機能を持つ。
図17に、三つ組視覚素ユニット連結部84による動きベクトルの連結方法を示す。図17(A)を参照して、ある三つ組視覚素ユニットにおけるある特徴点M1の軌跡430と、後続する三つ組視覚素ユニットにおける対応する特徴点M1’の軌跡432とを、その両端で時間Tだけ重複させる。そして、この時間におけるこの特徴点の軌跡を、以下の式に従い平滑化して算出し、なめらかな軌跡440を生成する。
ただし、Mは平滑化後の特徴点の動きベクトル、M
1及びM
1’はそれぞれ平滑化前の、先行及び後続する三つ組視覚素ユニットの特徴点の動きベクトル、tは重複区間Tの先頭からの経過時間を示す。三つ組視覚素ユニット連結部84は、これ以外の区間では、その三つ組視覚素ユニットの動きベクトル列をそのまま出力する。
なお、このような連結を行なうと、各三つ組視覚素ユニットの継続長は実質的にTだけ短縮されることになるので、それを防ぐため、各三つ組視覚素ユニットの一端(例えば後端)をTだけ延長する。図9に示すような音声−視覚素コーパス記憶部62の構造を採用することにより、そのような三つ組視覚素ユニットの延長は簡単に行なえる。
三つ組視覚素ユニット連結部84は、このような連結を、三つ組視覚素ユニット選択部82から出力される三つ組視覚素ユニット列内の連結部の全てについて、全ての特徴点に対して行なう。その結果、所定の周期ごとに、顔の特徴点の全てについての動きベクトルを持ったデータ系列が得られる。このデータを本明細書ではアニメーションデータと呼ぶ。アニメーションデータはアニメーションデータ記憶部46により格納される。
アニメーション作成装置48は、アニメーションデータ記憶部46に記憶されたアニメーションデータと、予め準備された、アニメーションキャラクタの顔モデルとからアニメーションを作成する機能を持つ。
図1を参照して、アニメーション作成装置48は、アニメーションキャラクタの顔モデルを記憶するための顔モデル記憶部90を含む。本実施の形態では、顔モデル記憶部90に記憶された顔モデルは、多数の多角形(ポリゴン)によって、静止状態における所定の顔の形状を表現した形状モデルを利用する。この顔モデルに基づき、アニメーションデータ記憶部46に格納されたアニメーションデータを利用してアニメーションを作成するためには、この顔モデルと、アニメーションデータに対応する特徴点の位置との対応付け(マッピング)を予め行なっておく必要がある。本実施の形態では、顔モデルに手作業でこの特徴点の位置をマッピングするものとし、顔モデル上の特徴点の位置を「仮想マーカ」と呼ぶマーカにより示すものとする。
図14に、顔モデル330及び仮想マーカの一例を示す。図14を参照して、顔モデル330を構成するポリゴンの辺(図14の三角形の辺を構成する黒い線)をエッジ、エッジ同士の交点を顔モデル330におけるノードと呼ぶ。図14には、仮想ノードのマッピング例を、記号○と+マークとを組合せた記号332として示してある。
顔には、目・口・鼻の穴のように顔面を構成しない切れ目がある。一般に、これらの切れ目は、顔モデル330の一部としてはモデリングされない。すなわち、切れ目にはポリゴンを定義しないか、切れ目は、顔モデル330とは別のオブジェクトとして定義される。したがって、切れ目と顔面との間は境界エッジで仕切られる。境界エッジとは、二つのポリゴンによって共有されていないようなエッジのことを言う。
再び図1を参照して、アニメーション作成装置48はさらに、アニメーションデータ記憶部46に格納されたアニメーションデータのうち、アニメーションの各フレームに相当する時刻のデータを読出し、顔モデル記憶部90に格納された顔モデルを、読出されたアニメーションデータ内の動きベクトルにしたがって変形させて出力するための顔モデル変形部92と、顔モデルに対するレンダリングによりキャラクタのアニメーションを作成するための、顔のテクスチャデータ、照明位置、カメラ位置などの設定を記憶するためのレンダリングデータ記憶部94と、顔モデル変形部92により出力される各フレームの顔モデルに対し、レンダリングデータ記憶部94に記憶されたレンダリングのためのデータを用いてレンダリングを行ない、アニメーションのフレームごとに出力しアニメーション記憶部98に記憶させるためのレンダリング部96とを含む。
顔モデル330により表現される顔の形状は、アニメーションのキャラクタの顔の基本形状を示すものであり、ユーザにより創作される任意のものでよい。ただし、前述したとおり、動きベクトルを用いて顔モデル330に表情を付与するには、顔モデル330により表現される形状のどの部分が特徴点に対応しているかを定義する必要がある。仮想マーカ332によってそうした対応が示される。図1に示す顔モデル記憶部90には、顔モデルの各ノードの3次元位置データだけでなく、各仮想マーカの位置と、それら仮想マーカと特徴点との対応関係も記憶されている。
顔モデル変形部92は、以下のようにして顔モデル記憶部90に記憶された顔モデルの変形を行なう。基本的には顔モデル変形部92は、読み出したアニメーションデータごとに、顔モデルを構成する全てのノードに対して以下の処理(マーカラベリング処理と呼ぶ。)を行なう。すなわち、顔モデル変形部92は、顔モデルのノードの各々に対し、そのノードからの距離が最も近い仮想マーカを、仮想マーカの座標に基づき選択する。顔モデル変形部92は、選択された仮想マーカが、処理中のノードに対応付ける仮想マーカとして適切か否かを判定する。適切であれば選択マーカをこのノードに対応するマーカとして採用し、不適切であれば棄却する。このような処理を繰返し、顔モデルの一つのノードに対し所定数n(例えばn=3)の仮想マーカを採用する。本明細書では、あるノードに対し採用された仮想マーカを、当該ノードの「対応マーカ」と呼ぶ。
なお、本実施の形態では、選択マーカの対応マーカとしての適/不適を判断する際の基準に、顔モデルの境界エッジを利用する。
このマーカラベリング処理により、顔モデルの各ノードに対応マーカが関係付けられると、アニメーションデータから得られる、対応マーカに対応する特徴点の動きベクトルの値の内挿により、そのノードの三次元位置座標が計算される。この計算方法については後述する。
図15に、顔モデル変形部92により実行されるマーカラベリング処理のプログラムの制御構造をフローチャートで示す。図15を参照して、マーカラベリング処理では、ステップ340Aとステップ340Bとで囲まれた、ステップ342からステップ354までの処理を、顔モデル330の各ノードに対して実行する。
ステップ342では、処理対象のノードから仮想マーカまでの距離をそれぞれ算出する。さらに仮想マーカをこの距離の昇順でソートしたものをリストにする。
ステップ344では、以下の繰返しを制御するための変数i及び対応マーカとして採用したマーカの数を表す変数jに0を代入する。ステップ346では、変数iに1を加算する。
ステップ347では、変数iの値が仮想マーカの数Mmaxを超えているか否かを判定する。変数iの値が仮想マーカの数Mmaxを超えていればエラーとし、処理を終了する。これは、全ての仮想マーカを調べても、対応マーカとして採用されたものが3つに満たなかった場合に生ずる。普通このようなことはないが、念のためにこのようなエラー処理を設けておく。変数iの値が仮想マーカの数Mmax以下であれば制御はステップ348に進む。
ステップ348では、リストの先頭から変数iで示される位置に存在する仮想マーカ(以下これを「マーカ(i)」と呼ぶ。)と処理対象のノードとを結ぶ線分が、顔モデル330におけるいずれの境界エッジも横切らない、という制約条件を充足しているか否かを判定する。当該線分が境界エッジのいずれかを横切るものであれば、ステップ344に戻る。さもなければステップ350に進む。
ステップ350では、この時点でのマーカ(i)を処理対象のノードの対応マーカの一つに指定する。そしてマーカ(i)を示す情報を、処理対象のノードのマーカ・ノード対応情報として保存する。この後制御はステップ352に進む。ステップ352では、変数jに1を加算する。ステップ354では、変数jの値が3となっているか否かを判定する。変数jの値が3であればステップ340Bに進む。さもなければステップ344に進む。
上記したように、処理対象のノードと仮想マーカとを結ぶ線分が顔モデルの境界エッジを横切るものは、処理対象のノードに対応する仮想マーカから除外される。これは以下の理由による。例えば上唇と下唇とのように、間に境界エッジが存在する場合を考える。この場合、実際の顔では、上唇に位置するノードと、下唇に位置するノードとに相当する位置は互いに異なる動きをする。したがって、例えば上唇のノードの移動量を算出する際に、下唇に存在するマーカの移動量を用いることは適当ではない。線分がある境界エッジを横切っているか否かは、例えば、その境界エッジが顔モデルを構成するポリゴンのうち二つによって共有されているか、一つのみに属しているかによって判定する。
図16に、顔モデル330における唇周辺のポリゴンと仮想マーカとを示す。以下、図16を参照して、あるノードの対応マーカを特定する方法について具体例を用いて説明する。図16を参照して、顔モデル330(図14参照)の唇周辺には、多数の三角形ポリゴンが存在する。各ポリゴンは、三つのエッジに囲まれている。上唇と下唇の間には境界エッジ400が存在する。境界エッジ400は、顔モデル330と切れ目との境界、又は顔モデル330の外縁にあたる。そのため、境界エッジ以外のエッジは二つのポリゴンに共有されるが、境界エッジ400に該当するエッジは共有されない。
既に説明したように、顔モデル変形部92は、顔モデル330を構成するノードの中から処理対象のノードを一つ選択する。図16において、ノード410が処理対象のノードとして選択されたものとする。ノード410の近隣には、仮想マーカ412A,…,412Eが存在するものとする。顔モデル変形部92は、ノード410の座標と、仮想マーカ仮想マーカ412A,…,412Eの座標とをもとに、ノード410と仮想マーカとの間の距離をそれぞれ算出する。そして、仮想マーカの中から、ノード410に最も近い位置にある仮想マーカ412Aを選択する。
続いて、顔モデル変形部92は、ノード410と仮想マーカ412A,…,412Eとを結ぶ線分414A,…,414Eが境界エッジ400を横切るか否かを検査する。すなわち、まずノード410と仮想マーカ412Aとを結ぶ線分414Aが境界エッジ400を横切るか否かを検査する。図16に示す例では、この線分414Aは、境界エッジ400を横切らない。そのため顔モデル変形部92は、仮想マーカ412Aをノード410の対応マーカの一つとする。そして、仮想マーカの中から、仮想マーカ412Aの次にノード410に近い位置にある仮想マーカ412Bを選択し検査を行なう。ノード410と仮想マーカ412Bとを結ぶ線分414Bは、境界エッジ400を横切っている。そのため、仮想マーカ412Bはノード410の対応マーカからは除外される。
顔モデル変形部92は、以上のような動作を所定数(3個)の対応マーカが選択されるまで繰返し、ノード410の対応マーカ(図16に示す例では仮想マーカ412A、412D、及び412E)を選択する。
再び図14を参照して、顔モデル変形部92は、顔モデル記憶部90に記憶された、特徴点と仮想マーカとの対応関係に基づき、あるフレームの三つ組視覚素ユニットにおける各特徴点の動きベクトルをそれぞれ対応の仮想マーカ332に付与する。さらに顔モデル変形部92は、顔モデル330の各ノードに、対応する仮想マーカ332の動きベクトルにより示される変化量から所定の内挿式により算出される変化量ベクトルvを割当てることにより、顔モデル330の変形を行なう。顔モデル変形部92は、変形後の顔モデル330を、そのフレームにおける形状モデルとして出力する。
基本となる顔モデル330のうちの、あるノードの座標ベクトルをN、基本となる顔モデル330において、当該ノードと対応関係にあるi番目の仮想マーカの座標をMi(1≦i≦3)、変形後の顔モデルにおける対応するマーカの座標をM'iとすると、顔モデル変形部92は、このノードの座標の変化量ベクトルvを次の内挿式によって算出する。なお、M'i−Miが特徴点の動きベクトルに相当する。
レンダリング部96は、ポリゴンにより表された形状モデルに対するレンダリングを行なうことができるものであればよく、市販のレンダリングエンジンを用いることもできる。アニメーションのフレームレートにしたがい、1フレームごとの顔モデルを上記式にしたがって生成し、レンダリングを行なうことにより、このレンダリングによりえられた画像のシーケンスとしてアニメーションが得られる。アニメーションはアニメーション記憶部98に記憶される。
アニメーション読出部100は、アニメーション記憶部98から1フレームごとにアニメーションを読出して画像化し、フレーム間隔ごとに表示部52のフレームメモリに書き込む機能を持つ。
[動作]
本実施の形態に係る顔アニメーションの作成システム40は以下のように動作する。リップシンクアニメーション作成装置40の動作は大きく四つのフェーズに分けることができる。第1のフェーズは音声−視覚素コーパス記憶部62を作成するフェーズである。第2のフェーズは音声−視覚素コーパス記憶部62を用いて入力される音声データ42からアニメーションデータ記憶部46を作成するフェーズである。第3のフェーズは、顔モデルを用い、アニメーションデータ記憶部46からアニメーションを作成しアニメーション記憶部98に格納するフェーズである。最後のフェーズは、アニメーション記憶部98に記憶されたアニメーションを表示部52に表示するフェーズである。以下、各フェーズにおけるリップシンクアニメーション作成装置40の動作について説明する。
〈第1のフェーズ:音声−視覚素コーパス記憶部62の作成〉
以下に、収録システム60が収録を行ない、音声−視覚素コーパス記憶部62を生成する動作について説明する。図2及び図3を参照して、発話者50の頭部110の各特徴点160には、マーカを予め装着しておく。その状態で、発話者は発話を行なう。音声・視覚素コーパスを充実したものにするために、又は、各音素がバランスよく含まれるようにするために、発話の内容を事前に決めておき、発話者50にその内容で発話を行なってもらう。この発話の内容は、図5に示す発話テキスト記憶部204に記憶される。
収録が開始され、発話者50が発話すると、録画・録音システム112が、発話時の音声と顔の動画像を収録し、音声・動画データ116を生成する。音声・動画データ116は音声・動画記憶部140に記憶される。この際、カムコーダ132は、MoCapシステム114に対してタイムコード134を供給するとともに、音声・動画データ116に、タイムコード134と同じタイムコードを付与する。
同時に、発話時における特徴点160の位置が、MoCapシステム114により次のようにして三次元データとして計測される。マーカはそれぞれ、対応する特徴点の動きに追従して移動する。赤外線カメラ136A,…,136Fはそれぞれ、マーカによる赤外線反射光を、所定のフレームレート(例えば毎秒120フレーム)で撮影しその映像信号をデータ処理装置138に出力する。データ処理装置138は、それらの映像信号の各フレームにタイムコード134を付与し、当該映像信号をもとに、各マーカの三次元座標をフレームごとに算出する。データ処理装置138は、各マーカの三次元座標をフレームごとにまとめてMoCapデータ118として蓄積する。
以上の収録プロセスにより収録された音声・動画データ116及びMoCapデータ118は、データセット作成装置122に与えられる。データセット作成装置122は、音声・動画データ116を音声・動画記憶部140に蓄積し、MoCapデータ118を、MoCapデータ記憶部142に蓄積する。
正規化処理部146は、MoCapデータ記憶部142から、t=0のフレームにおけるMoCapデータを読出す。このときの不動点のMoCapデータが後の正規化処理の基準となる。正規化処理部146はさらに、各フレームでの各特徴点の座標を、不動点として指定された複数の特徴点の三次元座標を用いて以下の様に正規化する。
すなわち、正規化処理部146は、MoCapデータ152の各フレームにおいて、当該フレームの不動点の三次元座標と、t=0のフレームにおける不動点の三次元座標とから、前述の式(1)のアフィン行列を求め、当該アフィン行列を用いて、各特徴点の三次元座標をアフィン変換する。この変換により、変換後の特徴点の三次元座標はそれぞれ、t=0での位置に頭を固定して発話を行なった状態での顔の特徴点の位置を表すものとなる。すなわち、各特徴点の三次元座標が正規化される。これら座標から、t=0のときの各特徴点の座標から減算することで、その特徴点のその時点での動きベクトルが得られる。その結果、MoCapデータ152から顔パラメータの系列126が得られる。顔パラメータの系列126は、結合部148に与えられる。
図5を参照して、三つ組視覚素データ列作成部144のフレーム化処理部200は、音声・動画記憶部140に記憶された音声・動画データ116の音声データを所定フレーム長及び所定フレーム間隔でフレーム化し、特徴抽出部201に与える。
特徴抽出部201は、フレーム化処理部200から与えられた各フレームから、ビタビアライメント部206の処理で使用される音響特徴量(MFCC)を算出し、特徴量230としてビタビアライメント部206に与える。このとき、各フレームの音声データもビタビアライメント部206に与えられる。
ビタビアライメント部206は、音響モデル記憶部202に記憶された音響モデルと、発話テキスト記憶部204に記憶された発話テキストとを用いて、特徴量230の系列に対するビタビアライメントを行ない、アライメントの結果得られた音素のラベル(音素ラベル)列を、各音素の継続長とともに音素データ列232として音素データ列記憶部208に格納させる。このとき、音素データ列232には各フレームの音声データも付される。
音素−視覚素変換部212は、音素データ列記憶部208から音素データを順次読み出し、各音素データに含まれる音素ラベルを、音素−視覚素変換テーブル記憶部210に記憶された音素−視覚素変換テーブルを参照して視覚素ラベルに変換する。音素ラベルにかえて視覚素ラベルを格納した音素データは視覚素データを構成する。音素−視覚素変換部212はこのとき、同一の視覚素ラベルが連続しているときにはそれらを一つの視覚素データにまとめ、その継続長も合計する。さらに音声の平均パワーを算出し、各視覚素データに付与する。音素−視覚素変換部212は、こうして得られた視覚素データ列234を、フレーム化された音声データとともに視覚素データ列記憶部214に格納させる。
視覚素−三つ組視覚素変換部216は、視覚素データ列記憶部214から視覚素データを順次読出し、以下のような処理を行なう。すなわち、視覚素−三つ組視覚素変換部216は、各視覚素データの視覚素ラベルを、その直前の視覚素データに含まれる視覚素ラベルと、当該視覚素データの視覚素ラベルと、その直後の視覚素ラベルとをこの順で結合した三つ組視覚素ラベルに変換する。このようにして視覚素ラベルに代えて三つ組視覚素ラベルを格納した視覚素データは、三つ組視覚素データとなる。視覚素−三つ組視覚素変換部216は、こうして得られた三つ組視覚素データ列236を三つ組視覚素データ列記憶部218に音声データとともに格納させる。
結合部148は、三つ組視覚素データ列記憶部218に記憶された三つ組視覚素データ列と、正規化処理部146から与えられる顔パラメータの系列126とをそれらに付されている時間情報を用いて同期させて結合して、音声データ42とともに音声−視覚素コーパスを生成し、音声−視覚素コーパス記憶部62に格納する。
〈第2のフェーズ:アニメーションデータ記憶部46の合成〉
第2のフェーズはアニメーションデータ合成装置44による。キャラクタの声を表す音声データ42が準備され、三つ組視覚素データ列作成部80に与えられる。この音声データ42は、事前に、キャラクタの声を担当する発話者(又は声優)によって発話されたものを録音することにより得られる。音声データ42の発話テキストは図10に示す発話テキスト記憶部286に格納される。
図10を参照して、フレーム化処理部280は、入力される音声データ42を図5に示すフレーム化処理部200と同一のフレーム長及びフレーム間隔でフレーム化し、特徴量抽出部282に与える。
特徴量抽出部282は、図5に示す特徴抽出部201と同様の処理により、音声の各フレームごとに、所定の音響特徴量(MFCC)を抽出し、ビタビアライメント部288に与える。
ビタビアライメント部288は、音響モデル記憶部284及び発話テキスト記憶部286を用いて特徴量抽出部282に対するビタビアライメントを行なって、音素ラベル及び各音素の継続長を含む音素データからなる音素データ列を音素−視覚素変換部292に与える。
音素−視覚素変換部292は、この音素データ列に含まれる各音素データに対し、その中の音素ラベルを、音素−視覚素変換テーブル記憶部290に格納された音素−視覚素変換テーブルを参照して視覚素ラベルに変換する。音素ラベルに代えて視覚素ラベルを格納した音素データは視覚素データとなり、視覚素データ列として音素−視覚素変換部292から出力され視覚素データ列記憶部293に記憶される。各視覚素データは、視覚素ラベルと、元の音素の継続長とを含む。同一の視覚素ラベルが連続する場合、それらはまとめられ、継続長も合計される。また、視覚素データごとに、対応する音声の平均パワーが算出される。
視覚素−三つ組視覚素変換部294は、視覚素データ列記憶部293に記憶された各視覚素データを順番に読出し、各視覚素データに含まれる視覚素ラベルを、その直前及び直後の視覚素データの視覚素ラベルと結合することにより得られる三つ組視覚素ラベルで、視覚素データの視覚素ラベルを置換し、三つ組視覚素データ列として三つ組視覚素データ列記憶部295に記憶させる。
図1を参照して、三つ組視覚素ユニット選択部82は、図10に示す三つ組視覚素データ列記憶部295から三つ組視覚素データ列296を読出し、以下の処理を行なう。すなわち、三つ組視覚素ユニット選択部82は、三つ組視覚素データ列296に含まれる三つ組視覚素データごとに、音声−視覚素コーパス記憶部62に含まれる、同一の三つ組視覚素ラベルを持つ三つ組視覚素ユニットを探す(図13のステップ314)。そのようなユニットがあればそれら全てとの間で、その三つ組視覚素データに含まれる視覚素継続長及び平均パワーを用い、先に示した式(2)によってコスト計算を行なう(図13のステップ318)。そのようなユニットがなければ、三つ組視覚素ラベルのうちで前半の二つ組視覚素ラベル、又は後半の二つ組視覚素ラベルが一致する三つ組視覚素ユニットを音声−視覚素コーパス記憶部62から読出し、それら全てとの間で、その三つ組視覚素データに含まれる視覚素の継続長及び平均パワーを用い、先に示した式(2)によってコスト計算を行なう(図13のステップ316)。
そして、このようにして計算されたコストの最小値を与える三つ組視覚素ユニットを処理対象の三つ組視覚素データに対する最適な三つ組視覚素ユニットとして選ぶ(図13のステップ322)。
三つ組視覚素ユニット選択部82はこのようにして得られた三つ組視覚素ユニットからなる三つ組視覚素ユニット列を三つ組視覚素ユニット連結部84に与える。
三つ組視覚素ユニット連結部84は、三つ組視覚素ユニット選択部82から与えられた三つ組視覚素ユニット列中の各三つ組視覚素ユニットについて、その動きベクトル列を、先行する三つ組視覚素ユニットの動きベクトル列、及び後続する三つ組視覚素ユニットの動きベクトル列と時間軸上で連結する。なお、このとき、図17を参照して説明したように、各ユニットの動きベクトル列の最後部を時間Tだけ延長し、後続するユニットの動きベクトル列の先頭の時間Tの部分との間で、各特徴点ごとに上記した式(3)による平滑化処理を行なう。
以上の処理により、アニメーションデータが作成される。作成されたアニメーションデータはアニメーションデータ記憶部46に格納される。
〈第3のフェーズ:モデルを用いたアニメーションの作成〉
アニメーションの作成は、図1に示すアニメーション作成装置48により行なわれる。図1を参照して、顔モデル変形部92は、顔モデル記憶部90に記憶された顔モデルを読み出す。この顔モデルについては、音声−視覚素コーパス記憶部62を作成したときの特徴点と仮想マーカとの対応付けが既に行なわれており、さらに顔モデルを構成する各ノードに対応する仮想マーカも既に定められているものとする。
顔モデル変形部92は、アニメーションデータ記憶部46に記憶されているアニメーションデータのうちから、アニメーションのフレームレートにしたがった時間に最も近い時刻を持つフレームのアニメーションデータを順番に読出し、各フレームについて以下の処理を行なう。
顔モデル変形部92は、顔モデルの各仮想マーカに、読出されたアニメーションデータ内に含まれる対応する特徴点の三次元の動きベクトルを割り当てる。顔モデル変形部92はさらに、式(4)にしたがい、顔モデル記憶部90の各ノードの三次元位置座標を与える変化量ベクトルvを算出する。変化量ベクトルを全てのノードに対し算出することにより、そのフレームにおける顔モデルが完成する。この顔モデルはレンダリング部96に与えられる。
レンダリング部96は、顔モデル変形部92から与えられた顔モデルに対し、レンダリングデータ記憶部94に記憶されたレンダリングデータ及び設定にしたがったレンダリングを行なってアニメーションの一フレームに相当する画像を作成し、アニメーション記憶部98に格納させる。
顔モデル変形部92及びレンダリング部96の以上の動作を繰返し、アニメーションデータ記憶部46に記憶されたアニメーションデータの末尾まで到達したところでアニメーション作成装置48は処理を終了させる。
以上の処理により、アニメーション記憶部98には、入力される音声データ42に対応した顔アニメーションを表す、所定のフレームレートでの一連の顔画像が記憶されていることになる。
〈第4のフェーズ:アニメーションの表示〉
アニメーションの表示はアニメーション読出部100及び表示部52により行なわれる。表示処理では、アニメーション読出部100がアニメーション記憶部98に格納された画像を先頭から順次読出し、規定の時間間隔で、表示部52内の図示されないフレームメモリに書込む。表示部52はこのフレームメモリに書き込まれた画像を所定時間間隔で読出し、画面に表示する。その結果、表示部52の画面上には、入力される音声データ42に対応して変化する、顔モデル記憶部90に記憶されたアニメーションキャラクタの顔モデルにより規定された顔のアニメーションが表示される。
以上のように、本実施の形態に係るリップシンクアニメーション作成装置40によれば、発話者の顔の多数の特徴点と、顔モデル170の各ノードとを予め対応付ける。さらに、発話時の音声から得た音素ラベルを、対応する視覚素ラベルに変換し、さらに三つ組視覚素ラベルに変換して、その継続長、その継続長中の音声の平均パワー、及びモーションキャプチャにより得た発話時の顔の特徴点の三次元動きベクトル列と組合せて、三つ組視覚素ユニットとして音声−視覚素コーパス記憶部62に記憶させることで、音声−視覚素コーパスを作成しておく。
音声データ42が与えられると、音声データ42から得た音素ラベル、音素の継続長、及び平均パワーからなる音素データ列を作成し、さらに各音素ラベルを音声−視覚素コーパスの作成時と同様の方法により三つ組視覚素ラベルに変換して三つ組視覚素データ列を得る。各三つ組視覚素ラベルの継続長及びその音声の平均パワーをもとに、所定のコストの評価関数を用い、コストが最小となる三つ組視覚素ユニットを音声−視覚素コーパス記憶部62から選択し、三つ組視覚素ユニット連結部84によってそれらの動きベクトル列を連結する。この連結の際に、隣接する三つ組視覚素ユニットの動きベクトル列のうち、先行する三つ組視覚素ユニットの動きベクトル列を延長し、この部分で後続する三つ組視覚素ユニットの動きベクトルとの間で平滑化処理を行なう。
こうした処理により、顔モデル170の各ノードの軌跡を表す動きベクトルが、音声−視覚素コーパス記憶部62に格納された実際の発話時の顔の特徴点の動きベクトルに基づいて算出される。したがって、ノードの集合としての顔モデルの時間的変化が、実際の動きに近い自然な動きを表すアニメーションデータとして得られる。アニメーションデータを構成する各特徴点の動きベクトルと、顔モデル170の各ノードとの対応関係とに基づいて顔モデル170の各ノードの動きベクトルを算出することで、フレームごとに各ノードの集合としての顔モデルを作成することができ、変形された顔モデルの系列が得られる。これら顔モデルに対するレンダリングを行なうことで、アニメーションを作成できる。
アニメーションデータ記憶部46に記憶された顔パラメータの系列126は、音声データ42により表される音声が発話されるときの顔の各特徴点の非線形的な軌跡を、実際にモーションキャプチャにより得られた測定データに基づいて表現する。したがって、発話中の表情の非線形的な変化を忠実に再現した、自然なアニメーションを作成することができる。
リップシンクアニメーション作成装置40は、モデルベースでアニメーションを作成する。ユーザは、音声−視覚素コーパス記憶部62が作成された後は、キャラクタの声に相当する音声データ42と、静止状態でのキャラクタの顔の形状を定義した顔モデルと、音声データ42に対するビタビアライメントを行なうための音響モデルと、音声データ42に対応する発話テキストとを用意し、顔モデル上に、特徴点に対応する仮想マーカを指定するだけで、キャラクタの声に合せて表情の変化する、自然なリップシンクアニメーションを作成できる。キャラクタの顔のデザインが制限されることなく、顔モデル44が表すキャラクタの顔の形状は任意のものでよい。そのため、ユーザによるアニメーション制作のバリエーションを狭めることなく、リップシンクアニメーションを作成できる。
なお、上記した実施の形態では、リップシンクアニメーション作成装置40は収録システム60、アニメーションデータ合成装置44、アニメーション作成装置48、及びアニメーション読出部100の全てを含んでいる。しかし本発明はそのような実施の形態には限定されない。これらが全て別々の装置、又はプログラムにより実現されてもよい。また、これらが物理的に同じコンピュータ上で実現される必要もないし、例えばアニメーションデータ合成装置44を構成する各部が単一のコンピュータ上で実現される必要もない。これらを別々のコンピュータ上で動作するプログラムにより実現し、それらの間のデータの移動を、ネットワーク経由又はリムーバブル記録媒体を介して実現するようにしてもよい。
[コンピュータによる実現及び動作]
本実施の形態のリップシンクアニメーション作成装置40の各機能部は、収録システム60(図1及び図2参照)の録画・録音システム112及びMoCapシステム114に含まれる一部の特殊な機器を除き、いずれもコンピュータハードウェアと、そのコンピュータハードウェアにより実行されるプログラムと、コンピュータハードウェアに格納されるデータとにより実現される。図18はこのコンピュータシステム450の外観を示し、図19はコンピュータシステム450の内部構成を示す。
図18を参照して、このコンピュータシステム450は、DVD(Digital Versatile Disk)ドライブ472及びリムーバブルなメモリを装着可能なメモリポート470を有するコンピュータ460と、キーボード466と、マウス468と、モニタ462と、マイクロフォン490と、一対のスピーカ458とを含む。マイクロフォン490は、このコンピュータシステム450において音声データ42(図1参照)を収録する際に使用される。スピーカ458はアニメーションを表示する際の音声の再生に用いられる。
図19を参照して、コンピュータ460は、メモリポート472及びDVDドライブ470に加えて、ハードディスク474と、CPU(中央処理装置)476と、CPU476、ハードディスク474、メモリポート472、及びDVDドライブ470に接続されたバス486と、ブートアッププログラム等を記憶する読出専用メモリ(ROM)478と、バス486に接続され、プログラム命令、システムプログラム、及び作業データ等を記憶するランダムアクセスメモリ(RAM)480と、バス486に接続され、マイクロフォン490からの音声信号をデジタル信号化したり、CPU476より出力されるデジタル音声信号をアナログ化してスピーカ458を駆動したりするためのサウンドボード488とを含む。コンピュータシステム450はさらに、プリンタを含んでいてもよい。
コンピュータ460はさらに、ローカルエリアネットワーク(LAN)452への接続を提供するネットワークインターフェイス(I/F)496を含む。
コンピュータシステム450にリップシンクアニメーション作成装置40の各機能部を実現させるためのコンピュータプログラムは、DVDドライブ470又はメモリポート472に挿入されるDVD482又はメモリ484に記憶され、さらにハードディスク474に転送される。又は、プログラムは図示しないネットワークを通じてコンピュータ460に送信されハードディスク474に記憶されてもよい。プログラムは実行の際にRAM480にロードされる。DVD482から、メモリ484から、又はネットワークを介して、直接にRAM480にプログラムをロードしてもよい。
このプログラムは、コンピュータ460にこの実施の形態のリップシンクアニメーション作成装置40の各機能部を実現させるための複数の命令を含む。この機能を実現させるのに必要な基本的機能のいくつかは、コンピュータ460にインストールされる各種ツールキットのモジュール、又はコンピュータ460上で動作するオペレーティングシステム(OS)若しくはサードパーティのプログラムにより提供される。したがって、このプログラムはこの実施の形態のシステム及び方法を実現するのに必要な機能全てを必ずしも含まなくてよい。このプログラムは、命令のうち、所望の結果が得られるように制御されたやり方で適切な機能又は「ツール」を呼出すことにより、上記した顔アニメーションの作成システム40の各機能部が行なう処理を実行する命令のみを含んでいればよい。コンピュータシステム450の動作は周知であるので、ここでは繰返さない。
[様々な変形例]
なお、上記した実施の形態では、視覚素コーパス及び視覚素データの視覚素ラベルとして、三つ組視覚素ラベルを用いている。こうすることにより、ある視覚素に対応する発話の前後の発話における顔の動きまで反映した形で、適切な視覚素ユニットを選択できる。しかし本発明はそのような実施の形態には限定されない。例えば視覚素ラベルとして一つだけを使用してもよい。この場合、得られる視覚素ユニットの不連続部分が大きくなる可能性があるが、上記した加重加算処理によって滑らかに連結することができる。
また、上記した実施の形態では、三つ組視覚素ラベルとして、ある視覚素を中心に、その前後の視覚素ラベルを一つずつ採用し、中央の視覚素ラベルと組合せたものを用いた。しかし本発明はそのような実施の形態には限定されない。例えば、ある視覚素の前又は後の視覚素の視覚素ラベルと、対象の視覚素の視覚素ラベルとからなる、二つ組視覚素ラベルを用いてもよい。また、四つ以上の視覚素ラベルからなるものを採用してもよい。四つ以上の視覚素ラベルの組を採用した場合には、適切な視覚素ラベルの組を持つ視覚素ユニットが視覚素コーパスで見つからない可能性が高くなる。そうした場合、視覚素コーパスをより大きくしてもよいし、上記した実施の形態におけるように、それより少ない数の視覚素ラベルの組を用いて代替的な視覚素ユニットを探すようにしてもよい。
また、上記した実施の形態では、視覚素ユニットの連結の際に、先行する視覚素ユニットの動きベクトルのみを時間Tだけ拡張している。しかし本発明はそのような実施の形態には限定されない。例えば、どの視覚素ユニットも、その前後にT/2だけ動きベクトルを拡張するようにしてもよい。また、拡張する時間についても主観的テストによって適切と思われる値に設定すればよい。
上記した実施の形態では、どの視覚素ユニットを選択すべきかを決定するために、視覚素に対応する音素の発話継続長と、その間の音声の平均パワーとを用いている。しかし本発明はそのような実施の形態には限定されない。これら以外の韻律的特徴、例えば音の高さ(基本周波数)を用いてもよいし、これらの任意の組合せを用いてもよい。顔画像が時間とともに変化するというアニメーションの特性上、発話継続長については評価の対象として採用することが望ましいが、発話継続長以外の韻律的特徴を用いて視覚素ユニットを選択したのち、発話継続長を視覚素データの継続長にあわせて調整するようにしてもよい。
また、上記した実施の形態では、式(2)によって、韻律的に似た特徴を持つ三つ組視覚素ユニットを探し、そうしたユニットがアニメーション合成の上で適したものとして取り扱っている。しかし、使用できる式は式(2)に限らない。韻律的特徴の差の二乗和を式(2)に代えて用いてもよいし、それ以外の式で、視覚素ユニットと視覚素データとの韻律的な特徴の相違を的確に表すものがあればそうしたものを用いてもよい。
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味および範囲内でのすべての変更を含む。