😺

AIアバター with Emotion + LipSync + VOICEVOX

2023/06/14に公開

何番煎じかわかりませんが、作ってたので記録。

結果

修正:gpt-3.5-turbo-0613がでたので対応してみる

アバター with LipSync

以下を参照

https://qiita.com/megumu-u/items/2202cbc4b3be2dd65250

ChatGPT and VOICEVOX

以下のUnity版

https://zenn.dev/megyo9/articles/82dee0167ab612

Emotion

2並列で ChatGPT に投げます
system の prompt が違うだけで、user/assistant の会話履歴は同じものを投げます

1個目:普通に会話するスレッド
2個目:感情を JSON で返してという system の prompt

2個目の方は具体的な以下のような構造の JSON を返すようにお願いします

{
  fun: 0.4,
  angry: 0,
  sad: 0,
  surprised: 0,
  angry: 0
}

そして、これらのパラメータをそのまま VRM の Expression に適用させます

var obj = GameObject.FindGameObjectWithTag("woman");
if (gpt3Result?.Fun >= 0)
{
    obj?.GetComponent<Vrm10Instance>().Runtime.Expression.SetWeight(ExpressionKey.CreateFromPreset(ExpressionPreset.happy), gpt3Result.Fun);
}
if (gpt3Result?.Sad >= 0)
{
    obj?.GetComponent<Vrm10Instance>().Runtime.Expression.SetWeight(ExpressionKey.CreateFromPreset(ExpressionPreset.sad), gpt3Result.Sad);
}
if (gpt3Result?.Surprise >= 0)
{
    obj?.GetComponent<Vrm10Instance>().Runtime.Expression.SetWeight(ExpressionKey.CreateFromPreset(ExpressionPreset.surprised), gpt3Result.Surprise);
}
if (gpt3Result?.Angry >= 0)
{
    obj?.GetComponent<Vrm10Instance>().Runtime.Expression.SetWeight(ExpressionKey.CreateFromPreset(ExpressionPreset.angry), gpt3Result.Angry);
}

以上

珍しそうなのは表情を数値で作ってるぐらいだと思います
当然ですがタイムラグが生まれるし、コストが倍になります
修正:gpt-3.5-turbo-0613に変えると、タイムラグが減りました

Discussion