HTTP / WebSocket Service

この項では感情認識の HTTP / WebSocket API について述べます。

接続情報

URL: https://service.mimi.fd.ai
URL: wss://service.mimi.fd.ai

概要

感情認識 API のプロトコルは HTTP および WebSocket です。
リクエストのパラメータは HTTP リクエストヘッダとして送ってください。詳細については API Reference 感情認識を行う を参照してください。
感情認識は入力音声に対して、以下の5つの感情それぞれについてスコアを推定します。

  • 喜び (happiness)
  • 悲しみ (sadness)
  • 怒り (anger)
  • 嫌悪 (disgust)
  • 平静 (neutral)

実行結果は JSON 形式で返されます。応答の構成については、後述の"応答例"を参照してください。

入力音声が極端に短い場合には、不正なデータとみなされエラーとなります。

認証

HTTP APIサービスをご利用の際には実行したいサービスに対応するスコープ( スコープ一覧 )を指定して発行したアクセストークンが必要です。
mimi® API Console 画面からの操作で取得するには 1. トークンの取得 を参照ください。
API の実行で取得するには 認証/認可操作 を参照ください。

クエリ文字列でのリクエスト

ブラウザ上で WebSocket API を利用する場合等、 HTTP ヘッダを使った実行時設定の指定ができない場合は、 HTTP ヘッダの代わりにクエリ文字列を使って実行時設定を指定することができます。
クエリ文字列による HTTP ヘッダの代替 の記述を参照ください。

name

value

description

required

x-mimi-process

emo-categorical

実行するサー
ビスに該当する値

required

API Reference

感情認識 API の詳細な情報については、API Reference 感情認識を行う を参照ください。

実行

以下は cURL を使用した HTTP サービスの実行例です。

実行例

curl -X POST https://service.mimi.fd.ai \
-H "Content-Type: audio/x-pcm;bit=16;rate=16000;channels=1" \
-H "x-mimi-process:emo-categorical" \
-H "Authorization: Bearer <accessToken>" \
--data-binary @/path/to/audio.raw

応答例

認識結果には、途中結果と最終結果の2種類があります。途中結果はその時点までの音声に基づいた結果であり、最終結果は入力音声全体に基づいて結果を表します。HTTP の場合には最終結果のみが出力されます。WebSocket の場合には途中結果と最終結果が出力されます。途中結果はサーバーが適切であると判断したタイミングで出力されます。クライアント側から制御する方法はありません。最終結果は1つのクエリに対して最後に1回だけ出力されます。 最終結果より後には、どのようなレスポンスも出力されません。

以下は、応答例(途中結果と最終結果)とその構成内容についての簡易な説明です。応答結果の詳細については API リファレンス を参照してください。

この応答例では、スコアが最も高いラベル neutral が 項目 label の値になっていることが確認できます。

# レスポンス内容の要素
#    "type": 感情認識の型
#    "session_id": セッションID
#    "status": 感情認識結果のステータス
#    "response": 感情認識結果配列
#        "scores": クラス別スコアの配列
#            "neutral": 平静クラスのスコア
#            "happiness": 喜びクラスのスコア
#            "sadness": 悲しみクラスのスコア
#            "anger": 怒りクラスのスコア
#            "disgust": 嫌悪クラスのスコア
#        "interval": 入力音声中で感情認識の対象となった区間の開始・終了時間
#            "start": 感情認識の対象となった区間の開始時間
#            "end": 感情認識の対象となった区間の終了時間
#        "label": 結果ラベル(スコアが最も大きかった感情クラスのラベル)

{
  "type": "emo#categorial",
  "session_id": "b758067a-2b33-11ec-8865-42010a92003c",
  "status": "recog-finished",
  "response": {
    "scores": {
      "neutral": 0.6329927786316619,
      "happiness": 0.00023493017127678665,
      "sadness": 0.3173239610473178,
      "anger": 0.0005972573319338948,
      "disgust": 0.048851056812642006
    },
    "interval": {
      "start": 0,
      "end": 6271
    },
    "label": "neutral"
  }
}
# レスポンス内容の要素
#    "type": 感情認識の型
#    "session_id": セッションID
#    "status": 感情認識結果のステータス
#    "response": 感情認識結果配列
#        "scores": クラス別スコアの配列
#            "neutral": 平静クラスのスコア
#            "happiness": 喜びクラスのスコア
#            "sadness": 悲しみクラスのスコア
#            "anger": 怒りクラスのスコア
#            "disgust": 嫌悪クラスのスコア
#        "interval": 入力音声中で感情認識の対象となった区間の開始・終了時間
#            "start": 感情認識の対象となった区間の開始時間
#            "end": 感情認識の対象となった区間の終了時間
#        "label": 結果ラベル(スコアが最も大きかった感情クラスのラベル)

{
  "type": "emo#categorical",
  "session_id": "e565e846-3080-11ec-8c6b-42010a920083",
  "status": "recog-finished",
  "response": {
    "scores": {
      "neutral": 0.6179189435614048,
      "happiness": 0.006555141549617704,
      "sadness": 0.032579141952442874,
      "anger": 0.004277119648725614,
      "disgust": 0.3386696282216431
    },
    "interval": {
      "start": 0,
      "end": 6408
    },
    "label": "neutral"
  }
}

Did this page help you?