Gen3 - 感情表現の変更 – SynAnim (シンアニム)
概要
SynAnimはSynthetic Animation Engineの略で、デジタルヒューマンのGen3(第三世代のアニメーションエンジン)で追加されました。SynAnimは感情とアクションの両方をサポートするために開発されています。 Happy(幸せ)やSad(悲しい)は感情の例です。Waving(手を振る)やNodding(うなずき)はアクションの例です。感情とアクションはお互いを補完し、ユーザーに特定の感情を作り出します。例えば、デジタルヒューマンは会話のはじめに幸せそうに手を振って、終わりに悲しそうに手を振るかもしれません。感情が変わると、アクションに影響を与えることができます。通常、これは強度を測定することによって行われます。デジタルヒューマンが幸せで手を振っている場合、手を振るアクションの強度は、悲しいときに比べて高くなります。
必要条件
インラインタグを使用するためには、以下の前提条件を満たす必要があります。
- サポートされたTTSシステムを使用する必要があります。2023年4月20日現在、サポートされているTTSエンジンは
Microsoft Azure Text to Speech
です。 - Azure TTSは、SSML仕様内の「ブックマーク」タグをサポートしています。アニメーションコマンドとSSML(存在するかどうかに関係なく)を適切に処理するために、ブックマークタグのサポートに依存しています。
- Gen3デジタルヒューマンで、かつ
SynAnim
エンジンが有効になっていること。 - SynAnim対応のデジタルヒューマン - 2023年4月20日現在、各カスタマーペルソナのためにSynAnim対応のデジタルヒューマンを弊社スタッフ権限で手動で設定する必要があります。SynAnimデジタルヒューマンは、お客さま側で選択できません。
- 動的カメラサポート
1. 感情のタグ付け方法
SynAnimはXMLスタイルのインラインタグソリューションを使用しています。感情的なマークアップを含む例の文字列:
フォーマット: <uneeq:emotion_[emotion]_[strength] /> 発話文字列。 例: <uneeq:emotion_joy_strong />本当にうれしいです! <uneeq:emotion_anger_weak />そんなことしてる場合じゃないでしょう。
上記の例と同様に、1つのレスポンス内で複数の感情タグを使用できます。これらは自己終了タグであり、単語や文の周りにタグをラップする必要はありません。感情が始まる場所の文字列の最初または任意の地点にタグを挿入するだけです。
2. サポートしている感情
感情の値は、デジタルヒューマンの絶対的な感情値を決定します。例えば、joyをstrongに設定すると、デジタルヒューマンは強い喜びの振る舞いを示すようになります。感情コンポーネントは、二次的または相反する感情を処理し、合理的な感情的な振る舞いを確保します。
1つのレスポンス内で複数の感情タグを使用できますが、タグを連続して使用すると明確な結果が得られない場合があります。キャラクターの発話の境界線で句読点(ピリオドやコンマや日本語の。
や、
)を使用して感情状態が移行するポイントを示すことをお勧めします。
感情は時間とともに減衰し、この速度は感情の強度とパーソナリティ内のパラメータに基づいて計算されます(これらのパラメータは現在、弊社チームによるカスタマイズのみ可能です)。
インラインタグで感情を使用するための構文は次のとおりです。
Available emotions and strengths: 2023/3 現在
emotion | 感情(日本語) | strength |
joy | 喜び | 有効な値(文字列):“strong”、“normal”、“weak” |
trust | 信頼 | 有効な値(文字列):“strong”、“normal”、“weak” |
fear | 恐れ | 有効な値(文字列):“strong”、“normal”、“weak” |
surprise | 驚き | 有効な値(文字列):“strong”、“normal”、“weak” |
sadness | 悲しみ | 有効な値(文字列):“strong”、“normal”、“weak” |
disgust | 嫌悪 | 有効な値(文字列):“strong”、“normal”、“weak” |
anger | 怒り | 有効な値(文字列):“strong”、“normal”、“weak” |
anticipation | 期待 | 有効な値(文字列):“strong”、“normal”、“weak” |
実際に利用する際の例 |
<uneeq:emotion_joy_normal /> joyでnormal |
<uneeq:emotion_joy_strong /> joyでstrong |
<uneeq:emotion_joy_weak /> joyでweak |
<uneeq:emotion_trust_normal /> trustでnormal |
<uneeq:emotion_trust_strong /> trustでstrong |
<uneeq:emotion_trust_weak /> trustでweak |
<uneeq:emotion_fear_normal /> fearでnormal |
<uneeq:emotion_fear_strong /> fearでstrong |
<uneeq:emotion_fear_weak /> fearでweak |
<uneeq:emotion_surprise_normal /> surpriseでnormal |
<uneeq:emotion_surprise_strong /> surpriseでstrong |
<uneeq:emotion_surprise_weak /> surpriseでweak |
<uneeq:emotion_sadness_normal /> sadnessでnormal |
<uneeq:emotion_sadness_strong /> sadnessでstrong |
<uneeq:emotion_sadness_weak /> sadnessでweak |
<uneeq:emotion_disgust_normal /> disgustでnormal |
<uneeq:emotion_disgust_strong /> disgustでstrong |
<uneeq:emotion_disgust_weak /> disgustでweak |
<uneeq:emotion_anger_normal /> angerでnormal |
<uneeq:emotion_anger_strong /> angerでstrong |
<uneeq:emotion_anger_weak /> angerでweak |
<uneeq:emotion_anticipation_normal /> anticipationでnormal |
<uneeq:emotion_anticipation_strong /> anticipationでstrong |
<uneeq:emotion_anticipation_weak /> anticipationでweak |
3. カメラ制御
カメラのコントロール機能により、会話デザイナーは対話中にカメラのズームやパンを変更できます。これらのカメラの変更は、別のカメラ設定がある対話ノードに遭遇するまで持続します。 ズームとパンの量は現在プリセットされていますが、将来的には可変のズームとパンの量を許可することがロードマップに含まれています。 ズームとパンは加算されます。つまり、同時に顔にズームインして右にパンすることができます。
タグ | 説明 |
<uneeq:camera_face /> | 顔を表示 |
<uneeq:camera_shoulders /> | バストアップを表示 |
<uneeq:camera_torso /> | 上半身を表示(胴あたりまで) |
<uneeq:camera_fullbody /> | 全身を表示 |
<uneeq:camera_left /> | カメラを左にパン |
<uneeq:camera_center /> | カメラを中央に戻す |
<uneeq:camera_right /> | カメラを右にパン |
例 |
<uneeq:camera_face /> 顔をズーム |
<uneeq:camera_shoulders /> バストアップをズーム |
<uneeq:camera_torso /> 上半身をズーム |
<uneeq:camera_fullbody /> 全身をズーム |
<uneeq:camera_left /> カメラを左にパン |
<uneeq:camera_center /> カメラを中央に戻す |
<uneeq:camera_right /> カメラを右にパン |
使用法
タグは、ダイアログトランスクリプト内に自己クロージングSSMLタグとして適用され、ダイアログ内のどこにでも配置できます。1つ以上のタグを1つの応答で使用できますが、連続して使用することはできません(2022年12月7日現在の既知のバグ)。
例 | |
私の顔にズームインしています。 <uneeq:camera_face /> | ○ 有効 - タグの末尾 |
胴体を表示するだけ <uneeq:camera_torso /> お願いします。<uneeq:camera_left /> | ○ 有効 - 2つのタグ |
<uneeq:camera_fullbody /> ズームアウト! | ○ 有効 - タグの先頭 |
<uneeq:camera_face /><uneeq:camera_left /> 右を見てください。 | × 無効 - 連続したカメラ制御タグ |
<uneeq:camera_face> 私の顔にズームイン! | × 無効 - タグに“/”がない |
3. ポーズとアクション
インラインタグを使用することで、会話デザイナーは特定のアクションの動作やポストチェンジをトリガーできます。 各パーソナリティには、異なるアクションとポストチャーがある場合があります-特定のアクションとポストチャーが、そのパーソナリティの独自性をよりよく表現するために、パーソナリティのために作成される場合があります。 タグの書式は以下の通りです:
フォーマット: <uneeq:posture_[postureName] /> <uneeq:action_[actionName] />
サポートしているポーズとアクション
下記はポーズとアクションのリストです。これらは手動で駆動され、ダイアログで使用されるときにのみトリガーされます。現時点ではタグのみをアニメーションプラットフォームへ投入しても動作しません。これらは自動的にジェスチャーシステムに追加されます。
タグ | Action | アクション |
<uneeq:action_shrug /> | Shrug gesture | 肩をすくめるジェスチャー |
<uneeq:action_understandnod /> | Nod in understanding gesture | 理解のうなずきジェスチャー |
<uneeq:action_wavingcalm /> | A calm wave | 穏やかな手を振る |
<uneeq:action_confused /> | A confused animation | 混乱したアニメーション |
<uneeq:action_disappointed /> | A disappointed animation | 失望したアニメーション |
<uneeq:action_headaffirmup /> | An upward nod in affirmation | 上方にうなずく(承認の意思表示) |
<uneeq:action_headaffirmdown /> | A downward nod in affirmation | 下方にうなずく(承認の意思表示) |
<uneeq:action_headshakeslow /> | A slow shake of the head left and right (disagreement / discouragement) | 頭を左右にゆっくりと振る(意見の不一致/落胆) |
<uneeq:action_headshakemedium /> | A more energetic version of the head shake action | 頭を元気に振る動作のバージョン |
<uneeq:action_headshakefast /> | The most energetic version of the head shake action | 頭を最も激しく振る動作のバージョン |
汎用的なジェスチャーと、特定のカスタマーに向けて特別に提供されるジェスチャーがあります。
4.SSML
SSMLは引き続き完全にサポートされています。SynAnimおよびSSMLの使用の最も簡単な例:
<speak><uneeq:emotion_joy_normal />Hello!</speak>
以下は、AzureのSSMLをそのニューラルボイスの一つと共に使用した、より複雑な例です。複数のuneeq:タグを使用できること、またそれらは"voice"タグ内に配置されるが、"prosody"のように"voice"タグ内に含めることができる他の要素の外側に配置されることに注意してください。
<speak xmlns=\"http://www.w3.org/2001/10/synthesis\" xmlns:mstts=\"http://www.w3.org/2001/mstts\" xmlns:emo=\"http://www.w3.org/2009/10/emotionml\" version=\"1.0\" xml:lang=\"en-US\"> <voice name=\"en-US-JennyMultilingualNeural\"> <uneeq:action_wavingcalm/>Hey! </voice> <voice name=\"en-US-JennyMultilingualNeural\"> <uneeq:emotion_joy_normal /> <prosody rate=\"+5.00%\" pitch=\"+2.00%\" contour=\"(0%,-0%)\"> <lang xml:lang=\"en-US\">It’s great to see you.</lang> </prosody> </voice> <voice name=\"en-US-JennyMultilingualNeural\"> <uneeq:emotion_anticipation_normal /> <prosody rate=\"+5.00%\" pitch=\"+2.00%\" contour=\"(0%,-0%)\"> <lang xml:lang=\"en-US\">I’m Sophie.</lang> </prosody> </voice> <voice name=\"en-US-JennyMultilingualNeural\"> <uneeq:emotion_joy_strong/> I’m here to help out with some recommendations. </voice> <voice name=\"en-US-JennyMultilingualNeural\"> <uneeq:emotion_joy_normal /> <prosody rate=\"+5.00%\" pitch=\"+2.00%\" contour=\"(70%, -0%) (80%,-30%) (100%,+50%)\"> <lang xml:lang=\"en-US\">How can I help today?</lang> </prosody> </voice> </speak>
最終更新日 October 20, 2023