Skip to main content
Skip table of contents

ビヘイビアマークアップ

ビヘイビアマークアップを使用すると、音声ファイルのスクリプトにビヘイビアコントロールを挿入できます。演技についてライターがディレクションできるようになるため、台本を準備するときに便利です。

ただし、ビヘイビアマークアップはかなり手間のかかる作業です。基本的には、バッチ処理でバッチ全体にビヘイビアコントロールを適用し、アニメーションのプレビューを確認しながらメタデータを編集するほうが効率的です(「SGXのインタラクティブな処理」参照)。

ローカルのビヘイビアマークアップは、処理の際にグローバルマークアップよりも優先されます。

マークアップの形式

マークアップを使用するには、「sgx」というXMLタグをスクリプトに追加します。以下のように、タグを適用するテキストの前後をタグで囲みます。

<sgx mode="friendly" speech_magnitude="1.2">これからお話しするのは、あの戦争に出征した祖父のことです。</sgx>えーと、出征する前は登山家でした。えー、いろんな山に登っていましたね。Kツーに最初のころに登頂した登山隊のメンバーだったんです。

青色のテキスト部分の音声は、モードは「friendly」に、スピーチの強さモディファイアは1.2になります。

タグの中に別のタグを入れることもできます。

<sgx mode="friendly" nonverbal_magnitude="1.2">これからお話しするのは、あの戦争に出征した祖父のことです。<sgx mode="excited">えーと、出征する前は登山家でした。</sgx>えー、いろんな山に登っていましたね。Kツーに最初のころに登頂した登山隊のメンバーだったんです。</sgx>

内側のタグのアトリビュート(属性)は、外側のタグのアトリビュートよりも優先されます。上記の場合、赤色のテキスト部分の音声モードは、「friendly」ではなく「excited」になります。

ビヘイビアモードのマークアップアトリビュート

ビヘイビアモードの変更やオートモードの設定に使用するアトリビュートは以下のとおりです。

アトリビュート

説明

mode

オートモードが検出されない場合にアクティブになる、デフォルトのビヘイビアモード。

positive_mode

ポジティブオートモードがトリガーされるビヘイビアモード。

negative_mode

ネガティブオートモードがトリガーされるビヘイビアモード。

effort_mode

エフォートオートモードがトリガーされるビヘイビアモード。

laugh_mode

笑いオートモードがトリガーされるビヘイビアモード。

auto_modes

アクティブにするオートモード。「none」、「all」のいずれかと、「positive」、「negative」、「effort」、「laugh」をカンマ区切りで指定できます。

以下に例を示します。

<sgx mode="Neutral" auto_modes="positive,negative" positive_mode="Happy" negative_mode="Sad">これからお話しするのは、あの戦争に出征した祖父のことです。<sgx mode="Excited" auto_modes="none">えーと、出征する前は登山家でした。</sgx>えー、いろんな山に登っていましたね。Kツーに最初のころに登頂した登山隊のメンバーだったんです。</sgx>

各タグを詳しく見ていきましょう。まず、外側のテキスト(青色)のタグの意味は以下のとおりです。

  • デフォルトのビヘイビアモードは「Neutral」。

  • オートモードで有効なのはポジティブとアクティブ。エフォートは検出されない。

  • ポジティブオートモードの場合は「Happy」がトリガーされ、ネガティブオートモードの場合は「Sad」がトリガーされる。

内側のテキスト(赤色)のタグの意味は以下のとおりです。

  • デフォルトのビヘイビアモードは「Excited」。

  • オートモードは無効。デフォルトのモードしか発生しない。

ビヘイビアモディファイアのマークアップアトリビュート

ビヘイビアモディファイアの設定に使用するアトリビュートは以下のとおりです。

アトリビュート

モディファイア

speech_magnitude

スピーチの強さ

speech_speed

スピーチの速度

hyperarticulation

強調表現

jaw_limit

顎の制限

nonverbal_magnitude

ノンバーバルの強さ

nonverbal_speed

ノンバーバルの速度

blink_frequency

まばたきの頻度

dart_frequency

ダートの頻度

以下に例を示します。

<sgx speech_magnitude="0.9" nonverbal_magnitude="0.9">これからお話しするのは、あの戦争に出征した祖父のことです。<sgx speech_magnitude="1.2" nonverbal_magnitude="1.4">えーと、出征する前は登山家でした。</sgx>えー、いろんな山に登っていましたね。Kツーに最初のころに登頂した登山隊のメンバーだったんです。</sgx>

この例の場合、外側のテキスト(青色)では、スピーチの強さとノンバーバルの強さがどちらも0.9に設定されているのに対して、内側のテキスト(赤色)では、スピーチの強さが1.2、ノンバーバルの強さが1.4になっています。

マークアップのtimeアトリビュート

通常、マークアップのタグの位置は、タグに囲まれているテキストの位置を基準とした音声の位置に設定されます。以下の例を見てみましょう。

<sgx mode="friendly">これからお話しするのは、あの戦争に出征した祖父のことです。</sgx><sgx mode="serious">えーと、出征する前は登山家でした。</sgx>

この場合、各モードの位置合わせは以下のようになります。

image-20250419-141054.png

「friendly」モードと「serious」モードの境界は、「これからお話しするのは、あの戦争に出征した祖父のことです」が終わって、「えーと、出征する前は登山家でした」が始まる5,390msの位置です。

ところが、タグのタイミングを明示的に設定するオプションのtimeアトリビュートを使用すると、位置を基準としたタイミング設定を無視できます。

アトリビュート

説明

time

タグの開始時間(ミリ秒単位)。スクリプトのタグの位置を基準とした開始時間を無視します。

たとえば、以下のようにマークアップしたとします。

<sgx mode="friendly" time="0"/> <sgx mode="serious" time="4000"/>これからお話しするのは、あの戦争に出征した祖父のことです。えーと、出征する前は登山家でした。

この場合、各モードの位置合わせは以下のようになります。

image-20250419-153155.png

「serious」モードの開始位置は、タグで指定されている4,000msになっています。なお、timeアトリビュートは、タグの開始時間を決定するものです。タグの終了時間は、次の時系列タグの開始時間か音声の終了時間のいずれか早いほうに自動的に設定されます。したがって、終了のタグは必要ありません。

SGXでは、可能な場合、スピーチの句解析で隣接する境界にタイミングを移すため、指定した時間値と実際の開始時間でわずかなズレが生じる場合があります。

スクリプトを作成しない場合のマークアップ

マークアップのタグは、以下のようにスクリプトを作成しない場合でも使用できます。

<sgx mode="friendly" time="0"/> <sgx mode="serious" time="2000"/>

このスクリプトにはマークアップしかなく、音声のスクリプトはありません。タグのタイミングを定義する単語もありませんが、timeアトリビュートを使用すれば開始時間を明示的に設定できます。timeアトリビュートを使用しない場合、タグの開始時間は音声ファイルの開始時点になります。

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.