Cloud API
1 機能紹介
一発話認識:60秒以内の音声フレーズを認識し、対話チャット、コントロールコマンドなどの短い音声認識シーンに適用できます。
2 WebSocketインターフェース(ストリーミング)
2.1 サービスアドレス
wss://api.voice.dolphin-ai.jp/v1/asr/ws2.2 インタラクションフロー

1. 認証
クライアントはWebSocket接続を確立する際、次のリクエストヘッダを設定する必要があります:
| 名前 | タイプ | 必須 | 説明 |
|---|---|---|---|
| Authorization | String | はい | 標準HTTPヘッダーで、認証情報を設定します。形式は標準のBearer <Token>である必要があります(Bearerの後に空白があることに注意してください) |
認証関連の操作については、認証と承認を参照してください。
2. 開始とパラメータの送信
クライアントはワンライナー認識リクエストを開始し、サーバーはリクエストが有効であることを確認します。リクエストメッセージ内でパラメータをJSON形式で送信する必要があります。
パラメータの送信(headerオブジェクト):
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
| namespace | String | はい | メッセージが所属する名前空間:SpeechRecognizer はワンライナー認識を示します |
| name | String | はい | イベント名:StartRecognition は開始フェーズを示します |
パラメータの送信(payloadオブジェクト):
| パラメータ | タイプ | 必須 | 説明 | デフォルト値 |
|---|---|---|---|---|
| lang_type | String | はい | 言語オプション、開発ガイド-言語サポートを参照してください | 必須 |
| format | String | いいえ | 音声エンコード形式、開発ガイド-音声エンコードを参照してください | pcm |
| sample_rate | Integer | いいえ | 音声サンプルレート、開発ガイド-基本用語を参照してください sample_rate=「8000」の場合 fieldパラメータ・フィールドが必須で、かつfield=「call-center」 | 16000 |
| enable_intermediate_result | Boolean | いいえ | 中間認識結果を返すかどうか | true |
| enable_punctuation_prediction | Boolean | いいえ | 後処理で句読点を追加するかどうか | true |
| enable_inverse_text_normalization | Boolean | いいえ | 後処理でITNを実行するかどうか、開発ガイド-基本用語を参照してください | true |
| max_sentence_silence | Integer | いいえ | 音声センテンスのサイレンス検出しきい値、サイレンス時間がこのしきい値を超えるとセンテンスが切り替えられます。有効なパラメータ範囲は200~1200で、単位はミリ秒です | sample_rate=16000:800 sample_rate=8000:250 |
| enable_words | Boolean | いいえ | 単語情報を返すかどうか、開発ガイド_基本用語を参照してください | false |
| enable_intermediate_words | Boolean | いいえ | 中間結果の単語情報を返すかどうか、開発ガイド_基本用語を参照してください | false |
| enable_modal_particle_filter | Boolean | いいえ | 語気詞フィルタを有効にするかどうか、開発ガイド_実用機能を参照してください | true |
| hotwords_list | List<String> | いいえ | 一度限り有効な単語リスト、本接続中のみ有効ですhotwords_id と同時に存在する場合は、hotwords_list が優先されます。一度に最大 100 個まで提供可能です。詳細は開発ガイド-実用的な機能を参照してください | 無し |
| 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単語IDを使用することができ、各IDは縦線 |で区切られます;all は全てのNG単語IDを使用することを意味します。 | 無し |
| field | String | いいえ | 分野 一般:general (サポートサンプルレート16000Hz) コールセンター:call-center (サポートサンプルレート8000Hz) | 無し |
| audio_url | String | いいえ | 戻り音声のフォーマット(プラットフォームでは30日間のみ保存) mp3:mp3形式の音声リンクを返す pcm:pcm形式の音声リンクを返す wav:wav形式の音声リンクを返す | 無し |
| connect_timeout | Integer | いいえ | 接続タイムアウト(秒)、範囲:5-60 | 10 |
| gain | Integer | いいえ | 振幅増幅係数を表し、範囲[1, 20]、開発ガイド-実用機能を参照 1は拡大しないことを示し、2は元の振幅の2倍(拡大1倍)を示し、以下同様 | sample_rate=16000:1 sample_rate=8000:2 |
| max_suffix_silence | Float | いいえ | 音声ポストミュート検出しきい値(秒) 範囲 0-10;ミュート時間がこの閾値を超えると、認識は自動的に終了する。 パラメータ値が0を超えるか、このパラメータを超えない場合、ポストミュート検出機能は有効になりません。特殊なケース:-1が渡された場合、発話が停止されると認識は即座に停止する。 | 0 |
| user_id | String | いいえ | ユーザーが定義した情報で、応答メッセージにそのまま返され、最大36文字までです | 無し |
| enable_save_log | Boolean | いいえ | 音声データと認識結果のログを提供して、弊社が製品とサービスの質を向上させるために使用することは可能ですか | true |
| duration | Integer | いいえ | 入力した音声の最大長さ(デフォルト値は60秒です)。設定可能な範囲は[60,600]で、単位は秒です。 | 60 |
| enable_spoken | Boolean | いいえ | 有効にすると、文の情報に読み方が返却されます。注意:現在、本機能は日本語のみに対応しており、他の言語には対応していません | false |
| enable_dynamic_break | Boolean | いいえ | 有効にすると、話速および最大無音時間パラメータ(max_sentence_silence)に基づき、文の切れ目が動的に最適化されます。 | false |
送信例:
{
"header": {
"namespace": "SpeechRecognizer",
"name": "StartRecognition"
},
"payload": {
"lang_type": "zh-cmn-Hans-CN",
"format": "wav",
"sample_rate": 16000,
"enable_intermediate_result": true,
"enable_punctuation_prediction": true,
"enable_inverse_text_normalization": true,
"max_sentence_silence": 800,
"enable_words":true
}
}返信パラメータ(headerオブジェクト):
| パラメータ | タイプ | 説明 |
|---|---|---|
| namespace | String | メッセージの所属名前空間:SpeechRecognizer はワンライナー認識を示し |
| name | String | イベント名:RecognitionStarted は開始フェーズを示します |
| status | String | ステータスコード |
| status_text | String | ステータスコード説明 |
| task_id | String | タスクのグローバルユニークIDを記録して問題の解決に役立ててください |
返信例:
{
"header":{
"namespace":"SpeechRecognizer",
"name":"RecognitionStarted",
"app_id":"f0b4b131-362b-4d60-afd9-19c738986ed0",
"status":"000000",
"status_text":"success",
"task_id":"0220a729ac9d4c9997f51592ecc83847",
"message_id":""
},
"payload":{
"index":0,
"time":0,
"begin_time":0,
"speaker_id":"",
"result":"",
"words":null
}
}3. 送信音声データ、認識結果の受信
音声データを繰り返し送信し、継続して認識結果を受信します。1回のデータ送信サイズは7680 Byteが推奨されます。
認識結果は「中間結果」と「最終結果」に分かれます。詳細は開発文書-基本用語を参照してください。
-
enable_intermediate_resultをtrue, に設定すると、サーバーは複数回にわたりRecognitionResultChangedメッセージ、すなわち認識の中間結果を返します。 -
enable_intermediate_resultをfalse, に設定すると、このステップでサーバーは何のメッセージも返しません。
RecognitionCompleted イベントに対応する結果を最終的な認識結果としてください。返信パラメータ(headerオブジェクト):
| パラメータ | タイプ | 説明 |
|---|---|---|
| namespace | String | メッセージが属する名前空間,SpeechRecognizer は一文話の認識を表し |
| name | String | メッセージ名の,RecognitionResultChanged は認識の中間結果を示し |
| status | Integer | ステータスコードはリクエストの成功を示し、サービスステータスコードを参照 |
| status_text | String | ステータスメッセージ |
| task_id | String | タスクのグローバルユニークIDは、問題を特定するためにこの値を記録してください |
| message_id | String | このメッセージのID |
返信パラメータ(payloadオブジェクト):
| パラメータ | タイプ | 説明 |
|---|---|---|
| index | Integer | 一文話認識の場合、常に1です |
| time | Integer | 現在処理された音声の長さ、単位はミリ秒 |
| begin_time | Integer | 現在の文に対応する開始時間、単位はミリ秒 |
| speaker_id | String | 一文話認識の場合、常に空の値です |
| result | String | 現在の文の認識結果 |
| confidence | Float | [0, 1]の範囲で、現在の結果の信頼度 |
| words | List<Word> | 常に空で、中間結果は単語情報を返しません |
返信例:
{
"header": {
"namespace": "SpeechRecognizer",
"name": "RecognitionResultChanged",
"status": "000000",
"status_text": "success",
"task_id": "0220a729ac9d4c9997f51592ecc83847",
"message_id": "43u134hcih2lcp7q1c94dhm5ic2op9l2"
},
"payload": {
"index": 1,
"time": 1920,
"begin_time": 0,
"speaker_id": "",
"result": "优化",
"words": []
}
}4. 停止と最終結果の取得
クライアントは一文話認識の停止リクエストを送信し、サーバーに音声データの送信終了と音声認識の停止を通知します。サーバーは最終認識結果を返し、その後自動的に接続を切断します。
パラメータの送信(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 |
返信パラメータ(payloadオブジェクト):
| パラメータ | タイプ | 説明 |
|---|---|---|
| index | Integer | 一文話認識の場合、常に1です |
| time | Integer | 現在処理された音声の長さ、単位はミリ秒 |
| begin_time | Integer | 現在の文に対応する開始時間、単位はミリ秒 |
| speaker_id | String | 一文話認識の場合、常に空の値です |
| result | String | 現在の文の認識結果 |
| confidence | Float | [0, 1]の範囲で、現在の結果の信頼度。 |
| words | List<Word> | enable_wordsが true に設定されている場合のみ、現在の文の単語情報が返されます。 |
その中で、単語情報 words オブジェクト:
| パラメータ | タイプ | 説明 |
|---|---|---|
| word | String | テキスト |
| start_time | Integer | 単語の開始時間、単位はミリ秒 |
| end_time | Integer | 単語の終了時間、単位はミリ秒 |
| type | String | タイプnormal は通常のテキストを表し、,modal は言いようの単語を表し(enable_modal_particle_filterがtrue,に設定されている場合、このタイプは返されません),punc は句読点を表します |
返信例:
{
"header": {
"namespace": "SpeechRecognizer",
"name": "RecognitionCompleted",
"status": "00000",
"status_text": "success",
"task_id": "0220a729ac9d4c9997f51592ecc83847",
"message_id": "45kbrouk4yvz81fjueyao2s7y7o6gjz6"
},
"payload": {
"index": 1,
"time": 5292,
"begin_time": 0,
"speaker_id": "",
"result": "优化和改进外商投资房地产管理。",
"confidence": 1,
"words": [{
"word": "优化",
"type": "normal",
"start_time": 390,
"end_time": 1110,
}, {
"word": "和",
"type": "normal",
"start_time": 1110,
"end_time": 1440
}, {
"word": "改进",
"type": "normal",
"start_time": 1440,
"end_time": 2130
}, {
"word": "外商投资",
"type": "normal",
"start_time": 2160,
"end_time": 3570
}, {
"word": "房地产",
"type": "normal",
"start_time": 3600,
"end_time": 4290
}, {
"word": "管理",
"type": "normal",
"start_time": 4290,
"end_time": 4860
},{
"word": "。",
"type": "punc",
"start_time": 4290,
"end_time": 4860
}]
}
}3 HTTPインターフェース(非ストリーミング)
3.1 HTTPリクエストライン
| プロトコル | URL | メソッド |
|---|---|---|
| HTTP | https://api.voice.dolphin-ai.jp/v1/asr/api | POST |
3.2 リクエストヘッダー
HTTPリクエストヘッダーは「キーワード/値」のペアで構成され、各行に一つのペアがあり、キーワードと値は英語のコロン : で区切られ、以下のように設定されます:
| 名前 | タイプ | 必須 | 説明 |
|---|---|---|---|
| Authorization | String | はい | 標準HTTPヘッダー,認証情報の設定。フォーマットは標準の Bearer <Token形式である必要があります(Bearerの後のスペースに注意)。 |
3.3 リクエストパラメーター
クライアントが音声認識リクエストを送信し、リクエストクエリパラメーター(query)でパラメーター設定が必要です。各パラメーターの意味は以下の通りです:
| パラメータ | タイプ | 必須 | 説明 | デフォルト値 |
|---|---|---|---|---|
| lang_type | String | はい | 言語オプション、開発ガイド-言語サポートを参照してください | 必須 |
| format | String | いいえ | 音声エンコード形式、開発ガイド-音声エンコードを参照してください | pcm |
| sample_rate | Integer | いいえ | 音声サンプルレート、開発ガイド-基本用語を参照してください sample_rate=「8000」の場合 fieldパラメータ・フィールドが必須で、かつfield=「call-center」 | 16000 |
| enable_punctuation_prediction | Boolean | いいえ | 後処理で句読点を追加するかどうか | true |
| enable_inverse_text_normalization | Boolean | いいえ | 後処理でITNを実行するかどうか、開発ガイド-基本用語を参照してください | true |
| enable_modal_particle_filter | Boolean | いいえ | 語気詞フィルタを有効にするかどうか、開発ガイド_実用機能を参照してください | true |
| max_sentence_silence | Integer | いいえ | 音声センテンスのサイレンス検出しきい値、サイレンス時間がこのしきい値を超えるとセンテンスが切り替えられます。有効なパラメータ範囲は200~1200で、単位はミリ秒です | sample_rate=16000:800 sample_rate=8000:250 |
| enable_words | Boolean | いいえ | 単語情報を返すかどうか、開発ガイド_基本用語を参照してください | false |
| hotwords_list | String | いいえ | 単語リスト、本接続中のみ有効で、hotwords_idパラメータと同時に存在する場合は、hotwords_listが優先されます。 一度に最大100セット/個までアップロード可能です。詳細は開発ガイド-実用機能を参照してください | 無し |
| 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単語IDを使用することができ、各IDは縦線 |で区切られます;all は全てのNG単語IDを使用することを意味します。 | 無し |
| field | String | いいえ | 分野 一般:general (サポートサンプルレート16000Hz) コールセンター:call-center (サポートサンプルレート8000Hz) | 無し |
| audio_url | String | いいえ | 戻り音声のフォーマット(プラットフォームでは30日間のみ保存) mp3:mp3形式の音声リンクを返す pcm:pcm形式の音声リンクを返す wav:wav形式の音声リンクを返す | 無し |
| gain | Integer | いいえ | 振幅増幅係数を表し、範囲[1, 20]、開発ガイド-実用機能を参照 1は拡大しないことを示し、2は元の振幅の2倍(拡大1倍)を示し、以下同様 | sample_rate=16000:1 sample_rate=8000:2 |
| enable_save_log | Boolean | いいえ | 音声データと認識結果のログを提供して、弊社が製品とサービスの質を向上させるために使用することは可能ですか | true |
| duration | Integer | いいえ | 入力した音声の最大長さ(デフォルト値は60秒です)。設定可能な範囲は[60,600]で、単位は秒です。 | 60 |
| enable_spoken | Boolean | いいえ | 有効にすると、文の情報に読み方が返却されます。注意:現在、本機能は日本語のみに対応しており、他の言語には対応していません。 | false |
| enable_dynamic_break | Boolean | いいえ | 有効にすると、話速および最大無音時間パラメータ(max_sentence_silence)に基づき、文の切れ目が動的に最適化されます。 | false |
3.4 リクエスト例
curl --location --request POST 'http://127.0.0.1:7100/stream/v1?lang_type=zh-cmn-Hans-CN&format=pcm&sample_rate=16000&enable_punctuation_prediction=true&enable_inverse_text_normalization=true' \
--header 'Content-Type: application/octet-stream' \
--data-binary '@audio.pcm'3.5 応答結果
応答結果は Body 内にあります。 応答結果フィールドは以下の通りです:
| 名称 | タイプ | 説明 |
|---|---|---|
| status | String | サービスステータスコード |
| message | String | サービスステータス説明 |
| data | Object | |
| ├─task_id | String | この値を記録してエラーを特定するのに役立ててください |
| ├─result | String | 音声認識結果 |
成功した応答
body内の status フィールドが 000000 であれば成功した応答です。
{
"status": "000000",
"message": "success",
"data": {
"task_id": "f71cba68-2399-4fcd-b754-40a0d2ff5b50",
"result": "外資不動産投資環境の改善"
}
}失敗した応答
body内の status フィールドが 000000 ,でない場合は、すべて失敗した応答であり、このフィールドを応答が成功したかどうかの指標として使用できます。