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

Alibaba Cloud Model Studio:音声ファイル認識 - Qwen

最終更新日:Jan 06, 2026

Qwen 音声ファイル認識モデルは、録音された音声をテキストに変換します。このモデルは、多言語認識、歌声認識、ノイズ抑制などの機能をサポートしています。

主な特徴

  • 多言語認識:標準中国語や、広東語、四川語など様々な方言を含む複数の言語を認識します。

  • 複雑な環境への適応:複雑な音響環境に対応します。自動言語検出と非人間音のインテリジェントなフィルタリングをサポートします。

  • 歌声認識:BGM (バックグラウンドミュージック) があっても、曲全体を文字に起こします。

  • コンテキストバイアス:コンテキストを設定することで認識精度を向上させます。詳細については、コンテキストバイアスをご参照ください。

  • 感情認識:驚き、冷静、幸福、悲しみ、嫌悪、怒り、恐怖など、複数の感情状態を認識します。

利用可能なリージョン

サポートモデル:

このサービスは 2 つのコアモデルを提供します:

  • Qwen3-ASR-Flash-Filetrans:最大 12 時間の長尺音声ファイルの非同期認識用に設計されています。会議記録やインタビューの文字起こしなどのシナリオに適しています。

  • Qwen3-ASR-Flash:最大 5 分の短尺音声ファイルの同期またはストリーミング認識用に設計されています。音声メッセージやリアルタイム字幕などのシナリオに適しています。

国際 (シンガポール)

以下のモデルを呼び出すには、シンガポールリージョンから API キーを選択します:

  • Qwen3-ASR-Flash-Filetrans: qwen3-asr-flash-filetrans、qwen3-asr-flash-filetrans-2025-11-17 (スナップショット)

  • Qwen3-ASR-Flash: qwen3-asr-flash (安定版、現在は qwen3-asr-flash-2025-09-08 と同等)、qwen3-asr-flash-2025-09-08 (スナップショット)

米国 (バージニア)

以下のモデルを呼び出すには、米国リージョンから API キーを選択します:

Qwen3-ASR-Flash: qwen3-asr-flash-us (安定版、現在は qwen3-asr-flash-2025-09-08-us と同等)、qwen3-asr-flash-2025-09-08-us (スナップショット)

中国 (北京)

以下のモデルを呼び出すには、北京リージョンから API キーを選択します:

  • Qwen3-ASR-Flash-Filetrans: qwen3-asr-flash-filetrans、qwen3-asr-flash-filetrans-2025-11-17 (スナップショット)

  • Qwen3-ASR-Flash: qwen3-asr-flash (安定版、現在は qwen3-asr-flash-2025-09-08 と同等)、qwen3-asr-flash-2025-09-08 (スナップショット)

詳細については、「モデルリスト」をご参照ください。

モデルの選択

シナリオ

推奨モデル

理由

注意事項

長尺音声認識

qwen3-asr-flash-filetrans

最大 12 時間の録音をサポートします。感情認識と文レベルのタイムスタンプを提供し、後のインデックス作成や分析に適しています。

音声ファイルのサイズは 2 GB を超えることはできず、長さは 12 時間を超えることはできません。

短尺音声認識

qwen3-asr-flash または qwen3-asr-flash-us)

短尺音声の低遅延認識。

音声ファイルのサイズは 10 MB を超えることはできず、長さは 5 分を超えることはできません。

カスタマーサービスの品質検査

qwen3-asr-flash-filetrans、qwen3-asr-flash または qwen3-asr-flash-us)

顧客の感情を分析できます。

禁止用語フィルタリングや話者分離はサポートしていません。音声の長さに応じて適切なモデルを選択してください。

ニュース/インタビュー番組の字幕生成

qwen3-asr-flash-filetrans

長尺音声、句読点予測、タイムスタンプにより、構造化された字幕を直接生成します。

標準の字幕ファイルを生成するには後処理が必要です。音声の長さに応じて適切なモデルを選択してください。

多言語動画のローカライズ

qwen3-asr-flash-filetrans、qwen3-asr-flash または qwen3-asr-flash-us)

複数の言語と方言をカバーし、多言語字幕作成に適しています。

音声の長さに応じて適切なモデルを選択してください。

歌声分析

qwen3-asr-flash-filetrans、qwen3-asr-flash または qwen3-asr-flash-us)

歌詞を認識し、感情を分析するため、曲のインデックス作成や推薦に適しています。

音声の長さに応じて適切なモデルを選択してください。

詳細については、「モデル機能の比較」をご参照ください。

クイックスタート

このサービスは現在、オンライン試用をサポートしていません。代わりに API を呼び出すことができます。以下のコードサンプルは、API の呼び出し方法を示しています。

開始する前に、API キーを作成して設定していることを確認してください。SDK を使用する場合は、最新バージョンの DashScope SDK をインストールする必要もあります。

qwen3-asr-flash-filetrans

qwen3-asr-flash-filetrans は、音声ファイルの非同期認識用に設計されており、最大 12 時間の録音をサポートします。このモデルは、入力として音声ファイルの公開アクセス可能な URL を必要とし、ローカルファイルの直接アップロードはサポートしていません。これは非ストリーミング API であり、タスクが完了した後にすべての認識結果を一度に返します。

cURL

cURL を使用して音声認識を行う場合、まずタスクを送信してタスク ID (task_id) を取得し、次にこの ID を使用してタスク実行結果を取得します。

タスクの送信

# ======= 重要 =======
# 以下はシンガポールリージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription に置き換えてください。
# シンガポールと北京リージョンでは API キーが異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
# === 実行前にこのコメントを削除してください ===

curl --location --request POST 'https://dashscope-intl.aliyuncs.com/api/v1/services/audio/asr/transcription' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--header "X-DashScope-Async: enable" \
--data '{
    "model": "qwen3-asr-flash-filetrans",
    "input": {
        "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
    },
    "parameters": {
        "channel_id":[
            0
        ], 
        "enable_itn": false
    }
}'

タスク実行結果の取得

# ======= 重要 =======
# 以下はシンガポールリージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1/tasks/{task_id} に置き換えてください。注:{task_id} をクエリするタスクの ID に置き換えてください。
# シンガポールと北京リージョンでは API キーが異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
# === 実行前にこのコメントを削除してください ===

curl --location --request GET 'https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id}' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "X-DashScope-Async: enable" \
--header "Content-Type: application/json"

完全な例

Java

import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
import okhttp3.*;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

public class Main {
    // 以下はシンガポールリージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription に置き換えてください。
    private static final String API_URL_SUBMIT = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/asr/transcription";
    // 以下はシンガポールリージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1/tasks/ に置き換えてください。
    private static final String API_URL_QUERY = "https://dashscope-intl.aliyuncs.com/api/v1/tasks/";
    private static final Gson gson = new Gson();

    public static void main(String[] args) {
        // シンガポールと北京リージョンでは API キーが異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
        // 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:String apiKey = "sk-xxx"
        String apiKey = System.getenv("DASHSCOPE_API_KEY");

        OkHttpClient client = new OkHttpClient();

        // 1. タスクの送信
        /*String payloadJson = """
                {
                    "model": "qwen3-asr-flash-filetrans",
                    "input": {
                        "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
                    },
                    "parameters": {
                        "channel_id": [0],
                        "enable_itn": false,
                        "language": "zh",
                        "corpus": {
                            "text": ""
                        }
                    }
                }
                """;*/
        String payloadJson = """
                {
                    "model": "qwen3-asr-flash-filetrans",
                    "input": {
                        "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
                    },
                    "parameters": {
                        "channel_id": [0],
                        "enable_itn": false
                    }
                }
                """;

        RequestBody body = RequestBody.create(payloadJson, MediaType.get("application/json; charset=utf-8"));
        Request submitRequest = new Request.Builder()
                .url(API_URL_SUBMIT)
                .addHeader("Authorization", "Bearer " + apiKey)
                .addHeader("Content-Type", "application/json")
                .addHeader("X-DashScope-Async", "enable")
                .post(body)
                .build();

        String taskId = null;

        try (Response response = client.newCall(submitRequest).execute()) {
            if (response.isSuccessful() && response.body() != null) {
                String respBody = response.body().string();
                ApiResponse apiResp = gson.fromJson(respBody, ApiResponse.class);
                if (apiResp.output != null) {
                    taskId = apiResp.output.taskId;
                    System.out.println("Task submitted. task_id: " + taskId);
                } else {
                    System.out.println("Submission response content: " + respBody);
                    return;
                }
            } else {
                System.out.println("Task submission failed! HTTP code: " + response.code());
                if (response.body() != null) {
                    System.out.println(response.body().string());
                }
                return;
            }
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }

        // 2. タスクステータスのポーリング
        boolean finished = false;
        while (!finished) {
            try {
                TimeUnit.SECONDS.sleep(2);  // 再度クエリする前に 2 秒待機
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
                return;
            }

            String queryUrl = API_URL_QUERY + taskId;
            Request queryRequest = new Request.Builder()
                    .url(queryUrl)
                    .addHeader("Authorization", "Bearer " + apiKey)
                    .addHeader("X-DashScope-Async", "enable")
                    .addHeader("Content-Type", "application/json")
                    .get()
                    .build();

            try (Response response = client.newCall(queryRequest).execute()) {
                if (response.body() != null) {
                    String queryResponse = response.body().string();
                    ApiResponse apiResp = gson.fromJson(queryResponse, ApiResponse.class);

                    if (apiResp.output != null && apiResp.output.taskStatus != null) {
                        String status = apiResp.output.taskStatus;
                        System.out.println("Current task status: " + status);
                        if ("SUCCEEDED".equalsIgnoreCase(status)
                                || "FAILED".equalsIgnoreCase(status)
                                || "UNKNOWN".equalsIgnoreCase(status)) {
                            finished = true;
                            System.out.println("Task completed. Final result: ");
                            System.out.println(queryResponse);
                        }
                    } else {
                        System.out.println("Query response content: " + queryResponse);
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
                return;
            }
        }
    }

    static class ApiResponse {
        @SerializedName("request_id")
        String requestId;
        Output output;
    }

    static class Output {
        @SerializedName("task_id")
        String taskId;
        @SerializedName("task_status")
        String taskStatus;
    }
}

Python

import os
import time
import requests
import json

# 以下はシンガポールリージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription に置き換えてください。
API_URL_SUBMIT = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/asr/transcription"
# 以下はシンガポールリージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1/tasks/ に置き換えてください。
API_URL_QUERY_BASE = "https://dashscope-intl.aliyuncs.com/api/v1/tasks/"


def main():
    # シンガポールと北京リージョンでは API キーが異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
    # 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key = "sk-xxx"
    api_key = os.getenv("DASHSCOPE_API_KEY")

    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
        "X-DashScope-Async": "enable"
    }

    # 1. タスクの送信
    payload = {
        "model": "qwen3-asr-flash-filetrans",
        "input": {
            "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
        },
        "parameters": {
            "channel_id": [0],
            # "language": "zh",
            "enable_itn": False
            # "corpus": {
            #     "text": ""
            # }
        }
    }

    print("Submitting ASR transcription task...")
    try:
        submit_resp = requests.post(API_URL_SUBMIT, headers=headers, data=json.dumps(payload))
    except requests.RequestException as e:
        print(f"Failed to submit the task request: {e}")
        return

    if submit_resp.status_code != 200:
        print(f"Task submission failed! HTTP code: {submit_resp.status_code}")
        print(submit_resp.text)
        return

    resp_data = submit_resp.json()
    output = resp_data.get("output")
    if not output or "task_id" not in output:
        print("Abnormal submission response content:", resp_data)
        return

    task_id = output["task_id"]
    print(f"Task submitted. task_id: {task_id}")

    # 2. タスクステータスのポーリング
    finished = False
    while not finished:
        time.sleep(2)  # 再度クエリする前に 2 秒待機

        query_url = API_URL_QUERY_BASE + task_id
        try:
            query_resp = requests.get(query_url, headers=headers)
        except requests.RequestException as e:
            print(f"Failed to query the task: {e}")
            return

        if query_resp.status_code != 200:
            print(f"Task query failed! HTTP code: {query_resp.status_code}")
            print(query_resp.text)
            return

        query_data = query_resp.json()
        output = query_data.get("output")
        if output and "task_status" in output:
            status = output["task_status"]
            print(f"Current task status: {status}")

            if status.upper() in ("SUCCEEDED", "FAILED", "UNKNOWN"):
                finished = True
                print("Task completed. The final result is as follows:")
                print(json.dumps(query_data, indent=2, ensure_ascii=False))
        else:
            print("Query response content:", query_data)


if __name__ == "__main__":
    main()

Java SDK

import com.alibaba.dashscope.audio.qwen_asr.*;
import com.alibaba.dashscope.utils.Constants;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        // 以下はシンガポールリージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
        QwenTranscriptionParam param =
                QwenTranscriptionParam.builder()
                        // シンガポールと北京リージョンでは API キーが異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
                        // 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
                        .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                        .model("qwen3-asr-flash-filetrans")
                        .fileUrl("https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/sensevoice/rich_text_example_1.wav")
                        //.parameter("language", "zh")
                        //.parameter("channel_id", new ArrayList<String>(){{add("0");add("1");}})
                        .parameter("enable_itn", false)
                        //.parameter("corpus", new HashMap<String, String>() {{put("text", "");}})
                        .build();
        try {
            QwenTranscription transcription = new QwenTranscription();
            // タスクの送信
            QwenTranscriptionResult result = transcription.asyncCall(param);
            System.out.println("create task result: " + result);
            // タスクステータスのクエリ
            result = transcription.fetch(QwenTranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
            System.out.println("task status: " + result);
            // タスク完了まで待機
            result =
                    transcription.wait(
                            QwenTranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
            System.out.println("task result: " + result);
            // 音声認識結果の取得
            QwenTranscriptionTaskResult taskResult = result.getResult();
            if (taskResult != null) {
                // 認識結果の URL を取得
                String transcriptionUrl = taskResult.getTranscriptionUrl();
                // URL から結果を取得
                HttpURLConnection connection =
                        (HttpURLConnection) new URL(transcriptionUrl).openConnection();
                connection.setRequestMethod("GET");
                connection.connect();
                BufferedReader reader =
                        new BufferedReader(new InputStreamReader(connection.getInputStream()));
                // JSON 結果をフォーマットして出力
                Gson gson = new GsonBuilder().setPrettyPrinting().create();
                System.out.println(gson.toJson(gson.fromJson(reader, JsonObject.class)));
            }
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
    }
}

Python SDK

import json
import os
import sys
from http import HTTPStatus

import dashscope
from dashscope.audio.qwen_asr import QwenTranscription
from dashscope.api_entities.dashscope_response import TranscriptionResponse


# 文字起こしスクリプトの実行
if __name__ == '__main__':
    # シンガポールと北京リージョンでは 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")

    # 以下はシンガポールリージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
    dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
    task_response = QwenTranscription.async_call(
        model='qwen3-asr-flash-filetrans',
        file_url='https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/sensevoice/rich_text_example_1.wav',
        #language="",
        enable_itn=False
        #corpus= {
        #    "text": ""
        #}
    )
    print(f'task_response: {task_response}')
    print(task_response.output.task_id)
    query_response = QwenTranscription.fetch(task=task_response.output.task_id)
    print(f'query_response: {query_response}')
    task_result = QwenTranscription.wait(task=task_response.output.task_id)
    print(f'task_result: {task_result}')

qwen3-asr-flash

qwen3-asr-flash モデルは、最大 5 分の音声ファイルをサポートします。このモデルは、音声ファイルの公開アクセス可能な URL またはローカルファイルの直接アップロードを入力として受け入れます。また、認識結果のストリーミング出力もサポートしています。

入力:音声ファイルの URL

Python SDK

import os
import dashscope

# 以下はシンガポール/米国リージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

messages = [
    {"role": "system", "content": [{"text": ""}]},  # カスタム認識のコンテキストを設定
    {"role": "user", "content": [{"audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"}]}
]

response = dashscope.MultiModalConversation.call(
    # シンガポール/米国と北京リージョンでは API キーが異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
    # 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key = "sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        #"language": "zh", # オプション。音声の言語がわかっている場合は、このパラメーターで指定すると認識精度が向上します。
        "enable_itn":False
    }
)
print(response)

完全な結果が JSON 形式でコンソールに出力されます。結果には、ステータスコード、一意のリクエスト ID、認識されたコンテンツ、および呼び出しのトークン使用情報が含まれます。

{
    "status_code": 200,
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "annotations": [
                        {
                            "language": "zh",
                            "type": "audio_info",
                            "emotion": "neutral"
                        }
                    ],
                    "content": [
                        {
                            "text": "Welcome to Alibaba Cloud."
                        }
                    ],
                    "role": "assistant"
                }
            }
        ]
    },
    "usage": {
        "input_tokens_details": {
            "text_tokens": 0
        },
        "output_tokens_details": {
            "text_tokens": 6
        },
        "seconds": 1
    },
    "request_id": "568e2bf0-d6f2-97f8-9f15-a57b11dc6977"
}

Java SDK

import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

public class Main {
    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalMessage userMessage = MultiModalMessage.builder()
                .role(Role.USER.getValue())
                .content(Arrays.asList(
                        Collections.singletonMap("audio", "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3")))
                .build();

        MultiModalMessage sysMessage = MultiModalMessage.builder().role(Role.SYSTEM.getValue())
                // ここでカスタム認識のコンテキストを設定
                .content(Arrays.asList(Collections.singletonMap("text", "")))
                .build();

        Map<String, Object> asrOptions = new HashMap<>();
        asrOptions.put("enable_itn", false);
        // asrOptions.put("language", "zh"); // オプション。音声の言語がわかっている場合は、このパラメーターで指定すると認識精度が向上します。
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // シンガポール/米国と北京リージョンでは API キーが異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
                // 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen3-asr-flash")
                .message(sysMessage)
                .message(userMessage)
                .parameter("asr_options", asrOptions)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(JsonUtils.toJson(result));
    }
    public static void main(String[] args) {
        try {
            // 以下はシンガポール/米国リージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
            Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

完全な結果が JSON 形式でコンソールに出力されます。結果には、ステータスコード、一意のリクエスト ID、認識されたコンテンツ、および呼び出しのトークン使用情報が含まれます。

{
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "annotations": [
                        {
                            "language": "zh",
                            "type": "audio_info",
                            "emotion": "neutral"
                        }
                    ],
                    "content": [
                        {
                            "text": "Welcome to Alibaba Cloud."
                        }
                    ],
                    "role": "assistant"
                }
            }
        ]
    },
    "usage": {
        "input_tokens_details": {
            "text_tokens": 0
        },
        "output_tokens_details": {
            "text_tokens": 6
        },
        "seconds": 1
    },
    "request_id": "568e2bf0-d6f2-97f8-9f15-a57b11dc6977"
}

cURL

システムメッセージの text パラメーターを使用して、カスタム認識のコンテキストを設定できます。

# ======= 重要 =======
# 以下はシンガポール/米国リージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換えてください。
# シンガポール/米国と北京リージョンでは API キーが異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
# === 実行前にこのコメントを削除してください ===

curl --location --request POST "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data "{
    "model": "qwen3-asr-flash",
    "input": {
        "messages": [
            {
                "content": [
                    {
                        "text": ""
                    }
                ],
                "role": "system"
            },
            {
                "content": [
                    {
                        "audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
                    }
                ],
                "role": "user"
            }
        ]
    },
    "parameters": {
        "asr_options": {
            "enable_itn": false
        }
    }
}"

完全な結果が JSON 形式でコンソールに出力されます。結果には、ステータスコード、一意のリクエスト ID、認識されたコンテンツ、および呼び出しのトークン使用情報が含まれます。

{
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "annotations": [
                        {
                            "language": "zh",
                            "type": "audio_info",
                            "emotion": "neutral"
                        }
                    ],
                    "content": [
                        {
                            "text": "Welcome to Alibaba Cloud."
                        }
                    ],
                    "role": "assistant"
                }
            }
        ]
    },
    "usage": {
        "input_tokens_details": {
            "text_tokens": 0
        },
        "output_tokens_details": {
            "text_tokens": 6
        },
        "seconds": 1
    },
    "request_id": "568e2bf0-d6f2-97f8-9f15-a57b11dc6977"
}

入力:Base64 エンコードされた音声ファイル

Base64 エンコードされたデータ (データ URL) を次の形式で入力できます:data:<mediatype>;base64,<data>

  • <mediatype>:MIME (Multipurpose Internet Mail Extensions) タイプ

    これは音声フォーマットによって異なります。例:

    • WAV:audio/wav

    • MP3:audio/mpeg

    • M4A:audio/mp4

  • <data>:音声の Base64 エンコードされた文字列。

    Base64 エンコーディングはファイルサイズを増加させます。エンコードされたデータが入力音声サイズの制限である 10 MB を超えないように、元のファイルサイズを制御する必要があります。

  • 例:data:audio/wav;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA//PAxABQ/BXRbMPe4IQAhl9

    クリックしてサンプルコードを表示

    import base64, pathlib
    
    # input.mp3 はローカル音声ファイルです。ご利用の音声ファイルのパスに置き換え、音声要件を満たしていることを確認してください。
    file_path = pathlib.Path("input.mp3")
    base64_str = base64.b64encode(file_path.read_bytes()).decode()
    data_uri = f"data:audio/mpeg;base64,{base64_str}"
    import java.nio.file.*;
    import java.util.Base64;
    
    public class Main {
        /**
         * filePath はローカル音声ファイルです。ご利用の音声ファイルのパスに置き換え、音声要件を満たしていることを確認してください。
         */
        public static String toDataUrl(String filePath) throws Exception {
            byte[] bytes = Files.readAllBytes(Paths.get(filePath));
            String encoded = Base64.getEncoder().encodeToString(bytes);
            return "data:audio/mpeg;base64," + encoded;
        }
    
        // 使用例
        public static void main(String[] args) throws Exception {
            System.out.println(toDataUrl("input.mp3"));
        }
    }

Python SDK

import base64
import dashscope
import os
import pathlib

# 以下はシンガポール/米国リージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# ご利用の音声ファイルの実際のパスに置き換えてください
file_path = "welcome.mp3"
# ご利用の音声ファイルの実際の MIME タイプに置き換えてください
audio_mime_type = "audio/mpeg"

file_path_obj = pathlib.Path(file_path)
if not file_path_obj.exists():
    raise FileNotFoundError(f"Audio file not found: {file_path}")

base64_str = base64.b64encode(file_path_obj.read_bytes()).decode()
data_uri = f"data:{audio_mime_type};base64,{base64_str}"

messages = [
    {"role": "system", "content": [{"text": ""}]},  # カスタム認識のコンテキストを設定
    {"role": "user", "content": [{"audio": data_uri}]}
]
response = dashscope.MultiModalConversation.call(
    # シンガポール/米国と北京リージョンでは API キーが異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
    # 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key = "sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        # "language": "zh", # オプション。音声の言語がわかっている場合は、このパラメーターで指定すると認識精度が向上します。
        "enable_itn":False
    }
)
print(response)

Java SDK

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;

import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

public class Main {
    // ご利用の音声ファイルの実際のパスに置き換えてください
    private static final String AUDIO_FILE = "welcome.mp3";
    // ご利用の音声ファイルの実際の MIME タイプに置き換えてください
    private static final String AUDIO_MIME_TYPE = "audio/mpeg";

    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException, IOException {
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalMessage userMessage = MultiModalMessage.builder()
                .role(Role.USER.getValue())
                .content(Arrays.asList(
                        Collections.singletonMap("audio", toDataUrl())))
                .build();

        MultiModalMessage sysMessage = MultiModalMessage.builder().role(Role.SYSTEM.getValue())
                // ここでカスタム認識のコンテキストを設定
                .content(Arrays.asList(Collections.singletonMap("text", "")))
                .build();

        Map<String, Object> asrOptions = new HashMap<>();
        asrOptions.put("enable_itn", false);
        // asrOptions.put("language", "zh"); // オプション。音声の言語がわかっている場合は、このパラメーターで指定すると認識精度が向上します。
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // シンガポール/米国と北京リージョンでは API キーが異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
                // 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen3-asr-flash")
                .message(sysMessage)
                .message(userMessage)
                .parameter("asr_options", asrOptions)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(JsonUtils.toJson(result));
    }

    public static void main(String[] args) {
        try {
            // 以下はシンガポール/米国リージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
            Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }

    // データ URI の生成
    public static String toDataUrl() throws IOException {
        byte[] bytes = Files.readAllBytes(Paths.get(AUDIO_FILE));
        String encoded = Base64.getEncoder().encodeToString(bytes);
        return "data:" + AUDIO_MIME_TYPE + ";base64," + encoded;
    }
}

入力:ローカル音声ファイルの絶対パス

DashScope SDK を使用してローカルファイルを処理する場合、ファイルパスを提供する必要があります。以下の表は、オペレーティングシステムに基づいてファイルパスを作成する方法を示しています。

システム

SDK

渡すファイルパス

Linux または macOS

Python SDK

file://{absolute_path_of_the_file}

file:///home/images/test.png

Java SDK

Windows

Python SDK

file://{absolute_path_of_the_file}

file://D:/images/test.png

Java SDK

file:///{absolute_path_of_the_file}

file:///D:images/test.png

重要

ローカルファイルを使用する場合、API 呼び出しの制限は 100 QPS (クエリ/秒) であり、この制限を増やすことはできません。この方法は、本番環境、高同時実行状況、またはストレステストシナリオには推奨されません。より高い同時実行性が必要な場合は、ファイルを Object Storage Service (OSS) にアップロードし、音声ファイルの URL を使用して API を呼び出してください。

Python SDK

import os
import dashscope

# 以下はシンガポール/米国リージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# ABSOLUTE_PATH/welcome.mp3 をローカル音声ファイルの絶対パスに置き換えてください。
audio_file_path = "file://ABSOLUTE_PATH/welcome.mp3"

messages = [
    {"role": "system", "content": [{"text": ""}]},  # カスタム認識のコンテキストを設定
    {"role": "user", "content": [{"audio": audio_file_path}]}
]
response = dashscope.MultiModalConversation.call(
    # シンガポール/米国と北京リージョンでは API キーが異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
    # 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key = "sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        # "language": "zh", # オプション。音声の言語がわかっている場合は、このパラメーターで指定すると認識精度が向上します。
        "enable_itn":False
    }
)
print(response)

完全な結果が JSON 形式でコンソールに出力されます。結果には、ステータスコード、一意のリクエスト ID、認識されたコンテンツ、および呼び出しのトークン使用情報が含まれます。

{
  "status_code": 200,
  "request_id": "86579e33-9c51-4530-a699-30c1683bd92c",
  "code": "",
  "message": "",
  "output": {
    "text": null,
    "finish_reason": null,
    "choices": [
      {
        "finish_reason": "stop",
        "message": {
          "role": "assistant",
          "content": [
            {
              "text": "Do you have any plans for this weekend? The weather forecast says it might rain, so maybe we should book an indoor activity in advance."
            }
          ],
          "annotations": [
            {
              "emotion": "neutral",
              "language": "zh",
              "type": "audio_info"
            }
          ]
        }
      }
    ],
    "audio": null
  },
  "usage": {
    "input_tokens": 0,
    "output_tokens": 0,
    "characters": 0,
    "input_tokens_details": {
      "text_tokens": 15
    },
    "output_tokens_details": {
      "text_tokens": 29
    },
    "seconds": 7
  }
}

Java SDK

import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

public class Main {
    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        // ABSOLUTE_PATH/welcome.mp3 をローカルファイルの絶対パスに置き換えてください。
        String localFilePath = "file://ABSOLUTE_PATH/welcome.mp3";
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalMessage userMessage = MultiModalMessage.builder()
                .role(Role.USER.getValue())
                .content(Arrays.asList(
                        Collections.singletonMap("audio", localFilePath)))
                .build();

        MultiModalMessage sysMessage = MultiModalMessage.builder().role(Role.SYSTEM.getValue())
                // ここでカスタム認識のコンテキストを設定
                .content(Arrays.asList(Collections.singletonMap("text", "")))
                .build();

        Map<String, Object> asrOptions = new HashMap<>();
        asrOptions.put("enable_itn", false);
        // asrOptions.put("language", "zh"); // オプション。音声の言語がわかっている場合は、このパラメーターで指定すると認識精度が向上します。
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // シンガポールと北京リージョンでは API キーが異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
                // 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen3-asr-flash")
                .message(sysMessage)
                .message(userMessage)
                .parameter("asr_options", asrOptions)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(JsonUtils.toJson(result));
    }
    public static void main(String[] args) {
        try {
            // 以下はシンガポールリージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
            Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

完全な結果が JSON 形式でコンソールに出力されます。結果には、ステータスコード、一意のリクエスト ID、認識されたコンテンツ、および呼び出しのトークン使用情報が含まれます。

{
  "status_code": 200,
  "request_id": "86579e33-9c51-4530-a699-30c1683bd92c",
  "code": "",
  "message": "",
  "output": {
    "text": null,
    "finish_reason": null,
    "choices": [
      {
        "finish_reason": "stop",
        "message": {
          "role": "assistant",
          "content": [
            {
              "text": "Do you have any plans for this weekend? The weather forecast says it might rain, so maybe we should book an indoor activity in advance."
            }
          ],
          "annotations": [
            {
              "emotion": "neutral",
              "language": "zh",
              "type": "audio_info"
            }
          ]
        }
      }
    ],
    "audio": null
  },
  "usage": {
    "input_tokens": 0,
    "output_tokens": 0,
    "characters": 0,
    "input_tokens_details": {
      "text_tokens": 15
    },
    "output_tokens_details": {
      "text_tokens": 29
    },
    "seconds": 7
  }
}

ストリーミング出力

モデルは結果を段階的に生成できます。モデルの処理が完了した後に完全な結果を返す非ストリーミング出力とは異なり、ストリーミング出力は生成されるとすぐに中間結果を返します。これにより、出力をより早く確認できるため、待機時間が短縮されます。ストリーミング出力を有効にするには、呼び出し方法に応じて適切なパラメーターを設定します:

  • DashScope Python SDK:stream パラメーターを true に設定します。

  • DashScope Java SDK:streamCall インターフェイスを使用してサービスを呼び出します。

  • HTTP:リクエストヘッダーで X-DashScope-SSEenable に設定します。

Python SDK

import os
import dashscope

# 以下はシンガポール/米国リージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

messages = [
    {"role": "system", "content": [{"text": ""}]},  # カスタム認識のコンテキストを設定
    {"role": "user", "content": [{"audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"}]}
]
response = dashscope.MultiModalConversation.call(
    # シンガポール/米国と北京リージョンでは API キーが異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
    # 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:api_key = "sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        # "language": "zh", # オプション。音声の言語がわかっている場合は、このパラメーターで指定すると認識精度が向上します。
        "enable_itn":False
    },
    stream=True
)

for response in response:
    try:
        print(response["output"]["choices"][0]["message"].content[0]["text"])
    except:
        pass

中間認識結果が文字列としてコンソールに出力されます。

Welcome
Welcome to
Welcome to Alibaba
Welcome to Alibaba Cloud
Welcome to Alibaba Cloud.
Welcome to Alibaba Cloud.

Java SDK

import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import io.reactivex.Flowable;

public class Main {
    public static void simpleMultiModalConversationCall()
            throws ApiException, NoApiKeyException, UploadFileException {
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalMessage userMessage = MultiModalMessage.builder()
                .role(Role.USER.getValue())
                .content(Arrays.asList(
                        Collections.singletonMap("audio", "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3")))
                .build();

        MultiModalMessage sysMessage = MultiModalMessage.builder().role(Role.SYSTEM.getValue())
                // ここでカスタム認識のコンテキストを設定
                .content(Arrays.asList(Collections.singletonMap("text", "")))
                .build();

        Map<String, Object> asrOptions = new HashMap<>();
        asrOptions.put("enable_itn", false);
        // asrOptions.put("language", "zh"); // オプション。音声の言語がわかっている場合は、このパラメーターで指定すると認識精度が向上します。
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // シンガポールと北京リージョンでは API キーが異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
                // 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください:.apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen3-asr-flash")
                .message(sysMessage)
                .message(userMessage)
                .parameter("asr_options", asrOptions)
                .build();
        Flowable<MultiModalConversationResult> resultFlowable = conv.streamCall(param);
        resultFlowable.blockingForEach(item -> {
            try {
                System.out.println(item.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
            } catch (Exception e){
                System.exit(0);
            }
        });
    }

    public static void main(String[] args) {
        try {
            // 以下はシンガポールリージョンの URL です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
            Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
            simpleMultiModalConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

中間認識結果が文字列としてコンソールに出力されます。

Welcome
Welcome to
Welcome to Alibaba
Welcome to Alibaba Cloud
Welcome to Alibaba Cloud.
Welcome to Alibaba Cloud.

cURL

システムメッセージの text パラメーターを使用して、カスタム認識のコンテキストを設定できます。

# ======= 重要事項 =======
# 以下の URL はシンガポールリージョン用です。北京リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation に置き換える必要があります。
# シンガポールと北京リージョンでは API キーが異なります。API キーの取得:https://www.alibabacloud.com/help/ja/model-studio/get-api-key
# === 実行前にこのコメントブロックを削除してください ===

curl --location --request POST "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--header "X-DashScope-SSE: enable" \
--data "{
    "model": "qwen3-asr-flash",
    "input": {
        "messages": [
            {
                "content": [
                    {
                        "text": ""
                    }
                ],
                "role": "system"
            },
            {
                "content": [
                    {
                        "audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
                    }
                ],
                "role": "user"
            }
        ]
    },
    "parameters": {
        "incremental_output": true,
        "asr_options": {
            "enable_itn": false
        }
    }
}"

中間認識結果が JSON 形式でコンソールに出力されます。

id:1
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"annotations":[{"type":"audio_info","language":"zh","emotion": "neutral"}],"content":[{"text":"Welcome"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"output_tokens_details":{"text_tokens":2},"input_tokens_details":{"text_tokens":0},"seconds":1},"request_id":"05a122e9-2f28-9e37-8156-0e564a8126e0"}

id:2
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"annotations":[{"type":"audio_info","language":"zh","emotion": "neutral"}],"content":[{"text":"to"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"output_tokens_details":{"text_tokens":3},"input_tokens_details":{"text_tokens":0},"seconds":1},"request_id":"05a122e9-2f28-9e37-8156-0e564a8126e0"}

id:3
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"annotations":[{"type":"audio_info","language":"zh","emotion": "neutral"}],"content":[{"text":"Alibaba"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"output_tokens_details":{"text_tokens":4},"input_tokens_details":{"text_tokens":0},"seconds":1},"request_id":"05a122e9-2f28-9e37-8156-0e564a8126e0"}

id:4
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"annotations":[{"type":"audio_info","language":"zh","emotion": "neutral"}],"content":[{"text":"Cloud"}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"output_tokens_details":{"text_tokens":5},"input_tokens_details":{"text_tokens":0},"seconds":1},"request_id":"05a122e9-2f28-9e37-8156-0e564a8126e0"}

id:5
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"annotations":[{"type":"audio_info","language":"zh","emotion": "neutral"}],"content":[{"text":"."}],"role":"assistant"},"finish_reason":"null"}]},"usage":{"output_tokens_details":{"text_tokens":6},"input_tokens_details":{"text_tokens":0},"seconds":1},"request_id":"05a122e9-2f28-9e37-8156-0e564a8126e0"}

id:6
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":[],"role":"assistant"},"finish_reason":"stop"}]},"usage":{"output_tokens_details":{"text_tokens":6},"input_tokens_details":{"text_tokens":0},"seconds":1},"request_id":"05a122e9-2f28-9e37-8156-0e564a8126e0"}

主な使用法:コンテキストバイアス

Qwen3-ASR (Automatic Speech Recognition) はコンテキストバイアスをサポートしています。コンテキストを提供することで、名前、地名、製品用語などのドメイン固有の語彙の認識を改善し、文字起こしの精度を大幅に向上させることができます。この機能は、従来のホットワードソリューションよりも柔軟で強力です。

長さの制限:コンテキストは 10,000 トークンを超えることはできません。

使用法:API を呼び出す際に、システムメッセージの text パラメーターでテキストを渡すことができます。

サポートされるテキストタイプ:サポートされるテキストタイプには、以下が含まれますが、これらに限定されません:

  • さまざまな区切り文字を使用したホットワードリスト (例:ホットワード 1、ホットワード 2、ホットワード 3、ホットワード 4)

  • 任意の形式と長さのテキスト段落または章

  • 混合コンテンツ:単語リストと段落の任意の組み合わせ

  • 無関係または無意味なテキスト (文字化けを含む)。モデルは高いフォールトトレランスを持ち、無関係なテキストによって悪影響を受ける可能性は低いです。

例:

この例では、音声セグメントの正しい文字起こしは「What jargon from the investment banking industry do you know? First, the nine major foreign investment banks, the Bulge Bracket, BB...」です。

コンテキストバイアスなし

コンテキストバイアスがない場合、モデルは一部の投資銀行名を誤って認識します。例えば、「Bulge Bracket」は「Bird Rock」と認識されます。

認識結果:「投資銀行業界の専門用語を何かご存知ですか?まず、外資系大手投資銀行9社、バードロック、 BB...」

コンテキストバイアスを使用

コンテキストバイアスを使用すると、モデルは投資銀行名を正しく認識します。

認識結果: 「投資銀行業界の業界用語といえば、何があるか。まず、9 大外資系投資銀行、バルジ・ブラケット (BB)...」

この結果を達成するために、コンテキストに以下のいずれかのコンテンツを追加できます:

  • 単語リスト:

    • 単語リスト 1:

      Bulge Bracket, Boutique, Middle Market, domestic securities firms
    • 単語リスト 2:

      Bulge Bracket Boutique Middle Market domestic securities firms
    • 単語リスト 3:

      ['Bulge Bracket', 'Boutique', 'Middle Market', 'domestic securities firms']
  • 自然言語:

    The secrets of investment banking categories revealed!
    Recently, many friends from Australia have asked me, what exactly is an investment bank? Today, I'll explain it. For international students, investment banks can be mainly divided into four categories: Bulge Bracket, Boutique, Middle Market, and domestic securities firms.
    Bulge Bracket investment banks: These are what we often call the nine major investment banks, including Goldman Sachs, Morgan Stanley, etc. These large banks are enormous in both business scope and scale.
    Boutique investment banks: These banks are relatively small but highly specialized in their business areas. For example, Lazard, Evercore, etc., have deep expertise and experience in specific fields.
    Middle Market investment banks: This type of bank mainly serves medium-sized companies, providing services such as mergers and acquisitions, and IPOs. Although not as large as the major banks, they have a high influence in specific markets.
    Domestic securities firms: With the rise of the Chinese market, domestic securities firms are also playing an increasingly important role in the international market.
    In addition, there are some Position and business divisions, you can refer to the relevant charts. I hope this information helps you better understand investment banking and prepare for your future career!
  • 干渉のある自然言語:コンテキストには無関係なテキストが含まれていてもかまいません。以下の例には無関係な名前が含まれています。

    The secrets of investment banking categories revealed!
    Recently, many friends from Australia have asked me, what exactly is an investment bank? Today, I'll explain it. For international students, investment banks can be mainly divided into four categories: Bulge Bracket, Boutique, Middle Market, and domestic securities firms.
    Bulge Bracket investment banks: These are what we often call the nine major investment banks, including Goldman Sachs, Morgan Stanley, etc. These large banks are enormous in both business scope and scale.
    Boutique investment banks: These banks are relatively small but highly specialized in their business areas. For example, Lazard, Evercore, etc., have deep expertise and experience in specific fields.
    Middle Market investment banks: This type of bank mainly serves medium-sized companies, providing services such as mergers and acquisitions, and IPOs. Although not as large as the major banks, they have a high influence in specific markets.
    Domestic securities firms: With the rise of the Chinese market, domestic securities firms are also playing an increasingly important role in the international market.
    In addition, there are some Position and business divisions, you can refer to the relevant charts. I hope this information helps you better understand investment banking and prepare for your future career!
    Wang Haoxuan, Li Zihan, Zhang Jingxing, Liu Xinyi, Chen Junjie, Yang Siyuan, Zhao Yutong, Huang Zhiqiang, Zhou Zimo, Wu Yajing, Xu Ruoxi, Sun Haoran, Hu Jinyu, Zhu Chenxi, Guo Wenbo, He Jingshu, Gao Yuhang, Lin Yifei, 
    Zheng Xiaoyan, Liang Bowen, Luo Jiaqi, Song Mingzhe, Xie Wanting, Tang Ziqian, Han Mengyao, Feng Yiran, Cao Qinxue, Deng Zirui, Xiao Wangshu, Xu Jiashu, 
    Cheng Yinuo, Yuan Zhiruo, Peng Haoyu, Dong Simiao, Fan Jingyu, Su Zijin, Lv Wenxuan, Jiang Shihan, Ding Muchen, 
    Wei Shuyao, Ren Tianyou, Jiang Yichen, Hua Qingyu, Shen Xinghe, Fu Jinyu, Yao Xingchen, Zhong Lingyu, Yan Licheng, Jin Ruoshui, Taoranting, Qi Shaoshang, Xue Zhilan, Zou Yunfan, Xiong Ziang, Bai Wenfeng, Yi Qianfan

API リファレンス

詳細については、「Qwen 音声ファイル認識 API リファレンス」をご参照ください。

モデル機能の比較

以下の表で説明されている qwen3-asr-flash および qwen3-asr-flash-2025-09-08 モデルの機能は、米国 (バージニア) リージョンの対応する qwen3-asr-flash-us および qwen3-asr-flash-2025-09-08-us モデルにも適用されます。

特徴

qwen3-asr-flash-filetrans, qwen3-asr-flash-filetrans-2025-11-17

qwen3-asr-flash, qwen3-asr-flash-2025-09-08

サポート言語

中国語 (標準中国語、四川語、閩南語、呉語、広東語)、英語、日本語、ドイツ語、韓国語、ロシア語、フランス語、ポルトガル語、アラビア語、イタリア語、スペイン語、ヒンディー語、インドネシア語、タイ語、トルコ語、ウクライナ語、ベトナム語、チェコ語、デンマーク語、フィリピン語、フィンランド語、アイスランド語、マレー語、ノルウェー語、ポーランド語、スウェーデン語

サポートされる音声フォーマット

aac, amr, avi, flac, flv, m4a, mkv, mov, mp3, mp4, mpeg, ogg, opus, wav, webm, wma, wmv

aac, amr, avi, aiff, flac, flv, m4a, mkv, mp3, mpeg, ogg, opus, wav, webm, wma, wmv

サンプルレート

任意

チャンネル

任意

モデルはマルチチャンネル音声を異なる方法で処理します:

  • qwen3-asr-flash-filetrans:channel_id パラメーターを使用してオーディオトラックのインデックスを指定する必要があります。

  • qwen3-asr-flash:追加の処理は不要です。モデルはマルチチャンネル音声を平均化してマージしてから処理します。

入力フォーマット

認識対象ファイルの公開アクセス可能な URL

Base64 エンコードされたファイル、ローカルファイルの絶対パス、認識対象ファイルの公開アクセス可能な URL

音声サイズ/長さ

音声ファイルサイズ最大 2 GB、長さ最大 12 時間

音声ファイルサイズ最大 10 MB、長さ最大 5 分

感情認識

サポート 常時有効

タイムスタンプ

サポート 常時有効

非サポート

句読点予測

サポート 常時有効

コンテキストバイアス

サポート 設定可能

ITN

サポート デフォルトで無効、有効化可能。中国語と英語にのみ適用されます。

歌声認識

サポート 常時有効

ノイズリジェクション

サポート 常時有効

禁止用語フィルタリング

非サポート

話者分離

非サポート

フィラーワードフィルタリング

非サポート

VAD

サポート 常時有効

非サポート

レート制限 (RPM)

100

接続タイプ

RESTful API

Java/Python SDK, RESTful API

価格

シンガポール:0.000035 米ドル/秒

米国 (バージニア):0.000032 米ドル/秒

中国 (北京):0.000032 米ドル/秒

よくある質問

Q:API に公開アクセス可能な音声 URL を提供するにはどうすればよいですか?

Object Storage Service (OSS) を使用できます。これは、公開アクセス URL を簡単に生成できる、高可用性で信頼性の高いストレージサービスです。

生成された URL が公開アクセス可能であることを確認するには:ブラウザまたは curl コマンドで URL にアクセスし、音声ファイルが正常にダウンロードまたは再生されること (HTTP ステータスコード 200) を確認できます。

Q:音声フォーマットが要件を満たしているか確認するにはどうすればよいですか?

オープンソースツールの ffprobe を使用して、音声に関する詳細情報を迅速に取得できます:

# 音声コンテナフォーマット (format_name)、エンコーディング (codec_name)、サンプルレート (sample_rate)、チャンネル数 (channels) をクエリ
ffprobe -v error -show_entries format=format_name -show_entries stream=codec_name,sample_rate,channels -of default=noprint_wrappers=1 your_audio_file.mp3

Q:モデルの要件を満たすように音声を処理するにはどうすればよいですか?

オープンソースツールの FFmpeg を使用して、音声をトリミングまたは変換できます:

  • 音声のトリミング:長尺音声ファイルからクリップを抽出する

    # -i: 入力ファイル
    # -ss 00:01:30: トリミング開始時刻を設定 (1 分 30 秒から開始)
    # -t 00:02:00: トリミング時間を設定 (2 分間)
    # -c copy: 音声ストリームを直接コピーし、再エンコードしないため高速処理
    # output_clip.wav: 出力ファイル
    ffmpeg -i long_audio.wav -ss 00:01:30 -t 00:02:00 -c copy output_clip.wav
  • フォーマット変換

    例えば、任意の音声ファイルを 16 kHz、16 ビット、モノラルの WAV ファイルに変換できます。

    # -i: 入力ファイル
    # -ac 1: 音声チャンネル数を 1 (モノラル) に設定
    # -ar 16000: サンプルレートを 16000 Hz (16 kHz) に設定
    # -sample_fmt s16: サンプルフォーマットを 16 ビット符号付き整数 PCM に設定
    # output.wav: 出力ファイル
    ffmpeg -i input.mp3 -ac 1 -ar 16000 -sample_fmt s16 output.wav