すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Model Studio:Qwen-Audio-3.0-ASR-Flash-Filetrans/Fun-ASR non-real-time speech recognition Java SDK

最終更新日:Sep 02, 2026

このトピックでは、Qwen-Audio-3.0-ASR-Flash-Filetrans/Fun-ASR 非リアルタイム音声認識 Java SDK のパラメーターと API の詳細について説明します。

ユーザーガイド:非リアルタイム音声認識。サポートされている音声フォーマット、ファイルサイズの制限、持続時間の制限などの入力要件については、「音声仕様」をご参照ください。

前提条件

サービスを有効化し、「API キーの取得」を完了していること。コードの漏洩によるセキュリティリスクを防ぐため、コードにハードコーディングするのではなく、「API キーを環境変数として設定」してください。

注記サードパーティのアプリケーションやユーザーに一時的なアクセスを提供する必要がある場合、または機密データへのアクセスや削除などの高リスク操作を厳密に制御したい場合は、「一時的な認証トークン」の使用を推奨します。

長期的な API キーと比較して、一時的な認証トークンは有効期間が短く (60 秒)、セキュリティが高いため、一時的な呼び出しシナリオに適しており、API キー漏洩のリスクを効果的に低減します。

使用方法:コード内で、認証に元々使用していた API キーを、取得した一時的な認証トークンに置き換えます。

クイックスタート

コアクラス (Transcription) は、タスクを非同期で送信し、タスクが完了するまで同期的に待機し、タスク結果を非同期でクエリするためのインターフェイスを提供します。非リアルタイム音声認識は、次の 2 つの方法のいずれかで実行できます。

  • タスクの非同期送信と同期的な完了待機:タスクを送信すると、現在のスレッドはタスクが完了して認識結果が返されるまでブロックされます。
  • タスクの非同期送信とタスク結果の非同期クエリ:タスクを送信した後、必要なときにクエリインターフェイスを呼び出してタスク結果を取得します。

タスクの非同期送信と同期的な完了待機

  1. リクエストパラメーターを設定します。

  2. コアクラス (Transcription) をインスタンス化します。

  3. コアクラス (Transcription)asyncCall メソッドを呼び出して、タスクを非同期で送信します。

    注記

    • ファイル文字起こしサービスは、API を通じて送信されたタスクをベストエフォート方式で処理します。タスクを送信すると、キュー登録済み (PENDING) 状態になります。キューイング時間はキューの長さとファイルの持続時間に依存するため、正確には言えませんが、通常は数分以内です。処理が開始されると、音声認識はリアルタイムの数百倍の速度で完了します。
    • 各タスクが完了した後、認識結果とダウンロード URL は 24 時間有効です。有効期限が切れると、以前のクエリで返された URL を通じてタスクをクエリしたり、結果をダウンロードしたりすることはできなくなります。
  4. コアクラス (Transcription)wait メソッドを呼び出して、タスクが完了するまで同期的に待機します。

    タスクの状態には、PENDINGRUNNINGSUCCEEDED、または FAILED があります。タスクが PENDING または RUNNING 状態の間、wait インターフェイスはブロックします。タスクが SUCCEEDED または FAILED 状態に達すると、wait インターフェイスはブロックを停止し、タスク結果を返します。

    waitタスク結果 (TranscriptionResult) を返します。

クリックして完全な例を表示

import com.alibaba.dashscope.audio.asr.transcription.*;
import com.alibaba.dashscope.utils.Constants;
import com.google.gson.*;

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // 以下はシンガポールリージョンの設定です。呼び出す際に、"{WorkspaceId}" を実際のワークスペース ID に置き換えてください。リージョンごとに設定は異なります。
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
        // 文字起こしリクエストのパラメーターを作成
        TranscriptionParam param =
                TranscriptionParam.builder()
                        // API キーはシンガポールリージョンと北京リージョンで異なります。API キーの取得:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
                        // 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えてください:.apiKey("sk-xxx")
                        //.apiKey("apikey")
                        .model("qwen-audio-3.0-asr-flash-filetrans") // ここでは qwen-audio-3.0-asr-flash-filetrans を例として使用します。必要に応じてモデル名を変更してください。モデルリスト:https://www.alibabacloud.com/help/zh/model-studio/models
                        .fileUrls(
                                Arrays.asList(
                                        "{YOUR_AUDIO_URL}"))
                        .build();
        try {
            Transcription transcription = new Transcription();
            // 文字起こしリクエストを送信
            TranscriptionResult result = transcription.asyncCall(param);
            System.out.println("RequestId: " + result.getRequestId());
            // タスクが完了するまでブロックして待機し、結果を取得
            result = transcription.wait(
                    TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
            // 結果を出力
            System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(result.getOutput()));
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        System.exit(0);
    }
}

タスクの非同期送信とタスク結果の非同期クエリ

  1. リクエストパラメーターを設定します。

  2. コアクラス (Transcription) をインスタンス化します。

  3. コアクラス (Transcription)asyncCall メソッドを呼び出して、タスクを非同期で送信します。

    注記

    • ファイル文字起こしサービスは、API を通じて送信されたタスクをベストエフォート方式で処理します。タスクを送信すると、キュー登録済み (PENDING) 状態になります。キューイング時間はキューの長さとファイルの持続時間に依存するため、正確には言えませんが、通常は数分以内です。処理が開始されると、音声認識はリアルタイムの数百倍の速度で完了します。
    • 各タスクが完了した後、認識結果とダウンロード URL は 24 時間有効です。有効期限が切れると、以前のクエリで返された URL を通じてタスクをクエリしたり、結果をダウンロードしたりすることはできなくなります。
  4. 最終的なタスク結果が得られるまで、コアクラス (Transcription)fetch メソッドをループで呼び出します。

    タスクステータスが SUCCEEDED または FAILED になったら、ポーリングを停止して結果を処理します。

    fetchタスク結果 (TranscriptionResult) を返します。

クリックして完全な例を表示

import com.alibaba.dashscope.audio.asr.transcription.*;
import com.alibaba.dashscope.common.TaskStatus;
import com.alibaba.dashscope.utils.Constants;
import com.google.gson.*;

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // 以下はシンガポールリージョンの設定です。呼び出す際に、"{WorkspaceId}" を実際のワークスペース ID に置き換えてください。リージョンごとに設定は異なります。
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
        // 文字起こしリクエストのパラメーターを作成
        TranscriptionParam param =
                TranscriptionParam.builder()
                        // API キーはシンガポールリージョンと北京リージョンで異なります。API キーの取得:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
                        // 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えてください:.apiKey("sk-xxx")
                        //.apiKey("apikey")
                        .model("qwen-audio-3.0-asr-flash-filetrans") // ここでは qwen-audio-3.0-asr-flash-filetrans を例として使用します。必要に応じてモデル名を変更してください。モデルリスト:https://www.alibabacloud.com/help/zh/model-studio/models
                        .fileUrls(
                                Arrays.asList(
                                        "{YOUR_AUDIO_URL}"))
                        .build();
        try {
            Transcription transcription = new Transcription();
            // 文字起こしリクエストを送信
            TranscriptionResult result = transcription.asyncCall(param);
            System.out.println("RequestId: " + result.getRequestId());
            // タスクが完了するまでループでタスク結果をポーリング
            while (true) {
                result = transcription.fetch(TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
                if (result.getTaskStatus() == TaskStatus.SUCCEEDED || result.getTaskStatus() == TaskStatus.FAILED) {
                    break;
                }
                Thread.sleep(1000);
            }
            // 結果を出力
            System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(result.getOutput()));
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        System.exit(0);
    }
}

エンドポイント

デフォルトでは、SDK は中国 (北京) リージョンのエンドポイントを使用します。他のリージョンに切り替えるには、初期化の前に Constants.baseHttpApiUrl を変更します。

シンガポール

https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1

呼び出しを行う際に、{WorkspaceId} を実際の ワークスペース ID に置き換えてください。

中国 (北京)

https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1

呼び出しを行う際に、{WorkspaceId} を実際の ワークスペース ID に置き換えてください。

重要Alibaba Cloud Model Studio は、中国 (北京) およびシンガポールリージョン向けにワークスペース固有のドメインをリリースしました。新しい専用ドメインは、推論リクエストに対して優れたパフォーマンスと高い安定性を提供します。新しいドメインへの移行を推奨します:

  • 中国 (北京):dashscope.aliyuncs.com から {WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • シンガポール:dashscope-intl.aliyuncs.com から {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com

{WorkspaceId} を実際の ワークスペース ID に置き換えてください。既存のドメインも引き続き完全に機能します。

シンガポールリージョンへの切り替え

import com.alibaba.dashscope.utils.Constants;

// コードの先頭でこれを設定します
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";

  • API キーはリージョンごとに異なります。対象リージョンの API キーを使用していることを確認してください。
  • リージョン設定はグローバルであり、すべての DashScope SDK の API 呼び出しに影響します。

リクエストパラメーター

TranscriptionParam のチェーンメソッドを使用してリクエストパラメーターを設定します。

例を表示

TranscriptionParam param = TranscriptionParam.builder()
  .model("qwen-audio-3.0-asr-flash-filetrans")
  .fileUrls(
          Arrays.asList(
                  "{YOUR_AUDIO_URL}"))
  .build();
パラメータータイプ必須説明

model

String

はい

モデル名。サポートされている値には、Qwen-Audio-3.0-ASR-Flash-Filetrans および Fun-ASR モデルファミリーが含まれます。詳細については、「サポートされているモデルとリージョン」をご参照ください。

fileUrls

List<String>

はい

文字起こしする音声または動画ファイルの URL のリスト。HTTP と HTTPS がサポートされています。1 回のリクエストでサポートされる URL は 1 つだけです。サポートされている音声フォーマット、ファイルサイズの制限、持続時間の制限などの入力要件については、「音声仕様」をご参照ください。

録音が Alibaba Cloud OSS に保存されている場合、RESTful API は oss:// で始まる一時 URL をサポートしますが、SDK は oss:// で始まる一時 URL をサポートしません。

重要

  • 一時 URL は 48 時間有効で、有効期限が切れると使用できなくなります。本番環境では使用しないでください。

  • アップロード認証情報インターフェイスは 100 QPS にレート制限されており、スケールアップできません。本番環境、高同時実行、または負荷テストのシナリオでは使用しないでください。

  • 本番環境では、ファイルの長期的な可用性を確保し、レート制限を回避するために、Alibaba Cloud OSS などの安定したストレージを使用してください。

  • OSS の一時的なパブリック URL に設定された音声ファイル URL が到達不能な場合は、リクエストヘッダーで X-DashScope-OssResourceResolveenable に設定します (非推奨)。

    SDK はリクエストヘッダーの設定をサポートしていません。

vocabularyId

String

いいえ

プリコンパイルされたホットワードリストの ID。

この ID は、ホットワードリスト作成 API を呼び出して事前に生成します。認識時に ID を渡して、リスト内のホットワードを使用します。

語彙が既知で比較的安定しており、リクエスト間で同じ単語リストを再利用する必要があるシナリオに適しています。

使用方法の詳細については、「プリコンパイルホットワード」をご参照ください。

vocabulary

Map<String, Integer>

いいえ

インスタントホットワード。

キーと値のペアとして渡されます。キーはホットワードのテキスト (string)、値はホットワードの重み (integer) です。事前にホットワードリストを作成する必要はありません。重みの範囲は [1, 5] または 50 に設定されます:[1, 5] の値は、値が増加するにつれてモデルが単語を出力する可能性を高めます。値 50 はスーパーホットワードを指定し、再現率を大幅に向上させますが、スーパーホットワードの数は 50 を超えることはできません。

一時的な、セッションレベルのホットワード最適化に適しています。

プリコンパイルホットワードと一緒に設定すると、インスタントホットワードのみが有効になります。使用方法の詳細については、「インスタントホットワード」をご参照ください。

重要qwen-audio-3.0-asr-flash-filetrans のみがインラインホットワードをサポートしています。

注記TranscriptionParam インスタンスの parameter メソッドまたは parameters メソッドを介して vocabulary を設定します:

Map<String, Integer> vocab = new HashMap<>();
vocab.put("John Smith", 5);
vocab.put("Jane Doe", 5);

TranscriptionParam param = TranscriptionParam.builder()
  .model("qwen-audio-3.0-asr-flash-filetrans")
  .parameter("vocabulary", vocab)
  .build();
Map<String, Integer> vocab = new HashMap<>();
vocab.put("John Smith", 5);
vocab.put("Jane Doe", 5);

TranscriptionParam param = TranscriptionParam.builder()
  .model("qwen-audio-3.0-asr-flash-filetrans")
  .parameters(Collections.singletonMap("vocabulary", vocab))
  .build();

channelId

List<Integer>

いいえ

マルチトラック音声ファイルで認識するオーディオトラックのインデックス。インデックスは 0 から始まります。たとえば、[0] は最初のトラックを認識し、[0, 1] は最初のトラックと 2 番目のトラックを同時に認識します。このパラメーターを省略すると、最初のトラックのみが処理されます。

重要指定された各トラックは個別に課金されます。たとえば、1 つのファイルに対して [0, 1] をリクエストすると、2 つの個別の料金が発生します。

デフォルト値:[0]。

specialWordFilter

String

いいえ

音声認識中に処理する禁止用語。禁止用語ごとに異なる処理方法を設定できます。詳細については、「禁止用語フィルター」をご参照ください。

diarizationEnabled

Boolean

いいえ

話者ダイアライゼーションを有効にするかどうか。デフォルトでは無効です。

モノラル音声にのみ適用されます。マルチチャンネル音声は話者ダイアライゼーションをサポートしていません。

有効にすると、認識結果に異なる話者を区別する speaker_id フィールドが含まれます。

注記話者ダイアライゼーションを有効にする場合、音声の持続時間を 2 時間以内にしてください。そうしないと、認識が失敗したり、タイムアウトしたりする可能性があります。

デフォルト値:false。

speaker_id の例については、「認識結果の説明」をご参照ください。

speakerCount

Integer

いいえ

重要話者ダイアライゼーションが有効な場合 (diarization_enabledtrue に設定されている場合) にのみ有効です。

話者数の参照値。有効な範囲は 2 から 100 までの整数 (両端を含む) です。

デフォルトでは、話者数は自動的に検出されます。この値を設定すると、アルゴリズムが可能な場合に指定された数を出力するようにガイドするだけであり、正確な数を保証するものではありません。

デフォルト値なし。

language_hints

String[]

いいえ

認識する言語コード。事前に言語を特定できない場合は、設定せずにそのままにしておくと、モデルが自動的に言語を検出します。

Qwen-Audio-3.0-ASR-Flash-Filetrans モデルの場合、最大 4 つの値を設定できます。最初の 4 つを超える値は無視されます。Fun-ASR モデルの場合、1 つの値しか設定できません。複数設定した場合、最初の値のみが有効になります。

サポートされている言語コードを表示

  • qwen-audio-3.0-asr-flash-filetrans, fun-asr, fun-asr-2025-11-07, fun-asr-mtl, fun-asr-mtl-2025-08-25:

    • zh: 中国語
    • en: 英語
    • ja: 日本語
    • ko: 韓国語
    • vi: ベトナム語
    • th: タイ語
    • id: インドネシア語
    • ms: マレー語
    • tl: フィリピン語
    • hi: ヒンディー語
    • ar: アラビア語
    • fr: フランス語
    • de: ドイツ語
    • es: スペイン語
    • pt: ポルトガル語
    • ru: ロシア語
    • it: イタリア語
    • nl: オランダ語
    • sv: スウェーデン語
    • da: デンマーク語
    • fi: フィンランド語
    • no: ノルウェー語
    • el: ギリシャ語
    • pl: ポーランド語
    • cs: チェコ語
    • hu: ハンガリー語
    • ro: ルーマニア語
    • bg: ブルガリア語
    • hr: クロアチア語
    • sk: スロバキア語
  • fun-asr-2025-08-25:

    • zh: 中国語
    • en: 英語

注記TranscriptionParam インスタンスの parameter メソッドまたは parameters メソッドを介して language_hints を設定します:

TranscriptionParam param = TranscriptionParam.builder()
  .model("qwen-audio-3.0-asr-flash-filetrans")
  .parameter("language_hints", new String[]{"zh"})
  .build();
TranscriptionParam param = TranscriptionParam.builder()
  .model("qwen-audio-3.0-asr-flash-filetrans")
  .parameters(Collections.singletonMap("language_hints", new String[]{"zh"}))
  .build();

apiKey

String

いいえ

ご利用の API キー。API キーを環境変数として設定している場合は、コードで設定する必要はありません。そうでない場合は、コードで設定する必要があります。

応答

タスク結果 (TranscriptionResult)

TranscriptionResult は、現在のタスクの結果をカプセル化します。

インターフェイス/メソッドパラメーター戻り値説明
public String getRequestId()

なし

requestId

requestId を取得します。

public String getTaskId()

なし

taskId

taskId を取得します。

public TaskStatus getTaskStatus()

なし

TaskStatus、タスクステータス

タスクステータスを取得します。

TaskStatus は列挙型です。次の 4 つの状態にのみ注目する必要があります:PENDINGRUNNINGSUCCEEDEDFAILED

注記タスクに複数のサブタスクが含まれている場合、いずれか 1 つのサブタスクが成功すれば、全体のタスクステータスは SUCCEEDED とマークされます。個々のサブタスクの結果を確認するには、subtask_status フィールドを使用してください。

public List<TranscriptionTaskResult> getResults()

なし

サブタスク結果 (TranscriptionTaskResult)

サブタスク結果 (TranscriptionTaskResult) を取得します。

各タスクは 1 つ以上の音声ファイルを認識します。異なる音声ファイルは別々のサブタスクで処理されるため、各タスクは 1 つ以上のサブタスクに対応します。

public JsonObject getOutput()

なし

タスク結果、JSON 形式

タスク結果を取得します。

結果は JSON 形式のデータです。getOutput インターフェイスを介してタスク結果を取得したい場合は、結果を取得した後に自分で解析してください。

JSON の例を表示

成功例
{
    "task_id":"0795ff8c-b666-4e91-bb8b-xxx",
    "task_status":"SUCCEEDED",
    "submit_time":"2025-02-13 16:12:09.109",
    "scheduled_time":"2025-02-13 16:12:09.128",
    "end_time":"2025-02-13 16:12:10.189",
    "results":[
        {
            "file_url":"{YOUR_AUDIO_URL}",
            "transcription_url":"https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/prod/paraformer-v2/20250213/16%3A12/3baafe5f-d09d-46c6-8b01-724927670edb-1.json?Expires=1739520730&OSSAccessKeyId=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE",
            "subtask_status":"SUCCEEDED"
        }
    ],
    "task_metrics":{
        "TOTAL":1,
        "SUCCEEDED":1,
        "FAILED":0
    }
}
エラー例

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": "The audio file cannot be downloaded.",
                  "subtask_status": "FAILED"
              }
          ],
          "task_metrics": {
              "TOTAL": 1,
              "SUCCEEDED": 0,
              "FAILED": 1
          }
      }

サブタスク結果 (TranscriptionTaskResult)

TranscriptionTaskResult はサブタスクの結果をカプセル化します。サブタスクは単一の音声ファイルを認識します。

インターフェイス/メソッドパラメーター戻り値説明
public String getFileUrl()

なし

認識された音声ファイルの URL

認識された音声ファイルの URL を取得します。

public String getTranscriptionUrl()

なし

認識結果の URL

認識結果の URL を取得します。この URL は 24 時間有効です。有効期限が切れると、以前のクエリで返された URL を通じてタスクをクエリしたり、結果をダウンロードしたりすることはできなくなります。

認識結果は JSON ファイルとして保存されます。URL を通じてファイルをダウンロードするか、HTTP リクエストを介して直接その内容を読み取ることができます。

JSON データ内の各フィールドの意味については、「認識結果の説明」をご参照ください。

public TaskStatus getSubTaskStatus()

なし

TaskStatus、サブタスクステータス

サブタスクステータスを取得します。

TaskStatus は列挙型です。次の 4 つの状態にのみ注目する必要があります:PENDINGRUNNINGSUCCEEDEDFAILED

public String getMessage()

なし

タスク実行中に生成された主要な情報。空の場合があります

タスク実行中に生成された主要な情報を取得します。

タスクが失敗した場合、原因を分析するためにこの内容を確認してください。

認識結果の説明

認識結果は 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

単語の後に予測される句読点 (もしあれば)。

主要なインターフェイス

タスククエリパラメータークラス (TranscriptionQueryParam)

TranscriptionQueryParam は、タスクの完了を待機する場合 (Transcriptionwait メソッドを呼び出す) や、タスク結果をクエリする場合 (Transcriptionfetch メソッドを呼び出す) に使用されます。

静的メソッド FromTranscriptionParam を介して TranscriptionQueryParam インスタンスを作成します。

例を表示

// 文字起こしリクエストのパラメーターを構築
TranscriptionParam param =
        TranscriptionParam.builder()
                // API キーを環境変数として設定していない場合は、apiKey をご自身の API キーに置き換えてください
                //.apiKey("apikey")
                .model("qwen-audio-3.0-asr-flash-filetrans")
                .fileUrls(
                        Arrays.asList(
                                "{YOUR_AUDIO_URL}"))
                .build();
try {
    Transcription transcription = new Transcription();
    // 文字起こしリクエストを送信
    TranscriptionResult result = transcription.asyncCall(param);
    System.out.println("RequestId: " + result.getRequestId());
    TranscriptionQueryParam queryParam = TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId());

} catch (Exception e) {
    System.out.println("error: " + e);
}
インターフェイス/メソッドパラメーター戻り値説明
public static TranscriptionQueryParam FromTranscriptionParam(TranscriptionParam param, String taskId)
  • paramTranscriptionParam インスタンス
  • taskId:タスク ID

TranscriptionQueryParam インスタンス

TranscriptionQueryParam インスタンスを作成します。

コアクラス (Transcription)

import com.alibaba.dashscope.audio.asr.transcription.*;」で Transcription をインポートします。その主要なインターフェイスは次のとおりです:

インターフェイス/メソッドパラメーター戻り値説明
public TranscriptionResult asyncCall(TranscriptionParam param)

param:音声認識パラメーター、TranscriptionParam インスタンス

タスク結果 (TranscriptionResult)

音声認識タスクを非同期で送信します。

public TranscriptionResult wait(TranscriptionQueryParam queryParam)

queryParamTranscriptionQueryParam インスタンス

タスク結果 (TranscriptionResult)

非同期タスクが終了するまで (タスクステータスが SUCCEEDED または FAILED になるまで) 現在のスレッドをブロックします。

public TranscriptionResult fetch(TranscriptionQueryParam queryParam)

queryParamTranscriptionQueryParam インスタンス

タスク結果 (TranscriptionResult)

現在のタスク結果を非同期でクエリします。

エラーコード

エラーが発生した場合は、「エラーコード」を参照してトラブルシューティングを行ってください。

タスクに複数のサブタスクが含まれている場合、少なくとも 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": "The audio file cannot be downloaded.",
            "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 を有効にします。
  • Web サーバー:

    • アクセス URL は通常、サーバーアドレスとファイルパスを組み合わせたものです (例:https://your-domain.com/audio/file.mp3)。
  • CDN:

    • CDN アクセラレーションを設定した後、CDN が提供する URL を使用します (例:https://cdn.your-domain.com/audio/file.mp3)。

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