top of page

リップシンクをあわせこみたい

  • 執筆者の写真: snackvirtual
    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

つまり発音と開始時間がわかるということだ

やり方としては、

  1. タイマー割込みを30mSごとに変更する

  2. タイマー割込みで時間をカウントし、これがphoneme.StartTimeを越えたら、その言葉に対応するGIFを挿入して再生する

  3. GIFは10枚程度のフレームしか持っていないので、カウントが6枚(180mS)を越えたらA_A/I_I/U_U/E_E/O_Oという同一母音画像(つまり静止画GIF)を180mSおきに追加する

間に句読点などが入って空白ができると不自然になるが、文が単体ならば、結構それらしい感じになってきた


とりあえずここでいったんまとめて、次の活動を考える


 
 
 

Comments


bottom of page