WebSocket Service

この項では話者識別の WebSocket API について述べます。

📘

事前準備について

話者識別サービスを利用するには、事前に準備が必要です。
どのような準備が必要であるかを含め、話者識別サービス利用についての全体像の理解には話者識別サービスの概要 を参照ください。

接続情報

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

概要

事前準備が整っている時、話者識別の WebSocket API では話者識別サービスが利用できます。
話者識別サービス API のプロトコルは HTTP および WebSocket です。

話者識別は入力音声に対して、リクエストで指定した話者グループに属する話者についての信頼度を推定します。

実行結果は JSON 形式で返されます。
その JSON 形式の応答の構成、結果は実行する API によって異なります。
詳しくは後述の "API Reference" および "応答例" を参照ください。

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

認証

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

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

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

API Reference

話者識別に関する各種 API の詳細な情報については、以下のドキュメントおよび API Reference を参照ください。

事前に必要な各種操作の API

話者識別サービス利用の API

実行

ここでは、事前準備が整っている前提で話者識別サービスリクエストを実行する場合の実行例について説明します。

📘

準備からの実行例と応答例

事前準備から話者識別サービス利用まで、一連の流れの実行例 および 応答例については 初めてのAPI実行 - 6. 話者識別 を参照してください。

以下は libmimiio 付属のサンプルプログラム mimiio_file を使用した WebSocket サービスの利用例です。

実行例

GitHub リポジトリのサンプルコード mimiio_file.cpp そのままでは話者識別サービスを利用できません。話者識別サービス向けに編集し、ビルドして mimiio_file を取得します。

サンプルプログラムの編集

<speakerGroupId> は、適宜、ご利用環境にある "話者識別実行対象の話者グループ ID" に置き換えてください。
※ この編集では、話者識別対象の話者グループ ID を実装で直接指定しています(オプション指定は対応していません)

// mimio_file.cpp のうち、ヘッダ実装箇所(= 下記に相当する箇所)を削除して、下記内容に置き換える

size_t header_size = 2;
MIMIIO_HTTP_REQUEST_HEADER h[header_size]; 
strcpy(h[0].key, "x-mimi-process");  // 利用するサービスを指定するキー
strcpy(h[0].value, mimi_process.c_str());  // 利用するサービスの値(話者識別の場合 "srs"。引数で受ける)
strcpy(h[1].key, "x-mimi-srs-speaker-group-id");  // 話者グループ ID を指定するキー
strcpy(h[1].value, "<speakerGroupId>");  // 話者識別実行対象の話者グループ ID(実装で指定する)

mimiio_file 実行

リクエスト実行時に x-mimi-process を指定するには、mimiio_file の オプション-xまたは --processを使用します。話者識別サービスの場合 srsを指定してください。指定がない場合、mimiio_file のデフォルト指定の "asr"(音声認識サービス)がリクエストされたものと解釈されます。

下記のタブ切り替えで mimi SRS の実行例 および mimiio_file のヘルプ を確認できます。

./mimiio_file \
-h service.mimi.fd.ai \
-x srs \
-p 443 \
-t <accessToken> \
-i $HOME/dev/libmimiio/examples/audio.raw
need option: --host
need option: --input
need option: --port
​
usage: mimiio_file --host=string --port=int --input=string [options] ...
options:
 -h, --host             Host name (string)
 -p, --port             Port (int)
 -i, --input            Input file s(string)
 -t, --token            Access token (string [=])
   --rate               Sampling rate (int [=16000])
   --channel            Number of channels (int [=1])
   --format             Audio format (string [=MIMIIO_RAW_PCM])
 -l, --input_language   input language (string [=ja])
 -x, --process          x-mimi-process (string [=asr])
   --lid_options        language identifier options (string [=lang=ja|en|zh|ko])
   --verbose            Verbose mode
   --help               Show help
​
Acceptable audio formats:
  MIMIIO_RAW_PCM
  MIMIIO_FLAC_0
  MIMIIO_FLAC_1
  MIMIIO_FLAC_2
  MIMIIO_FLAC_3
  MIMIIO_FLAC_4
  MIMIIO_FLAC_5
  MIMIIO_FLAC_6
  MIMIIO_FLAC_7
  MIMIIO_FLAC_8
  MIMIIO_FLAC_PASS_THROUGH

応答例

以下は、mimi SRS の応答例とその構成内容についての簡易な説明です。
応答結果の詳細については "API Reference" を参照してください。

# 応答 JSON の要素
#   "status" : 話者識別のステータス,
#   "type" : 話者識別の型,
#   "response" : 話者識別結果の応答配列(結果は配列で返されます)
#       "speaker" : 話者
#           "confidence" : 信頼度。大きいほど信頼度が高い。
#           "speaker_id" : 話者ID
#   "session_id" : セッションID
#

{
  "status": "recog-finished",
  "type": "srs#identification#<speakerGroupId>",
  "response": {
    "speaker": [
      {
        "confidence": 0.73504,
        "speaker_id": "<speakerId>"
      },
      {
        "confidence": 0.26496,
        "speaker_id": ""
      }
    ]
  },
  "session_id": "22947a94-ffb2-11ef-ace2-42010a92001b"
}

実行例 および 応答例については 初めてのAPI実行 - 6. 話者識別 を参照してください。

🚧

サードパーティの WebSocket ライブラリを使う場合の注意

  • 現時点では、 mimi サーバーは RFC6455 の 5.4 項の Fragmentation に対応しておりません。クライアントは fragmented frames を送信しないでください。

  • HTTP リクエストヘッダにアクセストークンの値を設定してアクセスすることで、実行時に特定のサービスだけを実行させることができます。 実行時に受け付けるサービスについての値設定に関する詳細情報は項目サービス対応表を参照ください。