録音ファイル認識は、非同期タスクを使用して録音された音声をテキストに変換します。HTTP または HTTPS 経由でダウンロード可能なファイル URL を送信すると、ポーリングまたはコールバックによって結果を取得できます。ローカルファイルは直接送信できません。
課金とサービスバージョン
録音ファイル認識には、トライアル版と商用版があります。課金ルールについては、「課金」をご参照ください。
新しい統合では、タスクパラメーターで version="4.0" を明示的に設定してください。このバージョンでは、ポーリングとコールバックの結果に同じキャメルケースのフィールドが使用されます。レガシーなコールバック形式については、「レガシーバージョンの互換性」をご参照ください。
制限事項
ファイル要件
WAV、MP3、M4A、WMA、AAC、OGG、AMR、FLAC 形式の録音ファイルがサポートされています。最大ファイルサイズは 512 MB です。WAV および MP3 ファイルは、シングルチャネルおよびデュアルチャネルの音声をサポートします。
音声の言語とサンプルレートは、プロジェクトに設定された ASR モデルと一致する必要があります。モデルの選択とサポートされているモデルについては、「言語とモデル」をご参照ください。
録音ファイルは、サービスがアクセスできるファイルサーバーに保存してください。URL のホストには IP アドレスではなくドメイン名を使用してください。URL にスペースを含めることはできません。URL に中国語の文字を使用することは避けてください。
ファイルの保存には Alibaba Cloud Object Storage Service (OSS) を推奨します。公開読み取りファイルの場合は、アクセス可能なファイル URL を使用してください。非公開ファイルの場合は、サービスがファイルをダウンロードする間有効な署名付き URL を使用してください。手順については、「署名付き URL を使用したファイルのダウンロードまたはプレビュー」をご参照ください。
自己ホスト型のファイルサーバーの場合、HTTP レスポンスヘッダーの Content-Length が実際のレスポンスボディの長さと一致することを確認してください。
|
有効な URL |
無効な URL |
|
https://gw.alipayobjects.com/os/bmw-prod/0574ee2e-f494-45a5-820f-63aee583045a.wav |
|
リクエストレートとタスク保持
認識結果クエリのユーザーレベルの QPS 制限は 100 です。
レート制限を超えたリクエストは Throttling.User を返します。ポーリング間隔を設定してリクエストレートを制御してください。
無料ユーザーは、1 日あたり最大 2 時間の録画ファイルを認識できます。
送信後、無料ユーザーのタスクは 24 時間以内に完了し、有料ユーザーのタスクは 6 時間以内に完了します。認識結果はサーバーに 72 時間保持されます。
これらの処理時間は、30 分以内に 500 時間以上の録音を送信するなどの大規模なバッチ処理には適用されません。大規模な認識要件については、プリセールススペシャリストにお問い合わせください。
ワークフロー
音声の言語とサンプルレートに基づいて、プロジェクトの ASR モデルを設定します。
録音ファイルのダウンロード可能な URL を準備します。
POST リクエストを使用して
SubmitTaskを呼び出し、Taskパラメーターでタスク設定を渡します。送信が成功すると、JSON レスポンスのトップレベルのTaskIdフィールドにタスク ID が返されます。結果を取得します:ポーリングの場合は、この
TaskIdを使用してGetTaskResultを呼び出します。コールバックの場合は、enable_callback=trueとcallback_urlを設定します。タスクが完了すると、サービスは POST を使用してコールバック URL に結果を送信します。
インタラクションフロー
以下の図は、クライアントとサーバー間のインタラクションを示しています。タスク ID は JSON レスポンスの TaskId フィールドで返されます。

API 設定
このサービスは、AccessKey 署名によって認証される RPC スタイルの POP API を提供します。SubmitTask は POST を使用し、GetTaskResult は GET を使用します。SDK 設定で使用されるプロダクト名は nls-filetrans です。リージョン、エンドポイント、API 日付バージョンを次のように設定します:
| リージョン | regionId / endpointName | domain | API 日付バージョン (Version) |
|---|---|---|---|
| シンガポール | ap-southeast-1 | filetrans.ap-southeast-1.aliyuncs.com | 2019-08-23 |
API 日付バージョン Version は POP リクエストを設定します。タスクパラメーター内の小文字の version は、録音ファイル認識サービスのバージョンを選択します。
リクエストパラメーター
タスクの送信:SubmitTask
以下の JSON オブジェクトを文字列としてシリアライズし、POST リクエストの Task パラメーターとして渡します。この例では、valid_times は認識を指定された間隔に制限します。ファイル全体を認識するには、このフィールドを省略します。
nls-sample-en-16k.wav サンプルをダウンロードし、サービスが HTTP または HTTPS 経由でアクセスできる場所にアップロードしてください。以下の例の file_link をそのファイル URL に置き換えてください。
{
"appkey": "your-appkey",
"file_link": "https://your-domain.example/nls-sample-en-16k.wav",
"auto_split": false,
"version": "4.0",
"enable_words": false,
"enable_sample_rate_adaptive": true,
"valid_times": [
{
"begin_time": 0,
"end_time": 3049,
"channel_id": 0
}
]
}
Task フィールド
|
パラメーター |
タイプ |
必須 |
説明 |
|
appkey |
String |
はい |
プロジェクトの Appkey。プロジェクトに設定された ASR モデルは、音声の言語とサンプルレートに一致する必要があります。 |
|
file_link |
String |
はい |
録音ファイルの HTTP または HTTPS ダウンロード URL。サービスはこの URL からファイルをダウンロードできる必要があります。 |
|
version |
String |
いいえ |
タスクが使用するサービスバージョン。デフォルト:2.0。新しい統合では、このパラメーターを明示的に 4.0 に設定してください。コールバック形式の互換性については、「レガシーバージョンの互換性」をご参照ください。 |
|
enable_words |
Boolean |
いいえ |
単語情報を返すかどうかを指定します。デフォルト:false。この機能を有効にするには、version を 4.0 に設定します。 |
|
enable_sample_rate_adaptive |
Boolean |
いいえ |
16 kHz を超えるサンプルレートの音声を自動的に 16 kHz にダウンサンプリングするかどうかを指定します。デフォルト:false。この機能を有効にするには、version を 4.0 に設定します。 |
|
enable_callback |
Boolean |
いいえ |
コールバックを有効にするかどうかを指定します。デフォルト:false。 |
|
callback_url |
String |
いいえ |
コールバック URL。enable_callback が true の場合に必須です。HTTP と HTTPS がサポートされています。ホストには IP アドレスではなくドメイン名を使用してください。コールバックサービスは POST リクエストを受け入れる必要があります。 |
|
auto_split |
Boolean |
いいえ |
話者ダイアライゼーションを有効にするかどうかを指定します。各文の ChannelId はその話者を識別します。通常、最初の話者の ChannelId は 0 です。この機能では 8 kHz のシングルチャンネルオーディオがサポートされています。 |
| enable_unify_post | Boolean | いいえ | 後処理を有効にするかどうかを指定します。デフォルト:false。auto_split と enable_unify_post の両方を true にすることはできません。 |
|
enable_inverse_text_normalization |
Boolean |
いいえ |
逆テキスト正規化 (ITN) を有効にして、中国語の数詞をアラビア数字に変換するかどうかを指定します。デフォルト:false。この機能を有効にするには、version を 4.0 に設定し、enable_unify_post を true に設定します。ITN は単語情報には適用されません。 |
|
enable_disfluency |
Boolean |
いいえ |
言い淀み除去を有効にするかどうかを指定します。デフォルト:false。この機能を有効にするには、version を 4.0 に設定し、enable_unify_post を true に設定します。 |
|
valid_times |
List< ValidTime > |
いいえ |
有効な時間間隔のリスト。指定された音声セグメントのみが認識されます。各要素のフィールドについては、以下の ValidTime フィールドをご参照ください。 |
|
max_end_silence |
Integer |
いいえ |
文末のサイレンスの最大値。デフォルト: 450 ms。 |
|
max_single_segment_time |
Integer |
いいえ |
文の最大持続時間。最小値: 10000 ms。デフォルト: 20000 ms。 |
|
customization_id |
String |
いいえ |
POP API を使用して作成されたカスタム言語モデルの ID。デフォルトでは省略されます。 |
|
class_vocabulary_id |
String |
いいえ |
クラス語彙の ID。デフォルトでは省略されます。 |
|
vocabulary_id |
String |
いいえ |
一般語彙の ID。デフォルトでは省略されます。 |
ValidTime フィールド
valid_times の各要素には、以下のフィールドが含まれます:
|
パラメーター |
タイプ |
必須 |
説明 |
|
begin_time |
Int |
はい |
有効な時間範囲の開始オフセット。単位:ミリ秒。 |
|
end_time |
Int |
はい |
有効な時間範囲の終了オフセット。単位:ミリ秒。 |
|
channel_id |
Int |
はい |
有効な時間範囲が適用されるトラックのインデックス。インデックスは 0 から始まります。 |
結果のクエリ:GetTaskResult
送信時に返されたタスク ID を GET リクエストの TaskId パラメーターとして渡します。リクエストレート制限に従ってクエリ間隔を設定してください。
|
パラメーター |
タイプ |
必須 |
説明 |
|
TaskId |
String |
はい |
認識タスク ID。 |
レスポンスパラメーター
HTTP ステータスは API リクエストがどのように処理されたかを示します。タスクの認識ステータスは、JSON レスポンスの StatusCode と StatusText によって報告されます。
送信レスポンス
送信が成功すると、次の JSON が返されます:
{
"TaskId": "4b56f0c4b7e611e88f34c33c2a60****",
"RequestId": "E4B183CC-6CFE-411E-A547-D877F7BD****",
"StatusText": "SUCCESS",
"StatusCode": 21050000
}
|
パラメーター |
タイプ |
必須 |
説明 |
|
TaskId |
String |
はい |
認識タスク ID。 |
|
RequestId |
String |
はい |
リクエスト ID。統合テストにのみ使用されます。 |
|
StatusCode |
Int |
はい |
ステータスコード。 |
|
StatusText |
String |
はい |
ステータスの説明。 |
クエリレスポンス
成功
次の例は、シングルチャネルの英語録音 nls-sample-en-16k.wav の認識結果を示しています。
{
"TaskId": "7a200beed1f111f1a112b5efb07c****",
"RequestId": "01A17CE9-B0EC-3FE4-B2EA-10C59979****",
"StatusText": "SUCCESS",
"BizDuration": 3049,
"SolveTime": 1793097051064,
"StatusCode": 21050000,
"Result": {
"Sentences": [
{
"EndTime": 1630,
"SilenceDuration": 0,
"BeginTime": 0,
"Text": "today is monday",
"ChannelId": 0,
"SpeechRate": 73,
"EmotionValue": 6.0
},
{
"EndTime": 3030,
"SilenceDuration": 0,
"BeginTime": 1810,
"Text": "the weather is nice",
"ChannelId": 0,
"SpeechRate": 147,
"EmotionValue": 6.3
}
]
}
}
キューイング中
認識はまだ開始されていません。再度クエリする前に待機してください。
{
"TaskId": "c7274235b7e611e88f34c33c2a60****",
"RequestId": "981AD922-0655-46B0-8C6A-5C836822****",
"StatusText": "QUEUEING",
"StatusCode": 21050002
}
実行中
認識は進行中です。再度クエリする前に待機してください。
{
"TaskId": "c7274235b7e611e88f34c33c2a60****",
"RequestId": "8E908ED2-867F-457E-82BF-4756194A****",
"StatusText": "RUNNING",
"BizDuration": 0,
"StatusCode": 21050001
}
失敗
次の例は、ファイルのダウンロード失敗を示しています。エラーを処理するには StatusCode と StatusText を使用してください。
{
"TaskId": "4cf25b7eb7e711e88f34c33c2a60****",
"RequestId": "098BF27C-4CBA-45FF-BD11-3F532F26****",
"StatusText": "FILE_DOWNLOAD_FAILED",
"BizDuration": 0,
"SolveTime": 1536906469146,
"StatusCode": 41050002
}
レスポンスフィールド
Sentences と Words は Result オブジェクトに含まれます。
|
パラメーター |
タイプ |
必須 |
説明 |
|
TaskId |
String |
はい |
認識タスク ID。 |
|
StatusCode |
Int |
はい |
ステータスコード。 |
|
StatusText |
String |
はい |
ステータスの説明。 |
|
RequestId |
String |
はい |
デバッグに使用されるリクエスト ID。 |
|
Result |
Object |
いいえ |
タスクが成功したときに返される認識結果オブジェクト。キューイング中、実行中、または失敗したタスクのレスポンスには含まれません。 |
|
Sentences |
List< SentenceResult > |
いいえ |
Result 内の文の結果。StatusText が SUCCESS の場合に返されます。 |
|
Words |
List< WordResult > |
いいえ |
Result 内の単語情報。enable_words が true で version が 4.0 の場合に返されます。 |
|
BizDuration |
Long |
いいえ |
認識された音声の持続時間 (ミリ秒)。 |
|
SolveTime |
Long |
いいえ |
認識が完了したときの UNIX タイムスタンプ (ミリ秒)。タスクが完了する前は返されません。 |
Sentences フィールド
|
パラメーター |
タイプ |
必須 |
説明 |
|
ChannelId |
Int |
はい |
文のトラック ID。 |
|
BeginTime |
Int |
はい |
文の開始オフセット。単位:ミリ秒。 |
|
EndTime |
Int |
はい |
文の終了オフセット。単位:ミリ秒。 |
|
Text |
String |
はい |
文の認識されたテキスト。 |
|
EmotionValue |
Float |
はい |
感情エネルギー値。デシベル単位の音量を 10 で割って計算されます。有効範囲:1 から 10。 |
|
SilenceDuration |
Int |
はい |
この文と前の文の間の無音時間。単位:秒。 |
|
SpeechRate |
Int |
はい |
文の平均発話速度。
|
コールバック結果
enable_callback=true、callback_url、および version="4.0" が設定されている場合、タスクが完了するとサービスはコールバック URL に POST リクエストを送信します。認識結果のフィールドは、ポーリングによって返されるものと同じです:
{
"Result": {
"Sentences": [
{
"EndTime": 1630,
"SilenceDuration": 0,
"BeginTime": 0,
"Text": "today is monday",
"ChannelId": 0,
"SpeechRate": 73,
"EmotionValue": 6.0
},
{
"EndTime": 3030,
"SilenceDuration": 0,
"BeginTime": 1810,
"Text": "the weather is nice",
"ChannelId": 0,
"SpeechRate": 147,
"EmotionValue": 6.3
}
]
},
"TaskId": "36d01b244ad811e9952db7bb7ed2****",
"StatusCode": 21050000,
"StatusText": "SUCCESS",
"RequestTime": 1553062810452,
"SolveTime": 1553062810831,
"BizDuration": 3049
}
RequestTime はタスク送信の UNIX タイムスタンプであり、SolveTime は認識が完了したときの UNIX タイムスタンプです。どちらもミリ秒単位です。
単語情報
enable_words=true と version="4.0" が設定されている場合、結果には Words が含まれます。ポーリングとコールバックは同じ単語情報を返します。次の例は、同じ英語の録音の結果を示しています:
{
"TaskId": "2e6a076bd1f111f1b005ad4b8dcd****",
"RequestId": "01A17CE7-CD86-32AC-8F5A-AAFD425A****",
"StatusText": "SUCCESS",
"BizDuration": 3049,
"SolveTime": 1793096926573,
"StatusCode": 21050000,
"Result": {
"Words": [
{
"Word": "today",
"EndTime": 600,
"BeginTime": 270,
"ChannelId": 0
},
{
"Word": "is",
"EndTime": 810,
"BeginTime": 600,
"ChannelId": 0
},
{
"Word": "monday",
"EndTime": 1080,
"BeginTime": 810,
"ChannelId": 0
},
{
"Word": "the",
"EndTime": 2020,
"BeginTime": 1900,
"ChannelId": 0
},
{
"Word": "weather",
"EndTime": 2290,
"BeginTime": 2020,
"ChannelId": 0
},
{
"Word": "is",
"EndTime": 2560,
"BeginTime": 2290,
"ChannelId": 0
},
{
"Word": "nice",
"EndTime": 2650,
"BeginTime": 2560,
"ChannelId": 0
}
],
"Sentences": [
{
"EndTime": 1630,
"SilenceDuration": 0,
"BeginTime": 0,
"Text": "today is monday",
"ChannelId": 0,
"SpeechRate": 73,
"EmotionValue": 6.0
},
{
"EndTime": 3030,
"SilenceDuration": 0,
"BeginTime": 1810,
"Text": "the weather is nice",
"ChannelId": 0,
"SpeechRate": 147,
"EmotionValue": 6.3
}
]
}
}
単語フィールド
|
パラメーター |
タイプ |
必須 |
説明 |
|
BeginTime |
Int |
はい |
単語の開始時刻。単位:ミリ秒。 |
|
EndTime |
Int |
はい |
単語の終了時刻。単位:ミリ秒。 |
|
ChannelId |
Int |
はい |
単語のトラック ID。 |
|
Word |
String |
はい |
単語のテキスト。 |
タスクのステータスとエラー処理
| StatusCode | StatusText | 説明 |
|---|---|---|
| 21050000 | SUCCESS | SubmitTask:タスクは正常に送信されました。GetTaskResult:認識は成功しました。 |
| 21050001 | RUNNING | 認識は進行中です。再度クエリする前に待機してください。 |
| 21050002 | QUEUEING | タスクはキューイング中です。再度クエリする前に待機してください。 |
| 21050003 | SUCCESS_WITH_NO_VALID_FRAGMENT | タスクは完了しましたが、有効な音声セグメントは検出されませんでした。ファイルに有効な音声が含まれているか確認してください。 |
エラーコード
| ステータスコード | ステータスメッセージ | 原因と解決策 |
|---|---|---|
| 41050001 | USER_BIZDURATION_QUOTA_EXCEED | 1 日の認識時間制限を超えました。より大きなワークロードが必要な場合は、nls_support@service.aliyun.com の営業担当者にお問い合わせください。 |
| 41050002 | FILE_DOWNLOAD_FAILED | ファイルをダウンロードできませんでした。URL と、サービスがファイルをダウンロードできるかどうかを確認してください。 |
| 41050003 | FILE_CHECK_FAILED | ファイル形式が要件を満たしていません。サポートされている録音形式を使用してください。 |
| 41050004 | FILE_TOO_LARGE | ファイルが大きすぎます。録音ファイルが 512 MB を超えていないか確認してください。 |
| 41050005 | FILE_NORMALIZE_FAILED | ファイルの正規化に失敗しました。ファイルが破損していないか、再生できるかを確認してください。 |
| 41050006 | FILE_PARSE_FAILED | ファイルの解析に失敗しました。ファイルが破損していないか、再生できるかを確認してください。 |
| 41050007 | MKV_PARSE_FAILED | MKV の解析に失敗しました。ファイルが破損していないか、再生できるかを確認してください。 |
| 41050008 | UNSUPPORTED_SAMPLE_RATE | 音声のサンプルレートがプロジェクトモデルと一致しません。音声のサンプルレートが Appkey に関連付けられたプロジェクトに設定された ASR モデルと一致するか確認してください。 |
| 41050009 | UNSUPPORTED_ASR_GROUP | ASR グループはサポートされていません。Appkey と、それが署名に使用された AccessKey と同じアカウントに属しているかを確認してください。 |
| 41050010 | FILE_TRANS_TASK_EXPIRED | TaskId が存在しないか、タスクが期限切れです。タスク ID と結果の保持時間を確認してください。 |
| 41050011 | REQUEST_INVALID_FILE_URL_VALUE | file_link が無効です。ファイル URL の形式とアクセシビリティを確認してください。 |
| 41050012 | REQUEST_INVALID_CALLBACK_VALUE | callback_url が無効です。コールバックが有効な場合は、有効なコールバック URL を提供してください。 |
| 41050013 | REQUEST_PARAMETER_INVALID | タスクパラメーターが無効です。Task は有効な JSON 文字列である必要があります。 |
| 41050014 | REQUEST_EMPTY_APPKEY_VALUE | appkey が空です。プロジェクトの Appkey を指定してください。 |
| 41050015 | REQUEST_APPKEY_UNREGISTERED | Appkey が登録されていないか、一致しません。Appkey と、それが署名に使用された AccessKey と同じアカウントに属しているかを確認してください。 |
| 41050021 | RAM_CHECK_FAILED | RAM 権限チェックに失敗しました。RAM ユーザーに音声サービス API を呼び出す権限を付与してください。 |
| 41050023 | CONTENT_LENGTH_CHECK_FAILED | HTTP レスポンスの Content-Length が実際のファイルサイズと一致しません。ファイルサーバーのレスポンスヘッダーを修正してください。 |
| 41050024 | FILE_404_NOT_FOUND | ダウンロードするファイルが存在しません。ファイル URL を確認してください。 |
| 41050025 | FILE_403_FORBIDDEN | 権限が不十分なため、ファイルをダウンロードできません。録音ファイルをダウンロードする権限があるか確認してください。 |
| 41050026 | FILE_SERVER_ERROR | ファイルサーバーが利用できません。ファイルサーバーが利用可能か確認してください。 |
| 51050000 | INTERNAL_ERROR | 内部サービスエラーが発生しました。散発的なエラーは無視できます。エラーが繰り返し発生する場合は、テクニカルサポートにお問い合わせください。 |
| 51050001 | VAD_FAILED | 音声アクティビティ検出に失敗しました。散発的なエラーは無視できます。エラーが繰り返し発生する場合は、テクニカルサポートにお問い合わせください。 |
| 51050002 | RECOGNIZE_FAILED | 認識に失敗しました。散発的なエラーは無視できます。エラーが繰り返し発生する場合は、テクニカルサポートにお問い合わせください。 |
| 51050003 | RECOGNIZE_INTERRUPT | 認識が中断されました。散発的なエラーは無視できます。エラーが繰り返し発生する場合は、テクニカルサポートにお問い合わせください。 |
| 51050004 | OFFER_INTERRUPT | キューへの書き込みが中断されました。散発的なエラーは無視できます。エラーが繰り返し発生する場合は、テクニカルサポートにお問い合わせください。 |
| 51050005 | FILE_TRANS_TIMEOUT | タスク処理がタイムアウトしました。散発的なエラーは無視できます。エラーが繰り返し発生する場合は、テクニカルサポートにお問い合わせください。 |
| 51050006 | FRAGMENT_FAILED | 音声セグメンテーションに失敗しました。散発的なエラーは無視できます。エラーが繰り返し発生する場合は、テクニカルサポートにお問い合わせください。 |
言語とモデル
プロジェクトの言語モデルと方言モデルを設定します。これらはこの API のタスクパラメーターを通じて選択することはできません。カスタム言語モデルとホットワードがサポートされています。詳細については、「言語モデルのカスタマイズ」および「ホットワード」をご参照ください。
Intelligent Speech Interaction コンソールの[すべてのプロジェクト] ページで、対象のプロジェクトを選択し、[プロジェクト設定] を開きます。[構成の変更] で、[ASR モデルの選択] を使用して、サンプルレートに一致するモデルを選択します。サンプルレートが 8 kHz または 16 kHz のモデルが利用可能です。プロジェクト構成のモデルオプションをご参照ください。手順については、「プロジェクトの管理」をご参照ください。
レガシーバージョンの互換性
version="2.0" のタスクのコールバック結果は、バージョン 4.0 で使用されるキャメルケースのフィールドではなく、スネークケースのフィールドを使用します。レガシーなコールバック形式を解析するアプリケーションは、4.0 にアップグレードする際にフィールドの解析を更新する必要があります。次の例は、レガシーなコールバック形式を示しています:
{
"result": [
{
"end_time": 1630,
"silence_duration": 0,
"begin_time": 0,
"text": "today is monday",
"channel_id": 0,
"speech_rate": 73,
"emotion_value": 6.0
},
{
"end_time": 3030,
"silence_duration": 0,
"begin_time": 1810,
"text": "the weather is nice",
"channel_id": 0,
"speech_rate": 147,
"emotion_value": 6.3
}
],
"task_id": "3f5d4c0c399511e98dc025f34473****",
"status_code": 21050000,
"status_text": "SUCCESS",
"request_time": 1551164878830,
"solve_time": 1551164879230,
"biz_duration": 3049
}