非同期 HTTP インタフェース
非同期 HTTP インタフェース は長時間の音声を文字起こしするためのノンブロッキングな HTTP API です。
この API を利用するには以下のステップを実行します。
- 音声認識ジョブを作成する
- ポーリングして音声認識ジョブの状態をチェックし、結果を取得する
新しいバージョンについて
音声認識処理を従来よりも大幅に高速化した、新しいバージョンの非同期 HTTP インタフェース(以下「v2」とします)を、2025年7月15日にリリースしました。音声認識の精度については、従来版の非同期 HTTP インタフェース(v1)と違いはありません。v1 でなければならない理由が無い場合、v2 を使用することを推奨します。
- 従来版である v1 は、今後、2026年7月31日 を目処に停止される予定です。ご利用中の方は、v2 への移行を行ってください。(なお、終了時期は変更となる可能性があります)
- v2 では現在、感情分析の機能を利用することができません。感情分析を 利用する場合は、v1 をご利用ください。
特徴
v2 の主な特徴は以下のとおりです。従来は音声全体を直列に処理していたため、処理時間が音声の長さに比例していました。v2 では、音声を発話区間の切れ目を考慮しつつ、ある程度の長さに分割して並列処理することで、従来よりも早く処理を完了します。
項目 | 従来版 (v1) | 新版 (v2) |
---|---|---|
処理方式 | 音声全体を直列処理 | ある程度の長さに分割(発話区間の切れ目は考慮)して並列処理 |
処理時間の目安 | 音声長に比例(約0.3-1倍程度) | 90分程度までの音声データであれば、ほぼ一定時間 (例:90 分の音声 ⇒ 約 5〜6 分) |
話者ダイアライゼーション | 音声長に比例(約5%) | 音声長に比例(約5%) |
- 話者ダイアライゼーションを行う場合は、音声認識処理に加えて、話者ダイアライゼーションの処理の時間が従来と同程度かかります。
- 音声認識の処理時間は、現状では音声データの長さが 90 分程度まではほぼ一定時間で完了し、それより長いデータの場合は処理時間が徐々に延びます。ただし、サーバの混雑状況などにより、処理時間が長くなる可能性もあります。
- 短い音声データの処理時間については、高速化しないか、場合によっては若干遅くなることもあります。
利用方法
エンドポイントが変更となるのみで、それ以外は v1 と変わりません。
(v1)https://acp-api-async.amivoice.com/v1/recognitions
(v2)https://acp-api-async.amivoice.com/v2/recognitions
従来版との違い
v2 では、以下のようなリクエストに対するレスポンスが変更されています。
- a. 送信した音声データに発話区間が存在しなかった場合、v1 ではジョブ登録には成功し、処理を行ったうえで結果が存在しない旨を返していましたが、v2 ではジョブ登録の際に失敗を返すよう になりました。
- b. サポート対象外の音声ファイルをリクエストした場合、および、話者ダイアライゼーションに不正なパラメータを設定した場合のエラーレスポンスに、「text」「utteranceid」も返すようになりました。
bのケースの例: v1
{
"results": [{ "tokens": [], "tags": [], "rulename": "", "text": "" }],
"code": "+",
"message": "received unsupported audio format"
}
v2
{
"text": "",
"utteranceid":"test_data",
"results": [{"tokens": [], "tags": [], "rulename": "", "text": ""}],
"code": "+",
"message": "received unsupported audio format",
}
利用の方法
1. 音声認識ジョブを作成する
ジョブの作成の API リクエストは、同期 HTTP インタフェース と同じようにリクエストパラメータを設定し、非同期 HTTP インタフェース のエンドポイントにリクエストを送信します。
v2(新版)の場合
POST https://acp-api-async.amivoice.com/v2/recognitions
v1(従来版)の場合
POST https://acp-api-async.amivoice.com/v1/recognitions
以下、基本的に v2 の場合について説明いたします。 v1 を利用する場合は、適宜エンドポイントを読み替えてください。 例えば、curl コマンドで、ログ保存なしで、test.wavファイルの音声認識のリクエストを送るには以下のようにします。
curl https://acp-api-async.amivoice.com/v2/recognitions \
-F u={APP_KEY} \
-F d="grammarFileNames=-a-general loggingOptOut=True" \
-F a=@test.wav
同期 HTTP インタフェース とはエンドポイントが異なります が、リクエストパラメータの設定の方法は同じです。
感情分析などいくつかのパラメータは、非同期 HTTP インタフェース にしか対応していません。
同期 HTTP インタフェース とは異なり、ログ保存のあり、なしはエンドポイントではなく、リクエストパラメータで指定します。
デフォルトではログ保存ありとなります。ログ保存をしないようにするには、d
パラメータにloggingOptOut=True
を指定します。