リップシンクをあわせこみたい
- snackvirtual
- 2022年6月30日
- 読了時間: 1分
PhonemeData[] GetPhonemes(string text);
// 指定したセリフの音素単位のデータを取得します。
// 引数:
// text - セリフ。
// 戻り値:
// 音素単位のデータ。
// 備考:
// リップシンク等に利用できます。
これを利用してリップシンクを合わせこみたい
実際には以下のようなデータが取れる(phoneme.Phoneme, phoneme.StartTime)
sil 0
k 0.025
o 0.155
N 0.275
n 0.32
i 0.375
ch 0.455
i 0.54
w 0.6
a 0.64
h 0.75
i 0.84
d 0.89
e 0.95
o 1.035
s 1.15
a 1.21
N 1.33
g 1.39
e 1.455
N 1.575
k 1.635
i 1.71
d 1.76
e 1.785
s 1.87
U 1.98
k 2.005
a 2.095
sil 2.275
つまり発音と開始時間がわかるということだ
やり方としては、
タイマー割込みを30mSごとに変更する
タイマー割込みで時間をカウントし、これがphoneme.StartTimeを越えたら、その言葉に対応するGIFを挿入して再生する
GIFは10枚程度のフレームしか持っていないので、カウントが6枚(180mS)を越えたらA_A/I_I/U_U/E_E/O_Oという同一母音画像(つまり静止画GIF)を180mSおきに追加する
間に句読点などが入って空白ができると不自然になるが、文が単体ならば、結構それらしい感じになってきた
とりあえずここでいったんまとめて、次の活動を考える
Comments