Skip to main content

URL 指定音声認識機能

非同期 HTTP インタフェースの v2 には、URL 指定音声認識機能があります。これは通常とは異なるエンドポイントを利用することで、音声ファイルをアップロードする代わりに、HTTPS でアクセス可能な音声ファイルの URL を指定して音声認識を実行することができるものです。

この API を利用するには以下のステップを実行します。

  1. 音声認識バッチを作成する
  2. バッチの状態を確認する
  3. session_id を取得する
  4. 音声認識結果を取得する

特徴​

URL 指定音声認識機能を用いた非同期 HTTP インタフェースには、以下の特徴があります。

  • 音声ファイルをアップロードする必要がありません
  • 音声ファイルの URL だけで音声認識を開始できます
  • 複数の音声ファイルを 1 回のリクエストで登録できます
  • Amazon S3 の Presigned URL や Azure Blob Storage の SAS URL などを利用できます
  • 音声認識結果の取得方法は、通常の非同期 HTTP インタフェースと同じです

通常の非同期 HTTP インタフェースとの違い​

項目通常の非同期 HTTP インタフェースURL 指定音声認識機能
音声ファイルの指定方法音声ファイルをアップロード音声ファイルの URL を指定
一度にリクエストできる音声ファイル数1 ファイル1~90 ファイル
エンドポイントhttps://acp-api-async.amivoice.com/v2/recognitionshttps://acp-api-async.amivoice.com/v2/batch-recognitions
管理単位session_idbatch_id → session_id

利用の方法​

URL 指定音声認識機能を用いた非同期 HTTP インタフェースの利用の流れは、以下のとおりです。

音声ファイル URL の登録
↓
batch_id 取得
↓
バッチ状態確認
↓
session_id 取得
↓
結果取得

1. 音声認識バッチを作成する​

音声ファイルの URL 一覧を指定して、認識バッチを作成します。リクエストは、JSON 形式、multipart 形式が使用できます。

tip

JSON 形式と multipart 形式では機能上の違いはありません。

URL 一覧を JSON として生成しやすい場合は JSON 形式を、 既存の multipart/form-data ベースの実装へ組み込みたい場合は multipart 形式を利用してください。

JSON 形式によるリクエスト​

以下は、JSON 形式でリクエストする場合です。

POST https://acp-api-async.amivoice.com/v2/batch-recognitions
Authorization: Bearer {APIキー}
Content-Type: application/json

リクエスト例:

{
"files": [
{
"url": "https://example.com/audio-1.wav",
"content_id": "file001"
},
{
"url": "https://example.com/audio-2.wav",
"content_id": "file002"
}
],
"parameters": {
"d": "grammarFileNames=-a-general"
}
}

以下は curl によるリクエストの例です。

curl -X POST \
"https://acp-api-async.amivoice.com/v2/batch-recognitions" \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"files": [
{
"url": "https://example.com/audio-1.wav",
"content_id": "file001"
},
{
"url": "https://example.com/audio-2.wav",
"content_id": "file002"
}
],
"parameters": {
"d": "grammarFileNames=-a-general"
}
}'
リクエストパラメータ​
パラメータ必須説明
files○認識対象ファイルの一覧
files[].url○音声ファイルのURL
files[].content_idユーザー定義の識別子
parameters.d○全ファイルに共通する音声認識パラメータ
parameters.c全ファイルに共通する音声フォーマット名
tip

dパラメータには、通常の非同期 HTTP インタフェースと同じ形式の音声認識パラメータを指定できます。詳細はリクエストパラメータを参照してください。

grammarFileNames=-a-general

指定した値は、バッチ内のすべてのファイルに共通して適用されます。

cパラメータで音声フォーマット名を指定する場合も、バッチ内のすべてのファイルに共通して適用されます。音声フォーマット名を指定する場合(ヘッダなしの音声フォーマットのデータを使用する場合)は、バッチ内のすべてのファイルのフォーマットを揃えてください。

multipart 形式によるリクエスト​

音声ファイルの URL 一覧は、multipart/form-data形式でも指定できます。

multipart 形式では、音声ファイルを添付するのではなく、URL 一覧を JSON 配列文字列としてaパラメータに指定します。

以下は curl によるリクエストの例です。

curl --request POST \
'https://acp-api-async.amivoice.com/v2/batch-recognitions' \
--form 'u={API_KEY}' \
--form 'a=[{"url":"https://example.com/audio.wav","content_id":"123"}]' \
--form 'd=grammarFileNames=-a-general'
リクエストパラメータ​
パラメータ必須説明
u△APIキー。Authorizationヘッダーの代わりに指定できます
a○音声ファイル一覧を表すJSON配列文字列
d○全ファイルに共通する音声認識パラメータ
c全ファイルに共通する音声フォーマット名

通常の非同期 HTTP インタフェースとは異なり、aパラメータは最後でなくても構いません。

tip

認証情報は、uパラメータのかわりに Authorization ヘッダーにBearer {API キー}の形式でも指定できます。この場合、uパラメータは省略できます。両方を指定した場合は、同じAPIキーである必要があります。

tip

dパラメータには、非同期 HTTP インタフェースと同じ形式の音声認識パラメータを指定できます。詳細はリクエストパラメータを参照してください。

grammarFileNames=-a-general

指定した値は、バッチ内のすべてのファイルに共通して適用されます。

a パラメータの形式​

aには、認識対象ファイルの一覧を JSON 配列文字列として指定します。JSON 形式の場合のfiles配列に相当します。

[
{
"url": "https://example.com/audio-1.wav",
"content_id": "123"
},
{
"url": "https://example.com/audio-2.wav"
}
]

各要素には以下を指定できます。

項目必須説明
url○音声ファイルを取得する HTTPS URL
content_idユーザー定義の識別子

レスポンス​

レスポンス形式は、リクエストが JSON 形式の場合も multipart 形式の場合も同じです。すべてのファイルを受け付けた場合は、HTTP ステータス 202 を返します。

{
"batch_id": "xxxxxxxx",
"files": [
{
"url": "https://example.com/audio-1.wav",
"status": "submitted",
"session_id": null,
"content_id": "file001"
}
]
}
レスポンス項目​
項目説明
batch_idバッチを識別するID
files[].url登録した URL からクエリ文字列を取り除いたもの
files[].status現在の状態
files[].session_id対応するsession_id
files[].content_idユーザー定義の識別子
一部のファイルでエラーが発生した場合​

一部の URL が無効であっても、他の有効な URL は処理されます。URL やcontent_idが 1 件でも無効な場合は、HTTP ステータス 207 を返します。すべてのファイルが無効な場合も 207 を返し、batch_idも発行されます。

レスポンス例:

{
"batch_id": "xxxxxxxx",
"files": [
{
"url": "https://example.com/audio-1.wav",
"status": "submitted",
"session_id": null
},
{
"url": "http://example.com/audio-2.wav",
"status": "error",
"session_id": null,
"error_message": "url must be an HTTPS URL"
}
]
}

指定する URL について​

指定する URL は HTTPS でアクセス可能である必要があります。

以下は利用できる URL の例です。

  • 公開 URL
  • Amazon S3 Presigned URL
  • Azure Blob Storage SAS URL
  • Google Cloud Storage などの Signed URL

登録可能なファイル数​

1 回のリクエストで最大 90 ファイルまで登録できます。

content_id​

各音声ファイルには、任意の識別子としてcontent_idを設定できます。

{
"url": "https://example.com/audio.wav",
"content_id": "customer001"
}

指定したcontent_idはレスポンスにも含まれるため、アプリケーション側でのファイル管理や認識結果との対応付けに利用できます。

2. バッチの状態を確認する​

バッチの状態を確認します。

リクエスト​

GET https://acp-api-async.amivoice.com/v2/batch-recognitions/{batch_id}
Authorization: Bearer {APIキー}

curlの例:

curl -H "Authorization: Bearer {APIキー}" \
https://acp-api-async.amivoice.com/v2/batch-recognitions/{batch_id}

レスポンス例​

{
"batch_id": "<batch_id>",
"files": [
{
"url": "https://example.com/audio-1.wav",
"status": "processing",
"session_id": "<session_id>",
"content_id": "123"
},
{
"url": "https://example.com/audio-2.mp3",
"status": "submitted",
"session_id": null
}
]
}
ファイルの状態​
状態説明
submitted受付済み
queued認識処理待ち
started認識処理開始
processing認識処理中
completed認識処理完了
errorエラー
deletedsession_idは発行済みだが、認識ジョブが削除・期限切れなどで見つからない状態

session_id について​

音声ファイルごとに session_id が発行されます。

session_idが発行された後は、通常の非同期 HTTP インタフェースと同じ方法で音声認識ジョブの状態や認識結果を取得できます。詳しい取得手順は音声認識ジョブの状態をチェックし、結果を取得するを参照してください。

3. 音声認識結果を取得する​

音声認識結果の取得方法は、通常の非同期 HTTP インタフェースと同じです。

リクエスト​

GET https://acp-api-async.amivoice.com/v2/recognitions/{session_id}
Authorization: Bearer {APIキー}

curlの例:

curl \
-H "Authorization: Bearer {APIキー}" \
https://acp-api-async.amivoice.com/v2/recognitions/{session_id}

認識結果のフォーマットについては、音声認識の結果を参照してください。

エラー​

本APIでは、エラーの発生箇所によって返却形式が異なります。

発生箇所エラー項目
Batch API の HTTP エラーerrorCode, errorMessage
ファイル単位の処理エラーerror_code, error_message
音声認識処理エラーレスポンスコードとメッセージを参照

Batch API の HTTP エラー​

Batch API へのリクエストに問題がある場合や、サーバー側でエラーが発生した場合は、以下の HTTP エラーが返されます。

HTTP ステータスerrorMessage主な原因
400Invalid batch requestリクエスト形式不正、必須項目不足、files が空、登録件数超過など
401No authorization headerバッチの状態確認で Authorization ヘッダーを指定していない
401Invalid authorization header formatAuthorization ヘッダーがBearerの形式でない
401Invalid authentication credentialsAuthorization ヘッダーの API キーの形式が不正
401Conflicting API keys複数箇所で異なる API キーを指定した
401Failed to authorize for the API keyバッチの作成で API キーを指定していない、または API キーの認証に失敗した
404Not Found指定した batch_id が存在しない、またはこの API キーで参照できるバッチではない
405Method Not Allowedサポートされていない HTTP メソッドを使用した
415Unsupported media typeサポートされていない Content-Type を指定した
500Internal server errorサーバー内部、または認証サービスでエラーが発生した
503Service temporarily unavailable一時的にサービスを利用できない

登録時の URL と content_id の検証エラー​

登録時の音声ファイルの URL やcontent_idに問題がある場合、該当ファイルはエラーとなります。

すべてのファイルがエラーの場合でも、バッチは作成されます。

レスポンス例:

{
"batch_id": "<batch_id>",
"files": [
{
"url": "https://example.com/audio.wav",
"status": "submitted",
"session_id": null
},
{
"url": "http://example.com/audio.wav",
"status": "error",
"session_id": null,
"error_message": "url must be an HTTPS URL"
}
]
}

error_messageと原因:

error_message原因
url must be an HTTPS URLHTTPS 以外の URL を指定した、または URL 形式が不正
could not resolve the URL host to an IP addressホスト名の DNS 解決に失敗した
url host resolves to a disallowed networkプライベート IP アドレスやループバックアドレスなど、利用できないアドレスが指定された
invalid parameter (content_id)content_id に半角スペースが含まれる

ファイル単位のエラー​

ファイル単位のエラーでは、処理段階に応じて error_code や error_message が返されます。登録時の URL や content_id の検証エラーには error_code は含まれず、error_message が返されます。以下は、error_code も含まれる処理エラーの例です。

{
"url": "https://example.com/audio.wav",
"status": "error",
"session_id": null,
"error_code": "^",
"error_message": "invalid parameter"
}

音声認識処理におけるエラーコードおよびエラーメッセージの詳細については、レスポンスコードとメッセージを参照してください。

共通パラメータエラーについて​

dパラメータはバッチ内のすべてのファイルに共通して適用されます。

例外として、dを省略した場合やdにエンジンモードの指定がない場合は、バッチを作成しません。このときは HTTP ステータス 200 で次のレスポンスを返し、batch_idは含まれません。この確認は、API キーが有効かどうかの確認より先に行います。ただし、API キーの未指定、Authorization ヘッダーの形式の誤り、複数の場所の API キーの不一致は、先に HTTP ステータス 401 を返します。

{
"results": [
{
"tokens": [],
"tags": [],
"rulename": "",
"text": ""
}
],
"text": "",
"code": "-",
"message": "received illegal service authorization"
}

それ以外の音声認識パラメータの不正は、各ファイルの認識処理時に判定され、ファイル単位のエラーとして返される場合があります。

例:

{
"batch_id": "xxxxxxxx",
"files": [
{
"url": "https://example.com/audio-1.wav",
"content_id": "file-1",
"status": "error",
"session_id": null,
"error_code": "^",
"error_message": "invalid parameter (loggingOptOut)"
},
{
"url": "https://example.com/audio-2.wav",
"content_id": "file-2",
"status": "error",
"session_id": null,
"error_code": "^",
"error_message": "invalid parameter (loggingOptOut)"
}
]
}

バッチ内の複数ファイルで同じエラーが発生している場合は、共通のdに問題がないか確認してください。

制限事項​

  • URL は HTTPS でアクセス可能である必要があります
  • 1 回のリクエストで登録できる音声ファイル数は最大 90 件です
  • 音声ファイルサイズは 2,147,483,647 バイト (約 2 GiB) 以下である必要があります
  • 音声認識結果の保存期間は、非同期 HTTP インタフェースと同じです