Cloud API
録音ファイル書き起こし(急速版)
1 機能紹介
音声ファイルをテキストに変換する機能を提供しています。文章または字幕2つの出力形式をサポートしています。
中国語、英語、日本語などの言語の書き起こしをサポートしています。
詳細については、開発ガイドを参照してください。
2 呼び出し制限
ファイルの長さは5時間以下である必要があります。
音声ファイルのサイズは1GB以下。
サポートされているファイル形式(monoまたはstereo):WAV/PCM/OPUS/MP3/AMR/3GP/AAC。
3 呼び出しプロセス
(1)ファイルのアップロード:ファイルの書き起こしリクエスト:クライアントはサーバーに書き起こしされる予定のファイルを含むHTTP POSTメソッドのリクエストを送り、サーバーはタスクIDを含むHTTPレスポンスを返します。
(2)書き起こし結果の取得:ポーリングとコールバックの2つの方法で書き起こし結果を取得できます。
ポーリング:クライアントはサーバーにファイルの書き起こしリクエストで返されたタスクIDを含むHTTP GETメソッドのリクエストを送り、サーバーは書き起こし結果を含むHTTPレスポンスを返します。
コールバック:ファイルをアップロードする際にコールバックアドレスを渡し、書き起こしタスクが完了したときに、自動的に書き起こし結果を含むHTTP POSTリクエストを指定されたコールバックアドレスに送信します。
4 リクエストアドレス
| インターフェイス名 | プロトコル | URL | メソッド |
|---|---|---|---|
| ファイルの書き起こしリクエスト | HTTP | https://api.voice.dolphin-ai.jp/v1/asrfile/upload/vip | POST |
| 書き起こし結果の取得 | HTTP | https://api.voice.dolphin-ai.jp/v1/asrfile/result | GET |
| タスクの照会 | HTTP | https://api.voice.dolphin-ai.jp/v1/asrfile/tasks | GET |
5 ファイルの書き起こしリクエストインターフェイス
5.1 リクエストライン
POST /v1/asrfile/upload/vip5.2 リクエストヘッダ
| 名前 | タイプ | 必須 | 説明 |
|---|---|---|---|
| Content-type | String | はい | 必須です "multipart/form-data" |
5.3 リクエストパラメータ
クライアントはリクエストを送信し、リクエストボディ(body)にパラメータを設定します。パラメータはform-data形式です。各パラメータの意味は以下の通りです:
| パラメータ | タイプ | 必須 | 説明 | デフォルト値 |
|---|---|---|---|---|
| lang_type | String | はい | 書き起こしされる予定のファイルの言語。開発ガイド-言語サポートを参照してください | なし |
| file | File | いいえ | 書き起こしされる予定のファイル | なし |
| file_url | String | いいえ | 書き起こしされる予定のファイルの音声URL | なし |
| format | String | はい | 書き起こしされる予定のファイルの形式。開発ガイド-音声エンコードを参照してください | なし |
| sample_rate | Integer | いいえ | 音声サンプルレート、開発ガイド-基本用語を参照してください sample_rate=「8000」の場合 fieldパラメータ・フィールドが必須で、かつfield=「call-center」 | 16000 |
| output | String | いいえ | textはスライドショーに適した形式、subtitleはタイトルに適した形式です。開発ガイド-実用機能を参照してください | text |
| max_sentence_silence | Integer | いいえ | 音声の文の区切り検出しきい値。静音の持続時間がこのしきい値を超えると文が区切られると見なされます。 範囲[200, 1200]、単位:ミリ秒 | sample_rate=16000:800 sample_rate=8000:250 |
| enable_modal_particle_filter | Boolean | いいえ | 言い淀みフィルターを有効にするかどうか。開発ガイド-実用機能を参照してください | false |
| enable_punctuation_prediction | Boolean | いいえ | 句読点を追加するかどうか | true(output=text)false( output=subtitle) |
| enable_words | Boolean | いいえ | 返信用単語情報を有効にするかどうか。開発ガイド-基本用語を参照してください | false |
| words_type | Integer | いいえ | 返信用単語情報の最小単位。漢語のみ有効です 0は単語単位、1は字単位を示します | 0 |
| enable_inverse_text_normalization | Boolean | いいえ | 後処理でITNを実行するかどうか。開発ガイド-基本用語を参照してください | true |
| split_clusters | Boolean | いいえ | 話者ダイアライゼーションをするかどうか | false |
| clusters | Integer | いいえ | 話者ダイアライゼーション分類数の上限。範囲 2〜10 で、声紋に基づいて最大何種類(何人の話者)に分類されるかを示します。 特に、0 はシステムが自動的に分類数を決定することを意味します。 このフィールドは split_clusters = true の場合にのみ有効になり、正確な分類数を渡した後に役割の区別効果が向上します | なし |
| channels | Integer | いいえ | チャンネル数。範囲は1-2です 1はシングルチャンネル、2はダブルチャンネルを示します 注:有効なchannelsパラメーターが設定されている場合、cluster_idが追加されます。cluster_idが同じであれば、同一の声道の内容です | 1 |
| 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) | なし |
| keywords_quantity | Integer | いいえ | 自動的にキーワードを抽出する数。範囲は[0, 100]です | 0 |
| callback_url | String | いいえ | コールバックアドレス、例: http://10.0.0.2:8080 | いいえ |
| gain | Integer | いいえ | 振幅増幅係数を表し、範囲[1, 20]、開発ガイド-実用機能を参照 1は拡大しないことを示し、2は元の振幅の2倍(拡大1倍)を示し、以下同様 | sample_rate=16000:1 sample_rate=8000:2 |
| enable_lang_label | Boolean | いいえ | 言語を切り替える際に、認識結果に言語ラベルを返す:現在は日英混合、中英混合言語のみ対応しています | false |
| paragraph_condition | Integer | いいえ | 同じ cluster_id 内で設定された文字数に達したら、次の文で新しい段落番号を返す:範囲[100, 2000]、範囲外の値はこの機能を無効化します | 0 |
| enable_save_log | Boolean | いいえ | 音声データと認識結果のログを提供して、弊社が製品とサービスの質を向上させるために使用することは可能ですか | true |
5.4 応答結果
すべてのインターフェイスの応答のHTTPヘッダーのContent-Typeフィールドは常にapplication/jsonです。応答結果はHTTPのBodyにあります。
応答結果のフィールドは以下の通りです:
| 名前 | タイプ | 説明 |
|---|---|---|
| status | String | 状態コード |
| message | String | 状態コードの説明 |
| data | Object | 書き起こし情報 |
| ├─ duration | Integer | 音声の持続時間(秒) |
| ├─ task_id | String | この書き起こしタスクのIDを記録してください。この値はインターフェイスへのリクエストに使用します |
5.4.1 成功応答
bodyのstatusフィールドは000000です。
成功応答の例:
{
"status": "000000",
"message": "success",
"data": {
"task_id": "01e57746-5f50-490a-8e36-4ea1110c21cd",
"duration": 23
}
}5.4.2 失敗応答
bodyのstatusフィールドが000000ではない場合、すべてが失敗応答です。このフィールドを応答の成功フラグとして使用できます。
失敗応答の例:
{
"status": "200001",
"message": "file Parameter Missing",
"data": {
"task_id": "38d19b08-b075-443e-af68-e8b990764b1e",
"duration": 0
}
}6 書き起こし結果を取得するインターフェイス(ポーリング)
6.1 リクエスト行
GET /v1/asrfile/result6.2 リクエストパラメータ
クライアントがリクエストを送信すると、queryパラメータの意味は以下の通りです:
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
| task_id | String | はい | タスクID、ファイル書き起こしインターフェイスから返されます |
6.3 応答結果
すべてのインターフェイスの応答のHTTPヘッダーのContent-Typeフィールドは常にapplication/jsonです。応答結果はHTTPのBodyにあります。
応答結果のフィールドは以下の通りです:
| 名前 | タイプ | 説明 |
|---|---|---|
| status | String | 状態コード |
| message | String | 状態コードの説明 |
| data | Object | 書き起こし情報 |
| statistics | Object | 統計情報 |
6.3.1 成功応答
書き起こしが完了していない場合
bodyのstatusフィールドは000000です。
bodyのdataフィールドはこの書き起こしタスクの説明です。
dataフィールドの定義は以下の通りです:
| 名前 | タイプ | 説明 |
|---|---|---|
| desc | String | 書き起こし状態コードの説明 |
| file_name | String | この書き起こしのファイル名 |
| insert_time | String | このリクエストのファイル書き起こしの時間 |
| process_time | String | 完了キューン、実際に書き起こしを開始する時間 |
| progress | Integer | 書き起こし進捗(パーセンテージ) |
成功応答の例:
{
"status": "000000",
"message": "success",
"data": {
"desc": "Transcribing",
"file_name": "test.mp3",
"insert_time": "2022-11-11 12:42:04",
"process_time": "2022-11-11 12:42:04"
"progress": 67
}
}書き起こしが完了している場合
bodyのstatusフィールドは000000です。
bodyのdata.resultフィールドはこの書き起こしタスクの書き起こし結果です。
書き起こし結果のフィールド定義は以下の通りです:
| 名前 | タイプ | 説明 |
|---|---|---|
| begin | String | 各フラグメントの開始時間(ソース音声ファイルに対して) |
| end | String | 各フラグメントの終了時間(ソース音声ファイルに対して) |
| seg_num | Integer | フラグメント番号(1から増加) |
| transcript | String | 各フラグメントの書き起こし結果 |
| confidence | Float | [0, 1]の範囲で、現在の結果の信頼度 |
| words | Object | 単語情報(単語情報パラメータenable_words = Trueを設定したときに返されます) |
| lang_type | String | 言語を切り替える際に、認識結果に言語ラベルを返す:現在は日英混合、中英混合言語のみ対応しています(enable_lang_label を true に設定するときに返されます) |
| paragraph | Integer | 段落番号、1から始まり、順次増加します(paragraph_condition を true に設定するときに返されます) |
| cluster_id | Integer | 話者番号、1から順次増加します。同じ cluster_id の場合、同一話者を示しています(有効な clustersパラメータが設定されている場合、またはchannelsが2以上に設定されている場合に返されます) |
そこで、単語情報wordsオブジェクト:
| パラメータ | タイプ | 説明 |
|---|---|---|
| word | String | テキスト |
| start_time | Integer | 単語の開始時間、単位はミリ秒 |
| end_time | Integer | 単語の終了時間、単位はミリ秒 |
| type | String | タイプnormalは通常のテキストを示します。modalは語調を表す言葉(リクエストパラメータwords_type = 0のときのみ返されます)、puncは句読符を示します |
| keywords_index | Integer | 対応するキーワードのシーケンス番号(0はキーワードではないことを示します)、リクエストパラメータwords_type = 0のときのみこのフィールドが返されます |
bodyのdata.statisticsフィールドはこの書き起こしタスクの統計情報です:
| パラメータ | タイプ | 説明 |
|---|---|---|
| keywords | Object | キーワードオブジェクト(keywords_quantityパラメータを設定したときに返されます) |
| speed | Integer | 平均語速(日本語/中国語/韓国語:字/分;英語/日本語/韓国語:単語/分) |
| word_count | Integer | 字数統計(日本語/中国語/韓国語:字数;英語:単語数) |
| insert_time | String | このリクエストのファイル書き起こしの時間 |
| process_time | String | 完了キューン、実際に書き起こしを開始する時間 |
| finish_time | String | 書き起こしタスクを完了するのにかかった時間 |
そこで、キーワードkeywordsオブジェクト:
| パラメータ | タイプ | 説明 |
|---|---|---|
| index | Integer | キーワードのシーケンス番号(1から増加) |
| word | String | キーワード |
| frequency | Integer | キーワードの出現頻度 |
| time | Dict | キーワードの出現時間帯 |
| ├─ begin | String | キーワードの開始時間 |
| ├─ end | String | キーワードの終了時間 |
注意:
キーワード
keywordsオブジェクトの要素は頻度と重要度を総合して点数を付与して返します(TF-IDFアルゴリズム)。単純にキーワードの出現頻度で並び替えが必要な場合は、
frequencyフィールドを使用して並び替え処理を行ってください。
成功応答の例:
{
"status": "000000",
"message": "Success",
"data": {
"result": [
{
"begin": "00:00:01,170",
"end": "00:00:04,610",
"seg_num": 1,
"transcript": "こんにちは。あの、お名前は何ですか?",
"confidence": 0.9,
"paragraph": 1,
"lang_type": "ja-JP",
"cluster_id": 1,
"words": [
{
"word": "こんにちは",
"start_time": 80,
"end_time": 400,
"is_punc": false,
"keywords_index": 2,
"type": "normal"
},
{
"word": "。",
"start_time": 80,
"end_time": 400,
"is_punc": true,
"keywords_index": 0,
"type": "punc"
},
{
"word": "あの",
"start_time": 400,
"end_time": 860,
"is_punc": false,
"keywords_index": 0,
"type": "normal"
},
……略……
]
},
{
"begin": "00:00:04,630",
"end": "00:00:07,010",
"seg_num": 2,
"transcript": "こんにちは。私はあきです,お名前は?",
"confidence": 0.9,
"paragraph": 1,
"lang_type": "ja-JP",
"cluster_id": 1,
"words": [
……略……
]
}
],
"statistics": {
"finish_time": "2022-11-11 12:47:12",
"insert_time": "2022-11-11 12:42:04",
"process_time": "2022-11-11 12:46:28",
"keywords": [
{
"index": 1,
"words": "お名前",
"frequency": 2,
"time": [
{
"begin": "00:00:05,120",
"end": "00:00:05,590"
},
{
"begin": "00:00:13,420",
"end": "00:00:13,980"
}
]
}
],
"speed": 210,
"word_count": 86
}
}
}6.3.2 失敗応答
bodyのstatusフィールドが000000ではない場合、すべてが失敗応答です。このフィールドを応答の成功フラグとして使用できます。
失敗応答の例:
{
"status": "220404",
"message": "task_id does not exist"
}7 コールバック識別結果
callback_urlパラメータを指定してファイル書き起こしインターフェイスを呼び出している場合、システムは書き起こしが完了(または書き起こしが失敗)したときに自動的に識別結果を指定されたアドレスにHTTP POSTリクエストとして送信します。
応答結果のフィールドは以下の通りです:
| 名前 | タイプ | 説明 |
|---|---|---|
| status | String | 状態コード |
| message | String | 状態コードの説明 |
| data | Object | 書き起こし情報 |
7.1.1 書き起こし成功
書き起こし結果のdataフィールドの定義は以下の通りです:
| 名前 | タイプ | 説明 |
|---|---|---|
| result | Object | 書き起こし結果、ポーリングインターフェイスのdataフィールドの形式と同じ |
| statistics | Object | 統計情報、ポーリングインターフェイスのstatisticsフィールドの形式と同じ |
| task_id | String | この書き起こしのタスクID |
{
"status":"000000",
"message":"success",
"data":{
"result":[
{
"begin": "00:00:01,170",
"end": "00:00:04,610",
"seg_num": 1,
"transcript": "こんにちは。あの、お名前は何ですか?"
},
{
"begin": "00:00:04,630",
"end": "00:00:7,010",
"seg_num": 2,
"transcript": "こんにちは。私はあきです,お名前は?"
}
],
"statistics": {
"keywords":[],
"speed": 210,
"word_count": 86,
"finish_time": "2022-11-11 12:47:12",
"insert_time": "2022-11-11 12:42:04",
"process_time": "2022-11-11 12:46:28",
},
"task_id":"27dc2487-bb02-4585-bd10-b75b445441bc"
}
}7.1.2 書き起こし失敗
フィールドの形式は前と同じですが、resultフィールドの値は空です。タスクが失敗した具体的な情報についてはmessageフィールドを参照してください。
8 タスクのクエリインターフェイス
条件に基づいてタスクをフィルタリングし、書き起こし結果はプラットフォームでは1か月だけ保持しています。早めに取得してください。
8.1 リクエストライン
GET /v1/asrfile/tasks8.2 リクエストパラメータ
クライアントがリクエストを送信し、queryパラメータの意味は以下の通りです:
| パラメータ | 説明 | デフォルト値 |
|---|---|---|
| time | アップロード時間に基づいてフィルタリングする条件、n時間以内にアップロードされた音声 | 時間制限なし |
| type | 型に基づいてフィルタリング、0:失敗、1:完了、2:処理中 | 型制限なし |
| count | 数量に基づいてフィルタリング、返すタスクの数の上限 | 数量制限なし |
以上のフィルタリング条件を組み合わせて使用すると「AND」の関係になります。
8.3 応答パラメータ
すべてのインターフェイスの応答のHTTPヘッダーのContent-Typeフィールドの内容は全てapplication/jsonで、応答結果はHTTPのBodyにあります。
応答結果のフィールドは以下の通りです:
| パラメータ | タイプ | 説明 |
|---|---|---|
| status | String | 状態コード |
| message | String | 状態コードの説明 |
| data | Dict | タスク情報 |
| ├─ task_id | String | タスクID |
| ├─ desc | String | 書き起こし状態の説明 |
| ├─ file_name | String | 書き起こしされたファイル名 |
| ├─ insert_time | String | ファイル書き起こしのリクエスト時間 |
| ├─ process_time | String | 完了キューン、実際に書き起こしを開始する時間 |
| ├─ finish_time | String | 書き起こしタスクを完了するのにかかった時間 |
| statistics | Object | 統計情報 |
| ├─ count | Integer | クエリの結果タスク総数 |
| ├─ types | Dict | 各種類の数の合計 |
| ├─├─ type | Integer | 0:失敗、1:完了、2:処理中、3:キューン中 |
| ├─├─ desc | String | 書き起こし状態の説明 |
| ├─├─ count | Integer | タスク数 |