このトピックでは、Fun-ASR 非リアルタイム音声認識 Python SDK のパラメーターとインターフェイスについて説明します。
サポートされている音声フォーマット、ファイルサイズの制限、持続時間の制限などの入力要件については、「音声仕様」をご参照ください。
以下の例では DashScope Python SDK 2.0 を使用します。コアリソース(
SDK のデフォルトは北京リージョンです。
API キーはリージョンごとに異なります。対応するリージョンの API キーを使用してください。
認識結果は JSON ファイルとして保存されます。
以下のパラメーターは注目に値します:
デフォルトでは、タスクが失敗すると
Base64 エンコードされた音声はサポートされていません。パブリックにアクセス可能な URL にある音声のみが認識できます。バイナリストリームやローカルファイルは直接認識できません。
一般的な手順は以下の通りです。これは 1 つのアプローチであり、正確なプロセスはストレージ製品によって異なります。音声を Alibaba Cloud OSS にアップロードすることを推奨します。
SDK を使用する場合、音声ファイルが Alibaba Cloud OSS に保存されている場合、
タスクが送信されると、キュー登録済み (PENDING) 状態になります。キューの待機時間はキューの長さと音声の持続時間によって異なり、正確には言えませんが、通常は数分以内です。一般的に、音声が長いほど時間がかかります。
コードエラーが発生した場合は、「エラーコード」の情報に基づいて問題をトラブルシューティングしてください。
これはスロットリングが原因である可能性があります。しばらく待ってから再試行してください。
音声フォーマットとサンプルレートが正しく、パラメーターの制約を満たしていることを確認してください。
ffprobe ツールを使用して、音声コンテナ、コーデック、サンプルレート、チャンネル、その他の詳細を取得します。
前提条件
- サービスを有効化し、API キーを取得済みであること。コードの漏洩によるセキュリティリスクを防ぐため、コードにハードコーディングするのではなく、API キーを環境変数として設定してください。
- 最新の DashScope SDK をインストールする。
クイックスタート
以下の例では DashScope Python SDK 2.0 を使用します。コアリソース(client.audio.asr) は、次の 2 つの方法でタスクを送信、待機、照会するためのメソッドを提供します。
- タスクを非同期で送信し、同期的に待機する:タスクを送信した後、タスクが完了するまで現在のスレッドをブロックし、認識結果を返します。
- タスクを非同期で送信し、非同期で結果をクエリする:タスクを送信した後、必要なときにクエリインターフェイスを呼び出して結果を取得します。
- 非同期で送信し、同期的に待機
- 非同期で送信し、非同期で結果をクエリ

-
client.audio.asr.jobs.createを呼び出し、リクエストパラメーターを指定してタスクを送信します。- ファイル文字起こしサービスは、API を介して送信されたタスクをベストエフォート方式で処理します。タスクを送信すると、キュー登録済み (
PENDING) 状態になります。キューの待機時間はキューの長さとファイルの持続時間によって異なり、正確には言えませんが、通常は数分以内です。処理が開始されると、音声認識はリアルタイムの数百倍の速度で完了します。 - 各タスクが完了した後、認識結果とダウンロード URL は 24 時間有効です。有効期限が切れると、以前のクエリで返された URL を介してタスクをクエリしたり、結果をダウンロードしたりすることはできなくなります。
- ファイル文字起こしサービスは、API を介して送信されたタスクをベストエフォート方式で処理します。タスクを送信すると、キュー登録済み (
-
client.audio.asr.jobs.wait(job=job)を呼び出し、タスクの完了を同期的に待機します。 タスクがPENDINGまたはRUNNINGの間、jobs.waitは待機を続けます。成功するとJobを返します。 各メソッドはJobを返します。job.resultsから結果リストを取得できます。各transcription_urlは書き起こし結果のダウンロード先です。
サービスエンドポイント
SDK のデフォルトは北京リージョンです。dashscope.Client の作成時に、region でリージョン、workspace でワークスペース ID を指定します。リージョン設定はその Client のみに適用されます。
- シンガポール
- 中国 (北京)
https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1{WorkspaceId} を実際の ワークスペース ID に置き換えてください。リクエストパラメーター
client.audio.asr.transcribe または client.audio.asr.jobs.create でリクエストパラメーターを設定します。
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
model | str | はい | モデル名。 |
file_urls | list[str] | はい | 文字起こしする音声または動画ファイルの URL のリスト。HTTP と HTTPS がサポートされています。1 回のリクエストでサポートされる URL は 1 つだけです。サポートされている音声フォーマット、ファイルサイズの制限、持続時間の制限などの入力要件については、「音声仕様」をご参照ください。録音が Alibaba Cloud OSS に保存されている場合、RESTful API は oss:// で始まる一時的な URL をサポートしますが、SDK は oss:// で始まる一時的な URL をサポートしません。 |
parameters.vocabulary_id | str | いいえ | プリコンパイルされたホットワードリストの ID。この ID は、ホットワードリスト作成 API を呼び出して事前に生成します。認識時に ID を渡して、リスト内のホットワードを使用します。語彙が既知で比較的安定しており、リクエスト間で同じ単語リストを再利用する必要があるシナリオに適しています。使用方法の詳細については、「プリコンパイル済みホットワード」をご参照ください。 |
parameters.vocabulary | dict | いいえ | インスタントホットワード。キーをホットワードの文字列(string)、値を整数の重み(integer)とするキーバリューペアを渡します。事前にホットワードリストを作成する必要はありません。使用方法については、インスタントホットワードをご参照ください。例:以下の例では、クイックスタートでリージョンとワークスペースを設定した client を再利用します。 |
parameters.channel_id | list[int] | いいえ | マルチトラック音声ファイルで認識するオーディオトラックのインデックス。インデックスは 0 から始まります。たとえば、[0] は最初のトラックを認識し、[0, 1] は最初のトラックと 2 番目のトラックを同時に認識します。このパラメーターを省略すると、最初のトラックのみが処理されます。デフォルト値:[0]。 |
parameters.special_word_filter | str | いいえ | 音声認識中に処理する禁止用語。禁止用語ごとに異なる処理方法を設定できます。詳細については、「禁止用語フィルター」をご参照ください。 |
parameters.diarization_enabled | bool | いいえ | 話者分離を有効にするかどうか。デフォルトでは無効です。モノラル音声にのみ適用されます。マルチチャンネル音声は話者分離をサポートしていません。有効にすると、認識結果に異なる話者を区別する speaker_id フィールドが含まれます。話者分離を有効にする場合、音声の持続時間を 2 時間以内にしてください。そうしないと、認識が失敗したり、タイムアウトしたりする可能性があります。 speaker_id の例については、「認識結果の説明」をご参照ください。 |
parameters.speaker_count | int | いいえ | 話者数の参照値。有効な範囲は 2 から 100 (両端を含む) の整数です。デフォルトでは、話者数は自動的に検出されます。この値を設定した場合、アルゴリズムが可能な場合に指定された数を出力するように誘導するだけであり、正確な数が保証されるわけではありません。デフォルト値なし。 |
parameters.language_hints | list[str] | いいえ | 認識する言語コード。事前に言語を特定できない場合は、設定せずにモデルが自動的に言語を検出するようにします。最大 1 個の値を指定できます。それ以上指定した場合は、最初の 1 個だけが有効です。
クリックしてサポートされている言語コードを表示
|
応答
Job
Job にはタスク情報、生の出力、使用量が含まれます。
| フィールド | 説明 |
|---|---|
task_id | タスク ID。 |
status | タスクの状態:PENDING、RUNNING、SUCCEEDED、FAILED。 |
submitted_at | 送信時刻。job.output["submit_time"] に対応します。 |
scheduled_at | 処理開始時刻。job.output["scheduled_time"] に対応します。 |
finished_at | 終了時刻。job.output["end_time"] に対応します。 |
output | 生のタスク出力の辞書。 |
results | サブタスクの結果リスト。job.results で取得できます。transcription_url の JSON ファイルをダウンロードして認識テキストを取得します。 |
usage | タスクの使用量。 |
Job.output
job.output はサービスが返す生のタスク出力の辞書です。
- PENDING
- RUNNING
- SUCCEEDED
- FAILED (raise_on_error=False)
| パラメーター | 説明 |
|---|---|
code | エラーコード。message フィールドと組み合わせて、「エラーコード」を参照して問題をトラブルシューティングしてください。 |
message | エラーメッセージ。code フィールドと組み合わせて、「エラーコード」を参照して問題をトラブルシューティングしてください。 |
task_id | タスク ID。 |
task_status | タスクステータス。PENDING、RUNNING、SUCCEEDED、FAILED の 4 つの状態のいずれかです。タスクに複数のサブタスクが含まれている場合、いずれかのサブタスクが成功すれば、全体のタスクステータスは SUCCEEDED とマークされます。各サブタスクの結果を判断するには、subtask_status フィールドを確認してください。 |
results | サブタスクの認識結果。 |
subtask_status | サブタスクのステータス。PENDING、RUNNING、SUCCEEDED、FAILED の 4 つの状態のいずれかです。 |
file_url | 認識された音声の URL。 |
transcription_url | 音声認識結果の URL。認識結果は JSON ファイルとして保存されます。transcription_url に関連付けられたリンクからファイルをダウンロードするか、HTTP リクエストを介して直接その内容を読み取ることができます。JSON ファイルの内容については、「認識結果の説明」をご参照ください。 |
認識結果の説明
認識結果は JSON ファイルとして保存されます。
| パラメーター | タイプ | 説明 |
|---|---|---|
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 | 単語の後に予測された句読点 (もしあれば)。 |
主要なインターフェイス
コアリソース(client.audio.asr)
dashscope.Client でクライアントを作成し、client.audio.asr リソースを使用します。以下のメソッドはいずれも Job を返します。
| メソッド | メソッドシグネチャ | 説明 |
|---|---|---|
transcribe | タスクを送信し、完了を同期的に待機します。デフォルトモデルは qwen-audio-3.1-asr-flash-filetrans です。他のモデルを呼び出す場合は model を明示的に指定します。 | |
jobs.create | タスクを送信し、認識の完了を待たずに task_id と status を含む Job を返します。 | |
jobs.wait | Job またはタスク ID を渡して完了を同期的に待機します。poll_interval と max_interval で初期および最大ポーリング間隔、timeout で合計待機時間を設定します。単位はいずれも秒です。 | |
jobs.fetch | タスク ID を指定して状態と結果を 1 回照会します。完了までは待機しません。 |
エラーコード
デフォルトでは、タスクが失敗すると DashScopeError が発生します。失敗した Job を取得するには、Client の作成時に raise_on_error=False を設定し、job.status を確認します。
エラーが発生した場合は、「エラーコード」を参照してトラブルシューティングしてください。
タスクに複数のサブタスクが含まれている場合、少なくとも 1 つのサブタスクが成功すれば、全体のタスクステータスは SUCCEEDED とマークされます。各サブタスクの結果を判断するには、subtask_status フィールドを確認してください。
エラー応答の例:
よくある質問
機能
Q:Base64 エンコードされた音声はサポートされていますか?
Base64 エンコードされた音声はサポートされていません。パブリックにアクセス可能な URL にある音声のみが認識できます。バイナリストリームやローカルファイルは直接認識できません。
Q:音声ファイルをパブリックにアクセス可能な URL で利用できるようにするにはどうすればよいですか?
一般的な手順は以下の通りです。これは 1 つのアプローチであり、正確なプロセスはストレージ製品によって異なります。音声を Alibaba Cloud OSS にアップロードすることを推奨します。
1. ストレージとホスティング方法の選択
1. ストレージとホスティング方法の選択
例:
-
オブジェクトストレージサービス (推奨):
- クラウドプロバイダーのオブジェクトストレージサービス (例:Alibaba Cloud OSS) を使用して、音声ファイルをバケットにアップロードし、パブリックアクセスに設定します。
- 利点:高可用性、CDN アクセラレーションのサポート、簡単な管理。
-
Web サーバー:
- HTTP/HTTPS アクセスをサポートする Web サーバー (Nginx や Apache など) に音声ファイルを配置します。
- 利点:小規模なプロジェクトやローカルテストに適しています。
-
コンテンツ配信ネットワーク (CDN):
- CDN に音声ファイルをホストし、CDN が提供する URL を介してアクセスします。
- 利点:ファイル配信を高速化し、高同時実行数シナリオに適しています。
2. 音声ファイルのアップロード
2. 音声ファイルのアップロード
選択したストレージまたはホスティング方法に従って音声をアップロードします。例:
-
オブジェクトストレージサービス:
- クラウドプロバイダーのコンソールにログインし、バケットを作成します。
- 音声ファイルをアップロードし、その権限をパブリック読み取りに設定するか、一時的なアクセスリンクを生成します。
-
Web サーバー:
- サーバー上の指定されたディレクトリ (例:
/var/www/html/audio/) に音声ファイルを配置します。 - ファイルが HTTP/HTTPS 経由でアクセス可能であることを確認します。
- サーバー上の指定されたディレクトリ (例:
3. パブリックにアクセス可能な URL の生成
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 が機能することの確認
4. URL が機能することの確認
生成された URL がパブリックネットワーク経由でアクセス可能であることを確認します。例:
- ブラウザで URL を開き、音声ファイルが再生されるかどうかを確認します。
- ツール (例:
curlや Postman) を使用して、URL が正しい HTTP 応答 (ステータスコード 200) を返すことを確認します。
oss:// プレフィックスを持つ一時的な URL はサポートされていません。
RESTful API を使用する場合、音声ファイルが Alibaba Cloud OSS に保存されている場合、oss:// プレフィックスを持つ一時的な URL はサポートされています。
- 一時的な URL は 48 時間有効で、有効期限が切れると使用できなくなります。本番環境では使用しないでください。
- アップロード認証情報を取得するための API は 100 QPS に制限されており、スケールアウトをサポートしていません。本番環境、高同時実行数シナリオ、またはストレステストシナリオでは使用しないでください。
- 本番環境では、ファイルの長期的な可用性を確保し、レート制限の問題を回避するために、OSS などの安定したストレージサービスを使用してください。
