このトピックでは、Qwen-Audio-3.0-ASR-Flash-Filetrans/Fun-ASR 非リアルタイム音声認識 Python SDK のパラメーターとインターフェイスについて説明します。
ユーザーガイド:非リアルタイム音声認識。サポートされている音声フォーマット、ファイルサイズの制限、持続時間の制限などの入力要件については、「音声仕様」をご参照ください。
前提条件
サービスを有効化し、API キーを取得済みであること。コードの漏洩によるセキュリティリスクを防ぐため、コードにハードコーディングするのではなく、API キーを環境変数として設定してください。
注記サードパーティのアプリケーションやユーザーに一時的なアクセスを提供する必要がある場合、または機密データへのアクセスや削除などの高リスク操作を厳密に制御したい場合は、一時的な認証トークンの使用を推奨します。
長期的な API キーと比較して、一時的な認証トークンは有効期間が短く (60 秒)、セキュリティが高いため、一時的な呼び出しシナリオに適しており、API キー漏洩のリスクを効果的に低減します。
使用方法:コード内で、認証に元々使用していた API キーを、取得した一時的な認証トークンに置き換えます。
クイックスタート
コアクラス (Transcription) は、タスクを非同期で送信し、タスクが完了するまで同期的に待機し、タスク結果を非同期でクエリするためのインターフェイスを提供します。非リアルタイム音声認識は、次のいずれかの方法で実行できます。
- タスクを非同期で送信し、同期的に待機する:タスクを送信した後、タスクが完了するまで現在のスレッドをブロックし、認識結果を返します。
- タスクを非同期で送信し、非同期で結果をクエリする:タスクを送信した後、必要なときにクエリインターフェイスを呼び出して結果を取得します。
非同期で送信し、同期的に待機
-
コアクラス (Transcription) の
async_callメソッドを呼び出し、リクエストパラメーターを設定します。注記
- ファイル文字起こしサービスは、API を介して送信されたタスクをベストエフォート方式で処理します。タスクを送信すると、キュー登録済み (
PENDING) 状態になります。キューの待機時間はキューの長さとファイルの持続時間によって異なり、正確には言えませんが、通常は数分以内です。処理が開始されると、音声認識はリアルタイムの数百倍の速度で完了します。 - 各タスクが完了した後、認識結果とダウンロード URL は 24 時間有効です。有効期限が切れると、以前のクエリで返された URL を介してタスクをクエリしたり、結果をダウンロードしたりすることはできなくなります。
- ファイル文字起こしサービスは、API を介して送信されたタスクをベストエフォート方式で処理します。タスクを送信すると、キュー登録済み (
-
コアクラス (Transcription) の
waitメソッドを呼び出して、タスクが完了するのを同期的に待機します。タスクは、
PENDING、RUNNING、SUCCEEDED、FAILEDのいずれかの状態になります。タスクがPENDINGまたはRUNNING状態の間、waitインターフェイスはブロックします。タスクがSUCCEEDEDまたはFAILED状態に達すると、waitインターフェイスはブロックを停止し、タスクの結果を返します。waitは TranscriptionResponse を返します。
クリックして完全な例を表示
from http import HTTPStatus
from dashscope.audio.asr import Transcription
import dashscope
import os
import json
# 以下はシンガポールリージョンの設定です。{WorkspaceId} を実際のワークスペース ID に置き換えてください。設定はリージョンによって異なります。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# シンガポールと北京リージョンの API キーは異なります。API キーの取得:https://www.alibabacloud.com/help/model-studio/get-api-key
# 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください:dashscope.api_key = "sk-xxx"
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")
task_response = Transcription.async_call(
model='qwen-audio-3.0-asr-flash-filetrans',
file_urls=['{YOUR_AUDIO_URL}']
)
transcribe_response = Transcription.wait(task=task_response.output.task_id)
if transcribe_response.status_code == HTTPStatus.OK:
print(json.dumps(transcribe_response.output, indent=4, ensure_ascii=False))
print('transcription done!')
非同期で送信し、非同期で結果をクエリ
-
コアクラス (Transcription) の
async_callメソッドを呼び出し、リクエストパラメーターを設定します。注記
- ファイル文字起こしサービスは、API を介して送信されたタスクをベストエフォート方式で処理します。タスクを送信すると、キュー登録済み (
PENDING) 状態になります。キューの待機時間はキューの長さとファイルの持続時間によって異なり、正確には言えませんが、通常は数分以内です。処理が開始されると、音声認識はリアルタイムの数百倍の速度で完了します。 - 各タスクが完了した後、認識結果とダウンロード URL は 24 時間有効です。有効期限が切れると、以前のクエリで返された URL を介してタスクをクエリしたり、結果をダウンロードしたりすることはできなくなります。
- ファイル文字起こしサービスは、API を介して送信されたタスクをベストエフォート方式で処理します。タスクを送信すると、キュー登録済み (
-
コアクラス (Transcription) の
fetchメソッドをループで呼び出し、最終的なタスク結果を取得します。タスクステータスが
SUCCEEDEDまたはFAILEDになったら、ポーリングを停止し、結果を処理します。fetchは TranscriptionResponse を返します。
クリックして完全な例を表示
from http import HTTPStatus
from dashscope.audio.asr import Transcription
import dashscope
import os
import json
# 以下はシンガポールリージョンの設定です。呼び出し時に、{WorkspaceId} を実際のワークスペース ID に置き換えてください。設定はリージョンによって異なります。
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# シンガポールと北京リージョンでは API キーが異なります。API キーの取得:https://www.alibabacloud.com/help/model-studio/get-api-key
# 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください:dashscope.api_key = "sk-xxx"
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")
transcribe_response = Transcription.async_call(
model='qwen-audio-3.0-asr-flash-filetrans',
file_urls=['{YOUR_AUDIO_URL}']
)
while True:
if transcribe_response.output.task_status == 'SUCCEEDED' or transcribe_response.output.task_status == 'FAILED':
break
transcribe_response = Transcription.fetch(task=transcribe_response.output.task_id)
if transcribe_response.status_code == HTTPStatus.OK:
print(json.dumps(transcribe_response.output, indent=4, ensure_ascii=False))
print('transcription done!')
サービスエンドポイント
デフォルトでは、SDK は北京リージョンのサービスエンドポイントを使用します。別のリージョンに切り替えるには、初期化の前に dashscope.base_http_api_url を変更します。
シンガポール
https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1
{WorkspaceId} を実際の ワークスペース ID に置き換えてください。
中国 (北京)
https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1
{WorkspaceId} を実際の ワークスペース ID に置き換えてください。
import dashscope
# コードの冒頭でこれを設定します
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
注:
- API キーはリージョンによって異なります。対応するリージョンの API キーを使用していることを確認してください。
- リージョン設定はグローバル設定であり、DashScope SDK を介して行われるすべての API 呼び出しに影響します。
リクエストパラメーター
コアクラス (Transcription) の async_call メソッドを介してリクエストパラメーターを設定します。
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
model | str | はい | モデル名。サポートされている値には、Qwen-Audio-3.0-ASR-Flash-Filetrans および Fun-ASR モデルファミリーが含まれます。詳細については、「サポートされているモデルとリージョン」をご参照ください。 |
file_urls | list[str] | はい | 文字起こしする音声または動画ファイルの URL のリスト。HTTP と HTTPS がサポートされています。1 回のリクエストでサポートされる URL は 1 つだけです。サポートされている音声フォーマット、ファイルサイズの制限、持続時間の制限などの入力要件については、「音声仕様」をご参照ください。 録音が Alibaba Cloud OSS に保存されている場合、RESTful API は 重要
|
vocabulary_id | str | いいえ | プリコンパイルされたホットワードリストの ID。 この ID は、ホットワードリスト作成 API を呼び出して事前に生成します。認識時に ID を渡して、リスト内のホットワードを使用します。 語彙が既知で比較的安定しており、リクエスト間で同じ単語リストを再利用する必要があるシナリオに適しています。 使用方法の詳細については、「プリコンパイル済みホットワード」をご参照ください。 |
vocabulary | dict | いいえ | 即時ホットワード。 キーと値のペアとして渡されます。キーはホットワードのテキスト ( 一時的な、セッションレベルのホットワード最適化に適しています。 プリコンパイル済みホットワードと一緒に設定した場合、即時ホットワードのみが有効になります。使用方法の詳細については、「即時ホットワード」をご参照ください。 重要 例: |
channel_id | list[int] | いいえ | マルチトラック音声ファイルで認識するオーディオトラックのインデックス。インデックスは 0 から始まります。たとえば、[0] は最初のトラックを認識し、[0, 1] は最初のトラックと 2 番目のトラックを同時に認識します。このパラメーターを省略すると、最初のトラックのみが処理されます。 重要指定された各トラックは個別に課金されます。たとえば、1 つのファイルに対して [0, 1] をリクエストすると、2 回分の料金が発生します。 デフォルト値:[0]。 |
special_word_filter | str | いいえ | 音声認識中に処理する禁止用語。禁止用語ごとに異なる処理方法を設定できます。詳細については、「禁止用語フィルター」をご参照ください。 |
diarization_enabled | bool | いいえ | 話者分離を有効にするかどうか。デフォルトでは無効です。 モノラル音声にのみ適用されます。マルチチャンネル音声は話者分離をサポートしていません。 有効にすると、認識結果に異なる話者を区別する 注記話者分離を有効にする場合、音声の持続時間を 2 時間以内にしてください。そうしないと、認識が失敗したり、タイムアウトしたりする可能性があります。 デフォルト値:False。
|
speaker_count | int | いいえ | 重要話者分離が有効な場合 ( 話者数の参照値。有効な範囲は 2 から 100 (両端を含む) の整数です。 デフォルトでは、話者数は自動的に検出されます。この値を設定した場合、アルゴリズムが可能な場合に指定された数を出力するように誘導するだけであり、正確な数が保証されるわけではありません。 デフォルト値なし。 |
language_hints | list[str] | いいえ | 認識する言語コード。事前に言語を特定できない場合は、設定せずにモデルが自動的に言語を検出するようにします。 Qwen-Audio-3.0-ASR-Flash-Filetrans モデルの場合、最大 4 つの値を設定できます。最初の 4 つを超える値は無視されます。Fun-ASR モデルの場合、1 つの値しか設定できません。複数設定した場合、最初の値のみが有効になります。 クリックしてサポートされている言語コードを表示
|
応答
TranscriptionResponse
TranscriptionResponse は、基本的なタスク情報 (task_id と task_status) とタスク結果 (output 属性のコンテンツ、TranscriptionOutput を参照) をラップします。
クリックして TranscriptionResponse 構造のサンプルを表示
{
"status_code":200,
"request_id":"251aceab-a6aa-9fc4-b7f7-0cc6d3e2a9f3",
"code":null,
"message":"",
"output":{
"task_id":"7d0a58a3-1dbe-4de9-8cff-5f48213128b0",
"task_status":"PENDING",
"submit_time":"2025-02-13 16:55:08.573",
"scheduled_time":"2025-02-13 16:55:08.592",
"task_metrics":{
"TOTAL":1,
"SUCCEEDED":0,
"FAILED":0
}
},
"usage":null
}
{
"status_code":200,
"request_id":"d9d530f1-853c-9848-a5f1-f5de59086ff7",
"code":null,
"message":"",
"output":{
"task_id":"6351feef-9694-45d2-9d32-63454f2ffb8d",
"task_status":"RUNNING",
"submit_time":"2025-02-13 17:31:20.681",
"scheduled_time":"2025-02-13 17:31:20.703",
"task_metrics":{
"TOTAL":1,
"SUCCEEDED":0,
"FAILED":0
}
},
"usage":null
}
{
"status_code":200,
"request_id":"16668704-6702-9e03-8ab7-a32a5d7bb095",
"code":null,
"message":"",
"output":{
"task_id":"6351feef-9694-45d2-9d32-63454f2ffb8d",
"task_status":"SUCCEEDED",
"submit_time":"2025-02-13 17:31:20.681",
"scheduled_time":"2025-02-13 17:31:20.703",
"end_time":"2025-02-13 17:31:21.867",
"results":[
{
"file_url":"{YOUR_AUDIO_URL}",
"transcription_url":"https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/prod/paraformer-v2/20250213/17%3A31/20ee4e4f-0404-4806-b617-c7d4c62eed19-1.json?Expires=1739525481&OSSAccessKeyId=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE",
"subtask_status":"SUCCEEDED"
}
],
"task_metrics":{
"TOTAL":1,
"SUCCEEDED":1,
"FAILED":0
}
},
"usage":{
"duration":9
}
}
{
"status_code":200,
"request_id":"16668704-6702-9e03-8ab7-a32a5d7bb095",
"code":null,
"message":"",
"output":{
"task_id": "7bac899c-06ec-4a79-8875-xxxxxxxxxxxx",
"task_status": "SUCCEEDED",
"submit_time": "2024-12-16 16:30:59.170",
"scheduled_time": "2024-12-16 16:30:59.204",
"end_time": "2024-12-16 16:31:02.375",
"results": [
{
"file_url": "{YOUR_AUDIO_URL}",
"code": "InvalidFile.DownloadFailed",
"message": "音声ファイルをダウンロードできません。",
"subtask_status": "FAILED"
}
],
"task_metrics": {
"TOTAL": 1,
"SUCCEEDED": 0,
"FAILED": 1
}
},
"usage":{
"duration":9
}
}
注意すべきパラメーター:
パラメーター | 説明 |
|---|---|
status_code | リクエストの HTTP ステータスコード。 |
code |
|
message |
|
task_id | タスク ID。 |
task_status | タスクステータス。
タスクに複数のサブタスクが含まれている場合、いずれかのサブタスクが成功すれば、全体のタスクステータスは |
results | サブタスクの認識結果。 |
subtask_status | サブタスクのステータス。
|
file_url | 認識された音声の URL。 |
transcription_url | 音声認識結果の URL。 認識結果は JSON ファイルとして保存されます。 |
TranscriptionOutput
TranscriptionOutput は、TranscriptionResponse の output 属性に対応し、現在のタスクの結果を表します。
クリックして TranscriptionOutput 構造のサンプルを表示
PENDING 状態
{
"task_id":"f2f7c2fa-0cd9-4bb2-a283-27b26ee4bb67",
"task_status":"PENDING",
"submit_time":"2025-02-13 17:59:27.754",
"scheduled_time":"2025-02-13 17:59:27.789",
"task_metrics":{
"TOTAL":1,
"SUCCEEDED":0,
"FAILED":0
}
}
RUNNING 状態
{
"task_id":"f2f7c2fa-0cd9-4bb2-a283-27b26ee4bb67",
"task_status":"RUNNING",
"submit_time":"2025-02-13 17:59:27.754",
"scheduled_time":"2025-02-13 17:59:27.789",
"task_metrics":{
"TOTAL":1,
"SUCCEEDED":0,
"FAILED":0
}
}
SUCCEEDED 状態
{
"task_id":"f2f7c2fa-0cd9-4bb2-a283-27b26ee4bb67",
"task_status":"SUCCEEDED",
"submit_time":"2025-02-13 17:59:27.754",
"scheduled_time":"2025-02-13 17:59:27.789",
"end_time":"2025-02-13 17:59:28.828",
"results":[
{
"file_url":"{YOUR_AUDIO_URL}",
"transcription_url":"https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/prod/paraformer-v2/20250213/17%3A59/70e737cc-bf8c-418b-b0c8-83fab192a0fa-1.json?Expires=1739527168&OSSAccessKeyId=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE",
"subtask_status":"SUCCEEDED"
}
],
"task_metrics":{
"TOTAL":1,
"SUCCEEDED":1,
"FAILED":0
}
}
FAILED 状態
「code」はエラーコード、「message」はエラーメッセージです。これら 2 つのフィールドは例外が発生した場合にのみ表示されます。これらを一緒に使用し、「エラーコード」を参照して問題をトラブルシューティングしてください。
{
"task_id": "7bac899c-06ec-4a79-8875-xxxxxxxxxxxx",
"task_status": "SUCCEEDED",
"submit_time": "2024-12-16 16:30:59.170",
"scheduled_time": "2024-12-16 16:30:59.204",
"end_time": "2024-12-16 16:31:02.375",
"results": [
{
"file_url": "{YOUR_AUDIO_URL}",
"code": "InvalidFile.DownloadFailed",
"message": "音声ファイルをダウンロードできません。",
"subtask_status": "FAILED"
}
],
"task_metrics": {
"TOTAL": 1,
"SUCCEEDED": 0,
"FAILED": 1
}
}
注意すべきパラメーター:
パラメーター | 説明 |
|---|---|
code | エラーコード。 |
message | エラーメッセージ。 |
task_id | タスク ID。 |
task_status | タスクステータス。
タスクに複数のサブタスクが含まれている場合、いずれかのサブタスクが成功すれば、全体のタスクステータスは |
results | サブタスクの認識結果。 |
subtask_status | サブタスクのステータス。
|
file_url | 認識された音声の URL。 |
transcription_url | 音声認識結果の URL。 認識結果は JSON ファイルとして保存されます。 |
認識結果の説明
認識結果は JSON ファイルとして保存されます。
クリックして認識結果の例を表示
{
"file_url":"{YOUR_AUDIO_URL}",
"properties":{
"audio_format":"pcm_s16le",
"channels":[
0
],
"original_sampling_rate":16000,
"original_duration_in_milliseconds":3834
},
"transcripts":[
{
"channel_id":0,
"content_duration_in_milliseconds":3720,
"text":"こんにちは世界、こちらはアリババスピーチラボです。",
"sentences":[
{
"begin_time":100,
"end_time":3820,
"text":"こんにちは世界、こちらはアリババスピーチラボです。",
"sentence_id":1,
"speaker_id":0, //このフィールドは自動話者分離が有効な場合にのみ表示されます
"words":[
{
"begin_time":100,
"end_time":596,
"text":"こんにちは ",
"punctuation":""
},
{
"begin_time":596,
"end_time":844,
"text":"世界",
"punctuation":", "
}
// 他のコンテンツはここで省略
]
}
]
}
]
}
以下のパラメーターは注目に値します:
パラメーター | タイプ | 説明 |
|---|---|---|
audio_format | string | ソースファイルの音声フォーマット。 |
channels | array[integer] | ソースファイル内の音声のトラックインデックス。シングルトラック音声の場合は [0] が返され、デュアルトラック音声の場合は [0, 1] が返されます。 |
original_sampling_rate | integer | ソースファイル内の音声のサンプリングレート (Hz)。 |
original_duration_in_milliseconds | integer | ソースファイル内の元の音声の持続時間 (ms)。 |
channel_id | integer | 文字起こし結果のトラックインデックス。0 から始まります。 |
content_duration | integer | 音声として識別されたトラック内のコンテンツの持続時間 (ms)。 音声認識モデルサービスは、音声として識別されたトラック内のコンテンツのみを文字起こしし、その持続時間に基づいて計測および課金します。非音声コンテンツは計測または課金されません。通常、音声コンテンツの持続時間は元の音声の持続時間よりも短くなります。音声コンテンツが存在するかどうかは AI モデルによって決定されるため、結果は実際の状況とわずかに異なる場合があります。 |
transcript | string | 段落レベルの文字起こし結果。 |
sentences | array | 文レベルの文字起こし結果。 |
words | array | 単語レベルの文字起こし結果。 |
begin_time | integer | 開始タイムスタンプ (ms)。 |
end_time | integer | 終了タイムスタンプ (ms)。 |
text | string | 文字起こし結果。 |
speaker_id | integer | 現在の話者のインデックス。0 から始まり、異なる話者を区別するために使用されます。 このフィールドは、話者分離が有効な場合にのみ認識結果に表示されます。 |
punctuation | string | 単語の後に予測された句読点 (もしあれば)。 |
主要なインターフェイス
コアクラス (Transcription)
Transcription を「from dashscope.audio.asr import Transcription」でインポートします。
| メソッド | シグネチャ | 説明 |
|---|---|---|
async_call | | 音声認識タスクを非同期で送信します。 |
wait | | 非同期タスクが完了するまで (タスクステータスが このメソッドは TranscriptionResponse を返します。 |
fetch | | 現在のタスクの結果を非同期でクエリします。 このメソッドは TranscriptionResponse を返します。 |
エラーコード
エラーが発生した場合は、「エラーコード」を参照してトラブルシューティングしてください。
タスクに複数のサブタスクが含まれている場合、少なくとも 1 つのサブタスクが成功すれば、全体のタスクステータスは SUCCEEDED とマークされます。各サブタスクの結果を判断するには、subtask_status フィールドを確認してください。
エラー応答の例:
{
"task_id": "7bac899c-06ec-4a79-8875-xxxxxxxxxxxx",
"task_status": "SUCCEEDED",
"submit_time": "2024-12-16 16:30:59.170",
"scheduled_time": "2024-12-16 16:30:59.204",
"end_time": "2024-12-16 16:31:02.375",
"results": [
{
"file_url": "{YOUR_AUDIO_URL}",
"code": "InvalidFile.DownloadFailed",
"message": "音声ファイルをダウンロードできません。",
"subtask_status": "FAILED"
}
],
"task_metrics": {
"TOTAL": 1,
"SUCCEEDED": 0,
"FAILED": 1
}
}
よくある質問
機能
Q:Base64 エンコードされた音声はサポートされていますか?
Base64 エンコードされた音声はサポートされていません。パブリックにアクセス可能な URL にある音声のみが認識できます。バイナリストリームやローカルファイルは直接認識できません。
Q:音声ファイルをパブリックにアクセス可能な URL で利用できるようにするにはどうすればよいですか?
一般的な手順は以下の通りです。これは 1 つのアプローチであり、正確なプロセスはストレージ製品によって異なります。音声を Alibaba Cloud OSS にアップロードすることを推奨します。
1. ストレージとホスティング方法の選択
例:
-
オブジェクトストレージサービス (推奨):
- クラウドプロバイダーのオブジェクトストレージサービス (例:Alibaba Cloud OSS) を使用して、音声ファイルをバケットにアップロードし、パブリックアクセスに設定します。
- 利点:高可用性、CDN アクセラレーションのサポート、簡単な管理。
-
Web サーバー:
- HTTP/HTTPS アクセスをサポートする Web サーバー (Nginx や Apache など) に音声ファイルを配置します。
- 利点:小規模なプロジェクトやローカルテストに適しています。
-
コンテンツ配信ネットワーク (CDN):
- CDN に音声ファイルをホストし、CDN が提供する URL を介してアクセスします。
- 利点:ファイル配信を高速化し、高同時実行数シナリオに適しています。
2. 音声ファイルのアップロード
選択したストレージまたはホスティング方法に従って音声をアップロードします。例:
-
オブジェクトストレージサービス:
- クラウドプロバイダーのコンソールにログインし、バケットを作成します。
- 音声ファイルをアップロードし、その権限をパブリック読み取りに設定するか、一時的なアクセスリンクを生成します。
-
Web サーバー:
- サーバー上の指定されたディレクトリ (例:
/var/www/html/audio/) に音声ファイルを配置します。 - ファイルが HTTP/HTTPS 経由でアクセス可能であることを確認します。
- サーバー上の指定されたディレクトリ (例:
3. パブリックにアクセス可能な URL の生成
例:
-
オブジェクトストレージサービス:
- ファイルがアップロードされると、システムは自動的にパブリックアクセス URL を生成します (通常は
https://<bucket-name>.<region>.aliyuncs.com/<file-name>の形式)。 - より分かりやすいドメイン名にするには、カスタムドメインをバインドして HTTPS を有効にします。
- ファイルがアップロードされると、システムは自動的にパブリックアクセス URL を生成します (通常は
-
Web サーバー:
- アクセス URL は通常、サーバーアドレスとファイルパスを組み合わせたものです (例:
https://your-domain.com/audio/file.mp3)。
- アクセス URL は通常、サーバーアドレスとファイルパスを組み合わせたものです (例:
-
CDN:
- CDN アクセラレーションを設定した後、CDN が提供する URL を使用します (例:
https://cdn.your-domain.com/audio/file.mp3)。
- CDN アクセラレーションを設定した後、CDN が提供する URL を使用します (例:
4. URL が機能することの確認
生成された URL がパブリックネットワーク経由でアクセス可能であることを確認します。例:
- ブラウザで URL を開き、音声ファイルが再生されるかどうかを確認します。
- ツール (例:
curlや Postman) を使用して、URL が正しい HTTP 応答 (ステータスコード 200) を返すことを確認します。
SDK を使用する場合、音声ファイルが Alibaba Cloud OSS に保存されている場合、oss:// プレフィックスを持つ一時的な URL はサポートされていません。
RESTful API を使用する場合、音声ファイルが Alibaba Cloud OSS に保存されている場合、oss:// プレフィックスを持つ一時的な URL はサポートされています。
- 一時的な URL は 48 時間有効で、有効期限が切れると使用できなくなります。本番環境では使用しないでください。
- アップロード認証情報を取得するための API は 100 QPS に制限されており、スケールアウトをサポートしていません。本番環境、高同時実行数シナリオ、またはストレステストシナリオでは使用しないでください。
- 本番環境では、ファイルの長期的な可用性を確保し、レート制限の問題を回避するために、OSS などの安定したストレージサービスを使用してください。
Q:認識結果を取得するのにどのくらい時間がかかりますか?
タスクが送信されると、キュー登録済み (PENDING) 状態になります。キューの待機時間はキューの長さと音声の持続時間によって異なり、正確には言えませんが、通常は数分以内です。一般的に、音声が長いほど時間がかかります。
トラブルシューティング
コードエラーが発生した場合は、「エラーコード」の情報に基づいて問題をトラブルシューティングしてください。
Q:ポーリングしても結果が返されないのはなぜですか?
これはスロットリングが原因である可能性があります。しばらく待ってから再試行してください。
Q:音声が認識されないのはなぜですか (認識結果がない)?
音声フォーマットとサンプルレートが正しく、パラメーターの制約を満たしていることを確認してください。
ffprobe ツールを使用して、音声コンテナ、コーデック、サンプルレート、チャンネル、その他の詳細を取得します。
ffprobe -v error -show_entries format=format_name -show_entries stream=codec_name,sample_rate,channels -of default=noprint_wrappers=1 input.xxx