メインコンテンツまでスキップ

感情分析

概要

感情分析とは

感情分析とは、音声から発話者の感情を分析して出力する機能です。AmiVoice APIでは、ESジャパン社のESAS (Emotional Signature Analysis Solution)感情解析エンジンを利用して音声から感情パラメータを返します。ESASは、イスラエルのNemesysco社が提供する最新の感情分析エンジン『LVA7』をベースに日本向けにチューニングした感情解析エンジンです。技術的な背景については、ESジャパン社のサイトを参照してください。

APIについて

AmiVoice APIでは、音声認識のリクエスト時にオプションパラメータsentimentAnalysisTrueに設定することで、ESASの出力する感情パラメータを取得できます。ESASが発話と判定した音声区間に対して約2秒に1回、20個の感情パラメータの配列を出力します。

結果はレスポンスの中のsentiment_analysisに得られます。

    "sentiment_analysis": {
"segments": [
{
"starttime": 10,
"endtime": 20,
/* 感情パラメータ */
},
{
"starttime": 100,
"endtime": 200,
/* 感情パラメータ */
},
/* 省略 */
]
},

感情パラメータについては後述の感情パラメータ一覧や、感情パラメータの意味と解釈の仕方を参照してください。また、レスポンス中のパラメータ名はAPIを使って取得することができます。

注記

感情分析は、非同期 HTTP インタフェース のみに対応しています。

利用方法

リクエスト

感情パラメータを得るには、音声認識のリクエスト時に、dパラメータにsentimentAnalysis=Trueを設定します。

例えば、感情分析を利用しない場合、AmiVoice API のサンプルプログラムに同梱している音声を curl コマンドを使って汎用エンジンで音声認識する場合は以下のようにコマンドを実行します。

curl -X POST https://acp-api-async.amivoice.com/v1/recognitions \
-F d="grammarFileNames=-a-general" \
-F u={APP_KEY} \
-F a=@test.wav

感情分析機能を有効にするには、以下のように変更します。

curl -X POST https://acp-api-async.amivoice.com/v1/recognitions \
-F d="grammarFileNames=-a-general sentimentAnalysis=True" \
-F u={APP_KEY} \
-F a=@test.wav

レスポンス

リクエストが成功したら、結果が得られるまでジョブの状態を定期的に確認してください。詳細は、非同期 HTTP インタフェースの「2. 音声認識ジョブの状態をチェックし、結果を取得する」を参照してください。

以下では感情分析機能を有効にしたときの結果レスポンスについて説明します。

成功したとき

感情分析の結果は、sentiment_analysisに得られます。

感情解析エンジンが発話と判定した音声に対して、約2秒に1回、20個の感情パラメータを出力します。sentiment_analysis.segmentsには、この感情パラメータが時間順に配列として得られます。各要素には、音声の開始時間を0としたミリ秒単位の相対的な時間情報として開始時間(starttime)、終了時間(endtime)と、その時間に対応した感情パラメータがあります。

レスポンスの例:

{
"audio_md5": "40f59fe5fc7745c33b33af44be43f6ad",
"audio_size": 306980,
"code": "",
"message": "",
"segments": [
{
"results": [
{
"confidence": 0.998,
"endtime": 8794,
"rulename": "",
"starttime": 250,
"tags": [],
"text": "アドバンスト・メディアは、人と機械との自然なコミュニケーションを実現し、豊かな未来を創造していくことを目指します。",
"tokens": [
{
"confidence": 1,
"endtime": 1578,
"spoken": "あどばんすとめでぃあ",
"starttime": 522,
"written": "アドバンスト・メディア"
},
{
"confidence": 1,
"endtime": 1834,
"spoken": "は",
"starttime": 1578,
"written": "は"
},
/* 省略 */
]
}
],
"text": "アドバンスト・メディアは、人と機械との自然なコミュニケーションを実現し、豊かな未来を創造していくことを目指します。"
}
],
"sentiment_analysis": {
"segments": [
{
"starttime": 10,
"endtime": 20,
/* 感情パラメータ */
},
{
"starttime": 100,
"endtime": 200,
/* 感情パラメータ */
},
/* 省略 */
]
},
"service_id": "user01",
"session_id": "018160cbe43f0a304474a999",
"status": "completed",
"text": "アドバンスト・メディアは、人と機械との自然なコミュニケーションを実現し、豊かな未来を創造していくことを目指します。",
"utteranceid": "20220614/15/018160cc54ee0a3044b539d0_20220614_150012"
}

感情分析結果が空になるとき

感情を分析するのに十分な長さの音声がない場合、以下のようにsentiment_analysissegmentsが空の配列になります。

sentiment_analysis": {
"segments": []
}

送信したデータに音声が含まれていない場合や、音量が小さすぎて感情解析処理の対象になっていないことが考えられます。送信したデータの音量を確認してください。

例えば、Audacityなどの音量を波形表示できるアプリケーションを使って音量を確認できます。以下は音量レベルが小さすぎる例です。信号の最大値を1としたスケールでだいたい0.05に収まるくらいの音量レベルを示していますが、もう少し大きくする必要があります。例えば、0.1を超えるくらいを目安に録音ボリュームを調整してください。

図. 感情分析の音量レベルについて

失敗したとき

何らかの原因で感情分析の処理に失敗したときは、sentiment_analysisに以下のようにcodeerror_codeerror_messageが設定されます。

例:

"sentiment_analysis":{"code":400,"error_code":"BAD_REQUEST","error_message":"file format is invalid"}
エラー時のレスポンスの一覧

エラー時のレスポンスは以下の表のとおりです。

codeerror_codeerror_message説明
400BAD_REQUESTfile format is invalid音声ファイルが存在しない、またはフォーマットが不正
500INTERNAL_SERVER_ERRORinternal server error has occurred内部サーバエラー
INTERNAL_SERVER_ERRORinternal server error has occurred before processing sentiment-analyzer内部サーバエラー

感情パラメータの一覧の取得

レスポンスに含まれる20個の感情パラメータの一覧は、https://acp-dsrpp.amivoice.com/v1/sentiment-analysis/ja/result-parameters.jsonGETリクエストすることで取得することができます。

例:

$ curl -H "Authorization: Bearer {APPKEY}" \
https://acp-dsrpp.amivoice.com/v1/sentiment-analysis/ja/result-parameters.json

このAPIの詳細は、リファレンスの感情分析 APIを参照してください。 感情パラメータが意味することは以降の章で説明します。

感情パラメータについて

感情パラメータ一覧

感情パラメータは 20 個あります。パラメータごとの最小値、最大値、その値が大きいほどポジティブなのか、ネガティブなのかといった傾向を以下の表にまとめます。

パラメータ名最小値最大値値の傾向
エネルギー0100-
ストレス0100ネガティブ
感情バランス論理1500-
集中0100-
期待0100-
興奮030ポジティブ
躊躇030-
不確実030-
思考0100-
想像力030-
困惑030ネガティブ (*1)
情熱030ポジティブ
脳活動0100-
自信030-
攻撃性憤り030ネガティブ (*2)
雰囲気会話傾向-100100-
動揺030ネガティブ (*1,*2)
喜び030ポジティブ (*2)
不満030ネガティブ (*3)
極端な起伏030-
  • 値はすべて整数型(int)です。
  • レスポンスに含まれるJSONのパラメータ名と上記の表のパラメータ名の対応は感情パラメータの一覧の取得を参照してください。

値の傾向について

  • ポジティブ: 値が大きいほど、ポジティブな反応を示唆する可能性が高いパラメータ
  • ネガティブ: 値が大きいほど、ネガティブな反応を示唆する可能性が高いパラメータ
  • その他(-): 値の大きさによって意味が変わるパラメータや、必ずしもポジティブ/ネガティブに分類が困難なパラメータ
  • *1: 数値の大小問わずネガティブに分類されます。
  • *2: 0 よりも大きな値を取ることはまれなので、0 よりも大きな値であれば高いとみなせます。
  • *3: 攻撃性憤り と同時発生した場合、怒りを表現する事から「発散」の傾向として捉える場合もあります。例えば、怒鳴っているケース等に散見されます。

感情パラメータの意味と解釈の仕方

感情パラメータの意味や解釈の仕方について説明します。感情パラメータの平均やばらつき、値が通常よりも高い、低いと判断するための閾値は、ご利用の環境によって異なります。そのため、ある程度の期間サンプルを収集して判断するようにしてください。

ヒント

まずは重要な指標である、エネルギーストレス感情/バランス/論理、に注目するのが良いとされています。

エネルギー

感情パラメータの中で最も根幹となる指標です。値の範囲に応じて意味、解釈が変わり、高領域では、感情の昂ぶり、非常に精力的なことを示唆します。 一方、低領域では、興味の欠如(退屈)、寄り添いの不足、睡眠不足(眠気)等の体調不良を示唆します。0 付近の値を取ることが多く、比較的緩やかに値が変化するパラメータです。

値の傾向

値の範囲説明
0 ~ 10低領域 気落ち、退屈、疲れ、悲しみを示唆
※持続的に低い数値が検出された場合は就業意欲の低下等も示唆
11 ~ 20快適な会話が行えていることを示唆
21 ~ 40会話の盛り上がりを示唆
※必ずしもポジティブ指標ではなく、ネガティブな不満や怒りを伴った盛り上がりの可能性もある
41 ~ 100高領域 感情の昂ぶり、非常に精力的なことを示唆
※必ずしもポジティブな指標ということではなく怒り等の可能性もある

ストレス

ストレスや精神的な負荷を示す感情パラメータで根幹となる指標です。高領域では、ストレスや精神的な負荷が高いことを示します。 基本的に0付近の値をとり、比較的緩やかに値が変化するパラメータです。

値の傾向

高領域 話者が根幹的なストレス、精神負荷を抱えていることを示唆

  • 会話の性質問わず週間/月間を通して持続して高い数値が検出された場合は話者が根幹的な精神負荷を抱えている可能性が高く、就業意欲の低下や離職リスクを示唆
  • 通話平均値より高く、かつ持続的に発生した場合はポジティブな意思決定や応対結果には繋がらない傾向あり 例)商談成立、購入、契約申し込み等

感情/バランス/論理

感情的(情動的)な思考に紐づいた内容なのか論理的(冷静な)思考に紐づいた内容なのかのバランスを示す指標です。 発生領域により、感情的(情動的)な発言か論理的(冷静な)発言かを示します。

様々な分析を行う際、話者を3つの感情タイプに分類し、タイプ毎にパラメータの考察をするために利用できます。

値の傾向

値の範囲説明
1 ~ 65論理的
65 ~ 85バランス
85 ~ 500感情的(情動的)

集中

話者の集中の度合い示す指標です。 短時間で下限値に近い値から上限値に近い値まで上がる、または上限値に近い値から下限値に近い値まで下がることがあるパラメータです。

値の傾向

  • 通話平均値より高く、かつ持続的に発生した場合は、話者にとっての重要なポイントであることも示唆
  • 通常、コールセンター等での会話(特に商談等)において、「集中」の上昇は望ましい傾向にあるという解釈ができる

期待

何かが起こることへの期待を示す指標です。 高領域ではポジティブな期待、ネガティブな期待双方の可能性がある。基本的には低い値で発生するが、突出して高い値が出ることがあるパラメータです。

値の傾向

  • 高領域 ポジティブ

    • 相手にどう伝わって欲しいかの期待を示唆
    • 通話平均値より高く、かつ持続的に発生した場合は、相手の役に立ちたいという意思、いわゆる前傾姿勢での応対を示唆
  • 高領域 ネガティブ

    • 誇張や誘導、操作を示唆
    • 高領域=嘘という意味では無く、背景に意図がある恣意的な発言であることを示唆

興奮

興奮や高揚の度合いを示す指標です。 基本的に同じくらいの値(15 前後)をとり、比較的緩やかに値が変化しますが、ときどき突出して高い値が発生します。

値の傾向

  • 興味喚起等、会話に対する意欲の度合いを考察する指標として活用
  • 商品の購入等の重要な意思決定に影響を及ぼす

躊躇

発言へのためらいの度合いを示す指標です。 基本的に同じくらいの値(15 前後)をとり、比較的緩やかに値が変化するパラメータです。

値の傾向

  • 通話平均値より高く、かつ持続的に発生した場合は発言にためらいがある、負い目、引け目を感じていることを示唆する。ストレス同様、意思決定にはネガティブな作用あり。

不確実

自信の無さを示す指標です。 基本的に同じくらいの値(15 前後)をとり、比較的緩やかに値が変化しますが、短時間で下限値に近い値から上限値に近い値まで上がる、または上限値に近い値から下限値に近い値まで下がることがあるパラメータです。

値の傾向

  • 通話平均値より高く、かつ持続的に発生した場合は自信の無さ、不安、理解や状況把握の不足、不信感を示唆する。ストレス同様、意思決定にはネガティブな作用あり。

思考

思考しながら発言している状態を示す指標です。 基本的に 0 付近の値を取ることが多く、比較的緩やかに値が変化するパラメータです。

値の傾向

  • 通話平均値より高く、かつ持続的に発生した場合は、発言の際に思考していること、建設的な話が行えている可能性、会話が難解である可能性を示唆
  • 話者双方に高く発生し持続した場合は会話での合意や意思疎通が難航している可能性を示唆

想像力

記憶や想像をしてイメージを膨らましている度合いを示す指標です。 高領域では何らかの説明をする際、ものごとの伝え方に対して想像力が働いていることを示唆します。発言の根拠が事実や記憶からなのか、または想像なのかを推定するためにも活用する指標です。基本的に 0 付近の値を取ることが多く、比較的緩やかに値が変化するパラメータです。

値の傾向

  • 高領域 ポジティブ

    • 相手の発言に対し、状況を理解しようとしていることを示唆
    • ディスカッション等においては活発である(頻繁に検出される)ことが望ましい。
  • 高領域 ネガティブ

    • はぐらかしや回答に苦慮している可能性を示唆

困惑

困惑している状態を示す指標です。 基本的に 0 付近の値を取ることが多く、比較的緩やかに値が変化するパラメータです。

情熱

心の底から興味を示しているかを示す指標です。 基本的に 0 付近の値を取ることが多く、比較的緩やかに値が変化するパラメータです。

脳活動

主に調査目的に使用する脳活動の全般的な活性を示す指標です。

値の傾向

  • 研究での活用が主な目的となる指標

自信

自信の高さを示す指標です。

値の傾向

  • 高領域
    • 話者にとって意思決定された内容であることをも示唆する。

攻撃性憤り

話者の攻撃性を示唆する指標です。基本的に 0 付近の値を取ることが多く、比較的緩やかに値が変化するパラメータです。

値の傾向

  • 誤って異なる気分を怒りと検出することがあり、扱いには注意が必要となる検証中パラメータ

雰囲気会話傾向

その他のパラメータの解釈と複合的に見ることで解釈の信憑性を高めるための補助指標です。

動揺

不満あるいは悲しみを示す指標です。基本的に 0 付近の値を取ることが多く、比較的緩やかに値が変化するパラメータです。0よりも大きな値になることは稀です。

喜び

満足、喜びを示す指標です。基本的に 0 付近の値を取ることが多く、比較的緩やかに値が変化するパラメータです。0よりも大きな値になることは稀です。

値の傾向

  • 会話における様々な心理的性質により、時に議論(口論)といった状況時にも検出される
  • 人が議論にて怒りを感じた際に相手に言い返す事でその怒りを表現、発散した結果、(セグメント単位レベルで)検出されるケースあり

不満

高いストレスと高いレベルの不満の組み合わせを示す指標です。頻繁に値が変化することはなく、連続して同じ値が発生する傾向があります。

値の傾向

  • 事前期待に対する(悪い)乖離を示唆する

極端な起伏

感情全般の動きの極限さを示す指標です。基本的に 0 付近の値を取ることが多く、比較的緩やかに値が変化するパラメータです。

値の傾向

  • 単独では無くその他パラメータの発生状況より、より正確な考察する事に活用する。 例)このパラメータと合わせてストレスが高く検出された場合、情動的、衝動的な怒りが発生している状況である可能性あり