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

音声認識の結果

AmiVoice API からは、送信した音声を書き起こししたテキストだけではなく様々な情報が得られます。 情報は構造化されて JSON 形式で得られます。このセクションでは AmiVoice API から得られる結果について説明します。

結果の要素

AmiVoice API で得られる音声認識の結果は大きく3つの部分にわけられます。

図. AmiVoice API の結果の概要

それぞれの要素を順に説明します。

全体の結果

AmiVoice API 呼び出しの結果です。

例:

  "utteranceid": "20220602/14/018122d65d370a30116494c8_20220602_141442",
"text": "アドバンスト・メディアは、人と機械との自然なコミュニケーションを実現し、豊かな未来を創造していくことを目指します。",
"code": "",
"message": ""

文字起こしした結果はtextに、API 呼び出しの成功・失敗を判断するためのコード(code)とエラー時のメッセージ(message)が得られます。

  • textには送信した音声を書き起こししたテキストが得られます。
  • codemessageはリクエストが成功したときは空文字になります。失敗したときは理由が設定されますので、レスポンスコードとメッセージを参照してください。
  • utteranceidは、発話に対する ID です。HTTP インタフェースと WebSocket インタフェースで意味が異なりますので後述します。

発話区間の結果

発話区間ごとに詳細な結果が得られます。

例:

{
"results": [
{
"tokens": [/*...単語単位の結果..*/],
"confidence": 0.998,
"starttime": 250,
"endtime": 8794,
"tags": [],
"rulename": "",
"text": "アドバンスト・メディアは、人と機械との自然なコミュニケーションを実現し、豊かな未来を創造していくことを目指します。"
}
]
}
  • startimeendtimeは発話区間の開始と終了の時刻を、音声の開始を0としたミリ秒単位の時間として表しています。
  • textはこの発話区間の音声認識の結果を表しています。
  • confidenceは信頼度です。0から1の値をとり1に近づくほど、より確からしい結果であることを表します。
  • tagsrulenameは、常に空ですので無視してください。
  • resultsは配列形式ですが、要素数は常に 1 です。

単語単位の結果

単語単位の結果は、results[].tokensに配列形式で得られます。

例:

"tokens": [
{
"written": "アドバンスト・メディア",
"confidence": 1,
"starttime": 522,
"endtime": 1578,
"spoken": "あどばんすとめでぃあ",
"label": "speaker0"
},
...
]
  • written(表記)は書き起こし結果です。
  • 単語の発話された時間情報がstarttimeendtimeに送信した音声データのはじめを 0 としたときのミリ秒単位で得られます。
  • spoken(読み)はその単語の読みを表します。
  • confidence(信頼度)は単語単位に得られる信頼度です。0 から 1 の値をとり 1 に近づくほど、より確からしい結果であることを表します。
  • labelは話者ダイアライゼーション機能により推定された話者のラベルです。詳細は、話者ダイアライゼーションを参照してください。

インタフェースごとの結果の構造

前記の音声認識の結果がインタフェースごとにどのように得られるのかを説明します。

同期 HTTP 音声認識 API

発話区間をひとつにまとめた結果が得られます。複数個の発話区間が検出された場合でも、まとめてひとつの結果となります。

{
"results": [
{
"startime": 発話開始の時間,
"endtime": 発話終了の時間,
"tokens": [{単語単位の結果1},...,{単語単位の結果N}]
"confidence": 信頼度,
"tags": [],
"rulename": "",
"text": "...",
}
],
"text": "...",
"code": 結果コード,
"message": エラーの理由,
"utteranceid": "..."
}
  • はじめて発話が検出された時刻がstarttimeに、最後の発話区間の終話時刻がendtimeに、送信した音声に対するすべての単語単位の結果がtokensに配列形式で得られます。
  • 同期 HTTP 音声認識 API では、utteranceidはひとつだけ得られます。
注記

同期 HTTP 音声認識 API では、2 つ以上の発話区間があるときにそれぞれの開始時間、終了時間を得ることはできません。

結果の例

{
"results": [
{
"tokens": [
{
"written": "アドバンスト・メディア",
"confidence": 1,
"starttime": 522,
"endtime": 1578,
"spoken": "あどばんすとめでぃあ"
},
{
"written": "は",
"confidence": 1,
"starttime": 1578,
"endtime": 1866,
"spoken": "は"
},
/* ... 略 ... */
{
"written": "ます",
"confidence": 0.76,
"starttime": 8090,
"endtime": 8506,
"spoken": "ます"
},
{
"written": "。",
"confidence": 0.82,
"starttime": 8506,
"endtime": 8794,
"spoken": "_"
}
],
"confidence": 0.998,
"starttime": 250,
"endtime": 8794,
"tags": [],
"rulename": "",
"text": "アドバンスト・メディアは、人と機械との自然なコミュニケーションを実現し、豊かな未来を創造していくことを目指します。"
}
],
"utteranceid": "20220602/14/018122d65d370a30116494c8_20220602_141442",
"text": "アドバンスト・メディアは、人と機械との自然なコミュニケーションを実現し、豊かな未来を創造していくことを目指します。",
"code": "",
"message": ""
}

非同期 HTTP 音声認識 API

発話区間ごとに結果が得られます。複数個の発話区間が検出された場合は、発話区間の数だけresultsが得られます。

{
"segments": [
{
"results": [
{
"startime": 発話開始の時間,
"endtime": 発話終了の時間,
"tokens": [{単語単位の結果1},...]
"confidence": 信頼度,
"tags": [],
"rulename": "",
"text": "...",
}
],
"text": "..."
},
/* ... */
{
"results": [
{
"startime": 発話開始の時間,
"endtime": 発話終了の時間,
"tokens": [...,{単語単位の結果N}]
"confidence": 信頼度,
"tags": [],
"rulename": "",
"text": "...",
}
],
"text": "..."
}
]},
"text": "...",
"code": "...",
"message": "...",
"utteranceid": "...",
/* ... 以下は非同期 HTTP 音声認識 API に固有の項目) ... */
"audio_md5": "...",
"audio_size": 0,
"service_id": "...",
"session_id": "...",
"status": "..."
}
  • 同期 HTTP 音声認識とはことなり、発話区間ごとの結果(results)がsegmentsに配列形式で得られます。
注記

同期 HTTP 音声認識 API と同様にトップレベルにresultsを得るには、dパラメータにcompatibleWithSync=Trueを指定します。

  • ジョブの状態など非同期 HTTP 音声認識 API にだけある項目、service_idsession_idstatusaudio_sizeaudio_md5content_id、については、後述の結果詳細や、利用ガイド-リクエストの方法の非同期 HTTP インタフェースを参照してください。

WebSocket 音声認識 API

発話区間ごとに結果が得られます。複数個の発話区間がある場合は、発話区間の数だけ結果イベント(A)が得られます。

{
"results": [
{
"startime": 発話開始の時間,
"endtime": 発話終了の時間,
"tokens": [{単語単位の結果1},...,{単語単位の結果N}]
"confidence": 信頼度,
"tags": [],
"rulename": "",
"text": "書き起こし結果"
}
],
"text": "...",
"code": 結果コード,
"message": エラーの理由
"utteranceid": "..."
}
  • utteranceidは、発話区間毎に異なる ID が与えられます。

結果テキストについて

文字コード

結果は UTF-8 でエンコードされています。

Unicode エスケープ

同期 HTTP 音声認識 API 、WebSocket 音声認識 API の結果に含まれる日本語などのマルチバイトコードは Unicode エスケープされています。

Unicode エスケープされていない結果:

"text": "アドバンスト・メディアは、人と機械等の自然なコミュニケーションを実現し、豊かな未来を創造していくことを目指します。"

Unicode エスケープされた結果:

"text":"\u30a2\u30c9\u30d0\u30f3\u30b9\u30c8\u30fb\u30e1\u30c7\u30a3\u30a2\u306f\u3001\u4eba\u3068\u6a5f\u68b0\u3068\u306e\u81ea\u7136\u306a\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u73fe\u3057\u3001\u8c4a\u304b\u306a\u672a\u6765\u3092\u5275\u9020\u3057\u3066\u3044\u304f\u3053\u3068\u3092\u76ee\u6307\u3057\u307e\u3059\u3002"

不要語の自動削除

「あのー」や「えーっと」などの不要語はtextからは自動的に取り除かれます。ただし、リクエストパラメータでkeepFillerToken=1を設定していると、削除されません。コールセンターのオペレータの話し方のチェックに使いたい場合など自動的に不要語を削除したくない場合に変更できます。

フィラー単語の前後は半角の「%」で囲まれています。

%あー%
%えー%
%おー%
%えーっと%

「ぱーせんと」と発話した場合は、「%」は 1 つの単語で、tokens[].writtenは「%」という1文字となります。

結果に含まれる情報の詳細

全般的な情報

認識結果情報 ID (utteranceid)

認識結果情報 ID は、WebSocket と HTTP インタフェースで異なります。WebSocket では、発話区間毎の認識結果情報に対する ID です。一方、HTTP の場合は、1 セッションでアップロードされた複数の発話区間を含む可能性のある音声データ全体の認識結果情報に対する ID となります。

全体の認識結果テキスト (text)

発話区間の認識結果の全てを結合した全体の認識結果テキストです。

結果コード (code)

結果を表す 1 文字のコードです。レスポンスコードとメッセージを参照してください。

認識成功時は

body.code == "" かつ  body.message == "" かつ  body.text != ""

認識失敗時は

body.code != "" かつ  body.message != "" かつ  body.text == ""

となります。

エラーメッセージ (message)

エラー内容を表す文字列です。レスポンスコードとメッセージを参照してください。

発話区間の結果の詳細情報

信頼度 (results[].confidence)

全体の信頼度です。値は、0 ~ 1 をとり、信頼度が低いと誤っている可能性が高く、1に近づくほどより結果が確からしいことを表します。

発話の開始時間 (results[].starttime)

発話が検出された時間で、送信した音声データの先頭を 0 としたミリ秒単位の時間です。

発話の終了時間 (results[].endtime)

検出された発話が終わった時間で、送信した音声データの先頭を 0 としたミリ秒単位の時間です。

タグ (results[].tags)

常にブランクです。現在は利用していませんので無視してください。

ルール名 (results[].rulename)

常にブランクです。現在は利用していませんので無視してください。

音声認識結果のテキスト (results[].text)

発話区間に含まれる音声に対する認識結果のテキストです。

単語単位の結果の詳細情報

音声認識エンジンが取り扱う単位での"単語"を意味しており、言語の文法的な単語とは異なります。

単語単位の表記 (tokens[].written)

認識された単語の表記です。

単語単位の読み (tokens[].spoken)

認識された単語の単語のよみです。

  • 日本語エンジンの認識結果の spoken は平仮名です。
  • 英語エンジンの認識結果の spoken は読みではありません(無視してください)。
  • 中国語エンジンの認識結果の spoken はピンイン(pinyin)です。

単語単位の開始時間 (tokens[].starttime)

認識された単語の単語が発話されて始めたと推定した時間で、送信した音声データの先頭を 0 としたミリ秒単位の時間です。

単語単位の終了時間 (tokens[].endtime)

認識された単語の単語が発話し終わったと推定した時間で、送信した音声データの先頭を 0 としたミリ秒単位の時間です。

単語単位の推定話者ラベル (tokens[].label)

話者ダイアライゼーション機能を有効にしたときにのみ得られる情報です。 話者を区別するラベル、speaker0, speaker1, ...です。

詳細は、話者ダイアライゼーションを参照してください。

単語単位の信頼度 (tokens[].confidence)

認識された単語の信頼度です。値は、0 ~ 1 をとり、信頼度が低いと誤っている可能性が高く、1に近づくほどより結果が確からしいことを表します。

非同期 HTTP 音声認識 API

セッション ID (session_id)

非同期 HTTP 音声認識 API に送信したジョブの ID。

非同期処理の状態 (status)

非同期 HTTP 音声認識 API に送信したジョブの状態。

リクエストした音声のサイズ (audio_size)

非同期 HTTP 音声認識 API が受け付けた音声のサイズ。

リクエストした音声のMD5チェックサム (audio_md)

非同期 HTTP 音声認識 API が受け付けた音声の MD5 チェックサム。

コンテンツ ID (content_id)

利用者が後からデータを紐付けるために利用できる ID。

サービス ID (service_id)

利用者ごとに発行されているサービス ID。