一発話認識 API
60秒以内の短い音声を認識し、会話チャットやコントロールコマンドなどの短い音声認識シーンに適用されます。
WebSocket インターフェース(ストリーミング)
エンドポイント
ws://<ip_address>:7100/ws/v1ip_address を実際のサーバーIPに置き換えてください。
インタラクションフロー
1. 接続を確立し、パラメータを送信
クライアントが一発話認識リクエストを発行し、サーバーがリクエストの有効性を確認します。このリクエストメッセージには、パラメータを設定する必要があります。JSON形式で送信します。
送信パラメータ(headerオブジェクト):
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
| namespace | String | はい | メッセージの名前空間:SpeechRecognizer は一発話認識を表す |
| name | String | はい | イベント名:StartRecognition は開始段階を表す |
送信パラメータ(payloadオブジェクト):
| パラメータ | タイプ | 必須 | 説明 | デフォルト値 |
|---|---|---|---|---|
| lang_type | String | はい | 言語オプション、「音声認識サービス使用マニュアル」の「言語サポート」セクションを参照 | 必須 |
| format | String | いいえ | 音声エンコード形式、「音声認識サービス使用マニュアル」の「音声エンコード」セクションを参照 | pcm |
| sample_rate | Integer | いいえ | 音声サンプルレート、「音声認識サービス使用マニュアル」の「基本用語」セクションを参照 | 16000 |
| enable_intermediate_result | Boolean | いいえ | 中間認識結果を返すかどうか | false |
| enable_punctuation_prediction | Boolean | いいえ | 後処理で句読点を追加するかどうか | false |
| enable_inverse_text_normalization | Boolean | いいえ | 後処理でITNを実行するかどうか、「音声認識サービス使用マニュアル」の「基本用語」セクションを参照 | false |
| enable_words | Boolean | いいえ | 単語情報の返却を有効にするかどうか、「音声認識サービス使用マニュアル」の「基本用語」セクションを参照 | false |
| enable_intermediate_words | Boolean | いいえ | 中間結果の単語情報の返却を有効にするかどうか、「音声認識サービス使用マニュアル」の「基本用語」セクションを参照 | false |
| enable_modal_particle_filter | Boolean | いいえ | 言い淀みフィルターを有効にするかどうか、「音声認識サービス使用マニュアル」の「実用機能」セクションを参照 | false |
| hotwords_id | String | いいえ | 単語辞書ID、「音声認識サービス使用マニュアル」の「実用機能」セクションおよび「音声認識サービス単語インターフェースプロトコル」を参照 | なし |
| hotwords_weight | Float | いいえ | 単語辞書の重み、範囲[0.1, 1.0] | 0.4 |
| correction_words_id | String | いいえ | 強制置換辞書ID、「音声認識サービス使用マニュアル」の「実用機能」セクションおよび「音声認識サービス強制置換インターフェースプロトコル」を参照 複数の強制置換辞書IDを使用する場合は、各IDを縦線 | で区切る;all はすべての強制置換辞書IDを使用することを表す | なし |
| forbidden_words_id | String | いいえ | NG単語辞書ID、「音声認識サービス使用マニュアル」の「実用機能」セクションおよび「音声認識サービスNG単語インターフェースプロトコル」を参照 複数のNG単語辞書IDを使用する場合は、各IDを縦線 | で区切る;all はすべてのNG単語辞書IDを使用することを表す | なし |
| gain | Int | いいえ | 振幅ゲイン係数、範囲[1, 20]、「音声認識サービス使用マニュアル」の「基礎知識」および「実用機能」セクションを参照 1は増幅なし、2は元の振幅の2倍(1倍増幅)、といった具合だ | 1 |
| max_suffix_silence | Int | いいえ | 音声後置静寂検出閾値(秒)、範囲 1~10。句末の静寂がこのしきい値を超えると自動的に認識を終了。 パラメータ値が0またはこのパラメータが未送信の場合、後置静寂検出機能を有効にしない。 | 0 |
| user_id | String | いいえ | ユーザー定義情報、応答メッセージでそのまま返される、最大36文字 | なし |
送信例:
{
"header": {
"namespace": "SpeechRecognizer",
"name": "StartRecognition"
},
"payload": {
"lang_type": "zh-cmn-Hans-CN",
"format": "pcm",
"sample_rate": 16000,
"enable_intermediate_result": true,
"enable_punctuation_prediction": true,
"enable_inverse_text_normalization": true,
"enable_words":true,
"user_id":"conversation_001"
}
}戻りパラメータ(headerオブジェクト):
| パラメータ | タイプ | 説明 |
|---|---|---|
| namespace | String | メッセージの名前空間:SpeechRecognizer は一発話認識を表す |
| name | String | イベント名:RecognitionStarted は開始段階を表す |
| status | String | ステータスコード |
| status_text | String | ステータスコードの説明 |
| task_id | String | タスクのグローバル一意のID、問題のトラブルシューティングのためにこの値を記録してください |
| user_id | String | 接続を確立するときに送信した user_id |
戻り例:
{
"header":{
"namespace":"SpeechRecognizer",
"name":"RecognitionStarted",
"appkey":"",
"status":"00000",
"status_text":"success",
"task_id":"0220a729ac9d4c9997f51592ecc83847",
"message_id":"",
"user_id":"conversation_001"
},
"payload":{
"paragraph": 0,
"index":0,
"time":0,
"begin_time":0,
"speaker_id":"",
"result":"",
"confidence":0,
"words":null
}
}2. 音声データを送信し、認識結果を受信
音声バイナリデータを繰り返し送信し、認識結果を継続的に受信します。
認識結果は「中間結果」と「最終結果」に分かれます。詳細は「音声認識サービス使用マニュアル」の「基本用語」セクションを参照してください。
-
enable_intermediate_resultがtrueに設定されている場合、サーバーはRecognitionResultChangedメッセージを何度も返し、これは認識の中間結果を示します。 -
enable_intermediate_resultがfalseに設定されている場合、このステップではサーバーからメッセージは返されません。
注意:
最後に取得した中間結果と最終結果は必ずしも同じではありません。最終認識結果として
RecognitionCompletedイベントに対応する結果を使用してください。
送信パラメータ:音声バイナリデータを分割して送信し、1回のデータパケットのサイズは7680 Byteを推奨します。
戻りパラメータ(headerオブジェクト):
| パラメータ | タイプ | 説明 |
|---|---|---|
| namespace | String | メッセージの名前空間、SpeechRecognizer は一発話認識を表す |
| name | String | メッセージ名、RecognitionResultChanged は認識の中間結果を表す |
| status | Integer | ステータスコード、リクエストの成功可否を示し、サービスステータスコードを参照 |
| status_text | String | ステータスメッセージ |
| task_id | String | タスクのグローバル一意のID、問題のトラブルシューティングのためにこの値を記録してください |
| message_id | String | このメッセージのID |
| user_id | String | 接続を確立するときに送信した user_id |
戻りパラメータ(payloadオブジェクト):
| パラメータ | タイプ | 説明 |
|---|---|---|
| index | Integer | 一発話認識に対しては、恒久的に1 |
| time | Integer | 現在処理されている音声の長さ、単位はミリ秒 |
| begin_time | Integer | 現在の文に対応する開始時間、単位はミリ秒 |
| speaker_id | String | 一句话認識に対しては、恒久的に空の値 |
| result | String | 認識結果 |
| confidence | Float | 結果の信頼度、範囲 [0, 1] |
| words | List<iWord> | 中間結果の単語情報、enable_intermediate_words が true に設定されている場合にのみ結果が返される |
| volume | Integer | 音量、範囲 [0, 100] |
中間結果の単語情報 iWord オブジェクト:
| パラメータ | タイプ | 説明 |
|---|---|---|
| word | String | テキスト |
| start_time | Integer | 単語の開始時間、単位はミリ秒 |
| end_time | Integer | 単語の終了時間、単位はミリ秒 |
| stable | Boolean | 単語の状態が固定されているか false の場合、後続の中間結果でその単語が変更される可能性がある;それ以外の場合、変更されない。 |
戻り例:
{
"header": {
"namespace": "SpeechRecognizer",
"name": "RecognitionResultChanged",
"status": "00000",
"status_text": "success",
"task_id": "0220a729ac9d4c9997f51592ecc83847",
"message_id": "43u134hcih2lcp7q1c94dhm5ic2op9l2",
"user_id":"conversation_001"
},
"payload": {
"index": 1,
"time": 1920,
"begin_time": 0,
"speaker_id": "",
"result": "",
"confidence": 1,
"words": [
{
"word": "あらゆる",
"start_time": 0,
"end_time": 1920,
"stable": false
}
]
}
}3. 停止して最終結果を取得
クライアントは一発話認識の停止リクエストを送信し、サーバーに音声データの送信終了と音声認識の停止を通知します。サーバーは最終認識結果を返し、その後自動的に接続を解除します。
送信パラメータ(headerオブジェクト):
| パラメータ | タイプ | 説明 |
|---|---|---|
| namespace | String | メッセージの名前空間、SpeechRecognizer は一発話認識を表す |
| name | String | メッセージ名、StopRecognition は認識の停止を表す |
送信例:
{
"header": {
"namespace": "SpeechRecognizer",
"name": "StopRecognition"
}
}戻りパラメータ(headerオブジェクト):
| パラメータ | タイプ | 説明 |
|---|---|---|
| namespace | String | メッセージの名前空間、SpeechRecognizer は一発話認識を表す |
| name | String | メッセージ名、RecognitionCompleted は認識の完了を表す |
| status | Integer | ステータスコード、リクエストの成功可否を示し、サービスステータスコードを参照 |
| status_text | String | ステータスメッセージ |
| task_id | String | タスクのグローバル一意のID、問題のトラブルシューティングのためにこの値を記録してください |
| message_id | String | このメッセージのID |
| user_id | String | 接続を確立するときに送信した user_id |
戻りパラメータ(payloadオブジェクト):
| パラメータ | タイプ | 説明 |
|---|---|---|
| index | Integer | 一発話認識に対しては、恒久的に1 |
| time | Integer | 現在処理されている音声の長さ、単位はミリ秒 |
| begin_time | Integer | 現在の文に対応する開始時間、単位はミリ秒 |
| speaker_id | String | 一句话認識に対しては、恒久的に空の値 |
| result | String | 認識結果 |
| confidence | Float | 結果の信頼度、範囲 [0, 1] |
| words | List<eWord> | 単語情報、enable_words が true に設定されている場合にのみ返される |
| volume | Integer | 音量、範囲 [0, 100] |
最終結果の語情報 eWords オブジェクト:
| パラメータ | タイプ | 説明 |
|---|---|---|
| word | String | テキスト |
| start_time | Integer | 単語の開始時間、単位はミリ秒 |
| end_time | Integer | 単語の終了時間、単位はミリ秒 |
| type | String | タイプnormal は通常のテキスト、forbidden はNG単語、modal は言い淀み、punc は句読点を示す |
戻り例:
{
"header": {
"namespace": "SpeechRecognizer",
"name": "RecognitionCompleted",
"status": "00000",
"status_text": "success",
"task_id": "0220a729ac9d4c9997f51592ecc83847",
"message_id": "45kbrouk4yvz81fjueyao2s7y7o6gjz6",
"user_id":"conversation_001"
},
"payload": {
"index": 1,
"time": 5292,
"begin_time": 0,
"speaker_id": "",
"result": "优化和改进外商投资房地产管理。",
"confidence": 0.9,
"words": [{
"word": "优化",
"start_time": 390,
"end_time": 1110,
"type": "normal"
}, {
"word": "和",
"start_time": 1110,
"end_time": 1440,
"type": "normal"
}, {
"word": "改进",
"start_time": 1440,
"end_time": 2130,
"type": "normal"
}, {
"word": "外商投资",
"start_time": 2160,
"end_time": 3570,
"type": "normal"
}, {
"word": "房地产",
"start_time": 3600,
"end_time": 4290,
"type": "normal"
}, {
"word": "管理",
"start_time": 4290,
"end_time": 4860,
"type": "normal"
}]
}
}HTTP インターフェース(同期)
HTTP リクエストライン
| プロトコル | URL | メソッド |
|---|---|---|
| HTTP/1.1 | http://<ip_address>:7100/api/v1 | POST |
<ip_address> を実際のサーバーIPに置き換えてください。
リクエストヘッダー
HTTP リクエストヘッダーは「キーワード/値」のペアで構成され、各行に1ペアが含まれ、キーワードと値はコロン:で区切られます。設定内容は以下の通りです:
| 名称 | タイプ | 必須 | 説明 |
|---|---|---|---|
| Content-type | String | はい | "application/octet-stream" でなければならず、HTTPボディのデータがバイナリデータであることを示す |
リクエストパラメータ
クライアントは音声認識リクエストを送信し、リクエストクエリパラメータ(query)でパラメータ設定を行う必要があります。各パラメータの意味は以下の通りです: