Logo
一発話認識

Cloud API

1 機能紹介

一発話認識:60秒以内の音声フレーズを認識し、対話チャット、コントロールコマンドなどの短い音声認識シーンに適用できます。

2 WebSocketインターフェース(ストリーミング)

2.1 サービスアドレス

wss://api.voice.dolphin-ai.jp/v1/asr/ws

2.2 インタラクションフロー

Workflow

1. 認証

クライアントはWebSocket接続を確立する際、次のリクエストヘッダを設定する必要があります:

名前タイプ必須説明
AuthorizationStringはい標準HTTPヘッダーで、認証情報を設定します。形式は標準のBearer <Token>である必要があります(Bearerの後に空白があることに注意してください)

認証関連の操作については、認証と承認を参照してください。

2. 開始とパラメータの送信

クライアントはワンライナー認識リクエストを開始し、サーバーはリクエストが有効であることを確認します。リクエストメッセージ内でパラメータをJSON形式で送信する必要があります。

パラメータの送信(headerオブジェクト):

パラメータタイプ必須説明
namespaceStringはいメッセージが所属する名前空間:SpeechRecognizer はワンライナー認識を示します
nameStringはいイベント名:StartRecognition は開始フェーズを示します

パラメータの送信(payloadオブジェクト):

パラメータタイプ必須説明デフォルト値
lang_typeStringはい言語オプション、開発ガイド-言語サポートを参照してください必須
formatStringいいえ音声エンコード形式、開発ガイド-音声エンコードを参照してくださいpcm
sample_rateIntegerいいえ音声サンプルレート、開発ガイド-基本用語を参照してください
sample_rate=「8000」の場合
fieldパラメータ・フィールドが必須で、かつfield=「call-center」
16000
enable_intermediate_resultBooleanいいえ中間認識結果を返すかどうかtrue
enable_punctuation_predictionBooleanいいえ後処理で句読点を追加するかどうかtrue
enable_inverse_text_normalizationBooleanいいえ後処理でITNを実行するかどうか、開発ガイド-基本用語を参照してくださいtrue
max_sentence_silenceIntegerいいえ音声センテンスのサイレンス検出しきい値、サイレンス時間がこのしきい値を超えるとセンテンスが切り替えられます。有効なパラメータ範囲は200~1200で、単位はミリ秒ですsample_rate=16000:800
sample_rate=8000:250
enable_wordsBooleanいいえ単語情報を返すかどうか、開発ガイド_基本用語を参照してくださいfalse
enable_intermediate_wordsBooleanいいえ中間結果の単語情報を返すかどうか、開発ガイド_基本用語を参照してくださいfalse
enable_modal_particle_filterBooleanいいえ語気詞フィルタを有効にするかどうか、開発ガイド_実用機能を参照してくださいtrue
hotwords_listList<String>いいえ一度限り有効な単語リスト、本接続中のみ有効です
hotwords_id と同時に存在する場合は、hotwords_list が優先されます。一度に最大 100 個まで提供可能です。詳細は開発ガイド-実用的な機能を参照してください
無し
hotwords_idStringいいえ単語ID、開発ガイド-実用機能を参照してください無し
hotwords_weightFloatいいえ単語ウェイト、値の範囲[0.1, 1.0]0.4
correction_words_idStringいいえ強制置換単語庫ID、参照開発ガイド-実用機能
複数の強制置換単語庫IDを使用することができ、各IDは縦線|で区切られます;all は全ての強制置換単語庫IDを使用することを意味します。
無し
forbidden_words_idStringいいえNG単語ID、参照開発ガイド-実用機能
複数のNG単語IDを使用することができ、各IDは縦線|で区切られます;all は全てのNG単語IDを使用することを意味します。
無し
fieldStringいいえ分野
一般:general (サポートサンプルレート16000Hz)
コールセンター:call-center (サポートサンプルレート8000Hz)
無し
audio_urlStringいいえ戻り音声のフォーマット(プラットフォームでは30日間のみ保存)
mp3:mp3形式の音声リンクを返す
pcm:pcm形式の音声リンクを返す
wav:wav形式の音声リンクを返す
無し
connect_timeoutIntegerいいえ接続タイムアウト(秒)、範囲:5-6010
gainIntegerいいえ振幅増幅係数を表し、範囲[1, 20]、開発ガイド-実用機能を参照
1は拡大しないことを示し、2は元の振幅の2倍(拡大1倍)を示し、以下同様
sample_rate=16000:1
sample_rate=8000:2
max_suffix_silenceFloatいいえ音声ポストミュート検出しきい値(秒) 範囲 0-10;ミュート時間がこの閾値を超えると、認識は自動的に終了する。 パラメータ値が0を超えるか、このパラメータを超えない場合、ポストミュート検出機能は有効になりません。特殊なケース:-1が渡された場合、発話が停止されると認識は即座に停止する。0
user_idStringいいえユーザーが定義した情報で、応答メッセージにそのまま返され、最大36文字までです無し
enable_save_logBooleanいいえ音声データと認識結果のログを提供して、弊社が製品とサービスの質を向上させるために使用することは可能ですかtrue
durationIntegerいいえ入力した音声の最大長さ(デフォルト値は60秒です)。設定可能な範囲は[60,600]で、単位は秒です。60
enable_spokenBooleanいいえ有効にすると、文の情報に読み方が返却されます。注意:現在、本機能は日本語のみに対応しており、他の言語には対応していませんfalse
enable_dynamic_breakBooleanいいえ有効にすると、話速および最大無音時間パラメータ(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オブジェクト):

パラメータタイプ説明
namespaceStringメッセージの所属名前空間:SpeechRecognizer はワンライナー認識を示し
nameStringイベント名:RecognitionStarted は開始フェーズを示します
statusStringステータスコード
status_textStringステータスコード説明
task_idStringタスクのグローバルユニーク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_resulttrue , に設定すると、サーバーは複数回にわたり RecognitionResultChangedメッセージ、すなわち認識の中間結果を返します。

  • enable_intermediate_resultfalse , に設定すると、このステップでサーバーは何のメッセージも返しません。

最後に取得した中間結果と最終結果は必ずしも一致しないため、 RecognitionCompleted イベントに対応する結果を最終的な認識結果としてください。

返信パラメータ(headerオブジェクト):

パラメータタイプ説明
namespaceStringメッセージが属する名前空間,SpeechRecognizer は一文話の認識を表し
nameStringメッセージ名の,RecognitionResultChanged は認識の中間結果を示し
statusIntegerステータスコードはリクエストの成功を示し、サービスステータスコードを参照
status_textStringステータスメッセージ
task_idStringタスクのグローバルユニークIDは、問題を特定するためにこの値を記録してください
message_idStringこのメッセージのID

返信パラメータ(payloadオブジェクト):

パラメータタイプ説明
indexInteger一文話認識の場合、常に1です
timeInteger現在処理された音声の長さ、単位はミリ秒
begin_timeInteger現在の文に対応する開始時間、単位はミリ秒
speaker_idString一文話認識の場合、常に空の値です
resultString現在の文の認識結果
confidenceFloat[0, 1]の範囲で、現在の結果の信頼度
wordsList<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オブジェクト):

パラメータタイプ説明
namespaceStringメッセージが属する名前空間,SpeechRecognizer は一文話の認識を表し
nameStringメッセージ名,StopRecognition は認識を停止することを意味します

送信例:

{
    "header": {
        "namespace": "SpeechRecognizer",
        "name": "StopRecognition"
    }
}

返信パラメータ(headerオブジェクト):

パラメータタイプ説明
namespaceStringメッセージが属する名前空間,SpeechRecognizer は一文話の認識を表し
nameStringメッセージ名,RecognitionCompleted は認識完了を意味します
statusIntegerステータスコードはリクエストの成功を示し、サービスステータスコードを参照してください
status_textStringステータスメッセージ
task_idStringタスクのグローバルユニークIDは、問題を特定するためにこの値を記録してください
message_idStringこのメッセージのID

返信パラメータ(payloadオブジェクト):

パラメータタイプ説明
indexInteger一文話認識の場合、常に1です
timeInteger現在処理された音声の長さ、単位はミリ秒
begin_timeInteger現在の文に対応する開始時間、単位はミリ秒
speaker_idString一文話認識の場合、常に空の値です
resultString現在の文の認識結果
confidenceFloat[0, 1]の範囲で、現在の結果の信頼度。
wordsList<Word>enable_wordstrue に設定されている場合のみ、現在の文の単語情報が返されます。

その中で、単語情報 words オブジェクト:

パラメータタイプ説明
wordStringテキスト
start_timeInteger単語の開始時間、単位はミリ秒
end_timeInteger単語の終了時間、単位はミリ秒
typeStringタイプ
normal は通常のテキストを表し、,modal は言いようの単語を表し(enable_modal_particle_filtertrue,に設定されている場合、このタイプは返されません),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メソッド
HTTPhttps://api.voice.dolphin-ai.jp/v1/asr/apiPOST

3.2 リクエストヘッダー

HTTPリクエストヘッダーは「キーワード/値」のペアで構成され、各行に一つのペアがあり、キーワードと値は英語のコロン : で区切られ、以下のように設定されます:

名前タイプ必須説明
AuthorizationStringはい標準HTTPヘッダー,認証情報の設定。フォーマットは標準の Bearer <Token形式である必要があります(Bearerの後のスペースに注意)。

3.3 リクエストパラメーター

クライアントが音声認識リクエストを送信し、リクエストクエリパラメーター(query)でパラメーター設定が必要です。各パラメーターの意味は以下の通りです:

パラメータタイプ必須説明デフォルト値
lang_typeStringはい言語オプション、開発ガイド-言語サポートを参照してください必須
formatStringいいえ音声エンコード形式、開発ガイド-音声エンコードを参照してくださいpcm
sample_rateIntegerいいえ音声サンプルレート、開発ガイド-基本用語を参照してください
sample_rate=「8000」の場合
fieldパラメータ・フィールドが必須で、かつfield=「call-center」
16000
enable_punctuation_predictionBooleanいいえ後処理で句読点を追加するかどうかtrue
enable_inverse_text_normalizationBooleanいいえ後処理でITNを実行するかどうか、開発ガイド-基本用語を参照してくださいtrue
enable_modal_particle_filterBooleanいいえ語気詞フィルタを有効にするかどうか、開発ガイド_実用機能を参照してくださいtrue
max_sentence_silenceIntegerいいえ音声センテンスのサイレンス検出しきい値、サイレンス時間がこのしきい値を超えるとセンテンスが切り替えられます。有効なパラメータ範囲は200~1200で、単位はミリ秒ですsample_rate=16000:800
sample_rate=8000:250
enable_wordsBooleanいいえ単語情報を返すかどうか、開発ガイド_基本用語を参照してくださいfalse
hotwords_listStringいいえ単語リスト、本接続中のみ有効で、hotwords_idパラメータと同時に存在する場合は、hotwords_listが優先されます。 一度に最大100セット/個までアップロード可能です。詳細は開発ガイド-実用機能を参照してください無し
hotwords_idStringいいえホットワードID、開発ガイド-実用機能を参照してください無し
hotwords_weightFloatいいえホットワードの重み、値の範囲[0.1, 1.0]0.4
correction_words_idStringいいえ強制置換単語庫ID、参照開発ガイド-実用機能
複数の強制置換単語庫IDを使用することができ、各IDは縦線|で区切られます;all は全ての強制置換単語庫IDを使用することを意味します。
無し
forbidden_words_idStringいいえNG単語ID、参照開発ガイド-実用機能
複数のNG単語IDを使用することができ、各IDは縦線|で区切られます;all は全てのNG単語IDを使用することを意味します。
無し
fieldStringいいえ分野
一般:general (サポートサンプルレート16000Hz)
コールセンター:call-center (サポートサンプルレート8000Hz)
無し
audio_urlStringいいえ戻り音声のフォーマット(プラットフォームでは30日間のみ保存)
mp3:mp3形式の音声リンクを返す
pcm:pcm形式の音声リンクを返す
wav:wav形式の音声リンクを返す
無し
gainIntegerいいえ振幅増幅係数を表し、範囲[1, 20]、開発ガイド-実用機能を参照
1は拡大しないことを示し、2は元の振幅の2倍(拡大1倍)を示し、以下同様
sample_rate=16000:1
sample_rate=8000:2
enable_save_logBooleanいいえ音声データと認識結果のログを提供して、弊社が製品とサービスの質を向上させるために使用することは可能ですかtrue
durationIntegerいいえ入力した音声の最大長さ(デフォルト値は60秒です)。設定可能な範囲は[60,600]で、単位は秒です。60
enable_spokenBooleanいいえ有効にすると、文の情報に読み方が返却されます。注意:現在、本機能は日本語のみに対応しており、他の言語には対応していません。false
enable_dynamic_breakBooleanいいえ有効にすると、話速および最大無音時間パラメータ(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 内にあります。 応答結果フィールドは以下の通りです:

名称タイプ説明
statusStringサービスステータスコード
messageStringサービスステータス説明
dataObject
├─task_idStringこの値を記録してエラーを特定するのに役立ててください
├─resultString音声認識結果

成功した応答

body内の status フィールドが 000000 であれば成功した応答です。

{
    "status": "000000",
    "message": "success",
    "data": {
        "task_id": "f71cba68-2399-4fcd-b754-40a0d2ff5b50",
        "result": "外資不動産投資環境の改善"
    }
}

失敗した応答

body内の status フィールドが 000000 ,でない場合は、すべて失敗した応答であり、このフィールドを応答が成功したかどうかの指標として使用できます。