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

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

最終更新日:Apr 21, 2026

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

主な特徴

  • 多言語認識:北京語、広東語、四川語などの言語や方言をサポートします。

  • 複雑な環境への適応:自動言語検出と非人間音フィルタリングにより、複雑な音響環境に対応します。

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

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

可用性

対応モデル:

  • 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-filetrans-2025-11-17 (スナップショット)

  • qwen3-asr-flash:qwen3-asr-flash (安定版、現在は qwen3-asr-flash-2025-09-08 と同等)、qwen3-asr-flash-2026-02-10 (最新のスナップショット)、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-filetrans-2025-11-17 (スナップショット)

  • qwen3-asr-flash:qwen3-asr-flash (安定版、現在は qwen3-asr-flash-2025-09-08 と同等)、qwen3-asr-flash-2026-02-10 (最新のスナップショット)、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 キーを取得します。SDK を使用する場合は、最新の SDK バージョンをインストールしてください。

DashScope

qwen3-asr-flash-filetrans

qwen3-asr-flash-filetrans は、最大 12 時間の音声ファイルの非同期文字起こし用に設計されています。入力としてパブリックにアクセス可能な音声ファイル URL が必要で、ローカルファイルのアップロードはサポートしていません。結果はタスク完了後に単一の応答で返されます。

cURL

まずタスクを送信してタスク 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 -X POST 'https://dashscope-intl.aliyuncs.com/api/v1/services/audio/asr/transcription' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-DashScope-Async: enable" \
-d '{
    "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,
        "enable_words": true
    }
}'

タスク実行結果の取得

# ======= 重要 =======
# 次の 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 -X GET 'https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id}' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "X-DashScope-Async: enable" \
-H "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"
                    }
                }
                """;*/
        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,
                        "enable_words": true
                    }
                }
                """;

        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,
            "enable_words": True
        }
    }

    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"Failed to query the task! 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("enable_words", true)
                        .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,
        enable_words=True
    )
    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 に置き換えてください。米国リージョンのモデルを使用する場合は、URL を https://dashscope-us.aliyuncs.com/api/v1 に置き換えてください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

messages = [
    {"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"),
    # 米国リージョンのモデルを使用する場合は、モデル名に「-us」サフィックスを追加してください (例:qwen3-asr-flash-us)。
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        #"language": "zh", # オプション。音声の言語がわかっている場合は、このパラメーターで指定すると認識精度が向上します。
        "enable_itn":False
    }
)
print(response)

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();

        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"))
                // 米国リージョンのモデルを使用する場合は、モデル名に「-us」サフィックスを追加してください (例:qwen3-asr-flash-us)。
                .model("qwen3-asr-flash")
                .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 に置き換えてください。米国リージョンのモデルを使用する場合は、URL を https://dashscope-us.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);
    }
}

cURL

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

curl -X POST "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "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
        }
    }
}'

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

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

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

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

    • WAV:audio/wav

    • MP3:audio/mpeg

  • <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

この例で使用されている音声ファイルは welcome.mp3 です。

import base64
import dashscope
import os
import pathlib

# 次の URL はシンガポールリージョン用です。中国 (北京) リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。米国リージョンのモデルを使用する場合は、URL を https://dashscope-us.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": "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"),
    # 米国リージョンのモデルを使用する場合は、モデル名に「-us」サフィックスを追加してください (例:qwen3-asr-flash-us)。
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        # "language": "zh", # オプション。音声の言語がわかっている場合は、このパラメーターで指定すると認識精度が向上します。
        "enable_itn":False
    }
)
print(response)

Java SDK

この例で使用されている音声ファイルは welcome.mp3 です。

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();

        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"))
                // 米国リージョンのモデルを使用する場合は、モデル名に「-us」サフィックスを追加してください (例:qwen3-asr-flash-us)。
                .model("qwen3-asr-flash")
                .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 に置き換えてください。米国リージョンのモデルを使用する場合は、URL を https://dashscope-us.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://{ファイルの絶対パス}

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

Java SDK

Windows

Python SDK

file://{ファイルの絶対パス}

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

Java SDK

file:///{ファイルの絶対パス}

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

重要

ローカルファイルの API 呼び出し制限は 100 QPS であり、スケールアップできません。本番環境や高同時実行数のシナリオではこの方法を使用しないでください。より高い同時実行数が必要な場合は、ファイルを OSS にアップロードし、音声ファイル URL を使用してください。

Python SDK

この例で使用されている音声ファイルは welcome.mp3 です。

import os
import dashscope

# 次の URL はシンガポールリージョン用です。中国 (北京) リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。米国リージョンのモデルを使用する場合は、URL を https://dashscope-us.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": "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"),
    # 米国リージョンのモデルを使用する場合は、モデル名に「-us」サフィックスを追加してください (例:qwen3-asr-flash-us)。
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        # "language": "zh", # オプション。音声の言語がわかっている場合は、このパラメーターで指定すると認識精度が向上します。
        "enable_itn":False
    }
)
print(response)

Java SDK

この例で使用されている音声ファイルは welcome.mp3 です。

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();

        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"))
                // 米国リージョンのモデルを使用する場合は、モデル名に「-us」サフィックスを追加してください (例:qwen3-asr-flash-us)。
                .model("qwen3-asr-flash")
                .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 に置き換えてください。米国リージョンのモデルを使用する場合は、URL を https://dashscope-us.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);
    }
}

ストリーミング出力

非ストリーミング出力では、モデルの処理が完了した後にのみ結果が返されます。ストリーミング出力はリアルタイムで結果を返し、待機時間を短縮します。呼び出し方法に応じてストリーミングを有効にしてください:

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

  • DashScope Java SDK:streamCall インターフェイスを介して API を呼び出します。

  • DashScope HTTP:ヘッダーで X-DashScope-SSEenable として指定します。

Python SDK

import os
import dashscope

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

messages = [
    {"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"),
    # 米国リージョンのモデルを使用する場合は、モデル名に「-us」サフィックスを追加してください (例:qwen3-asr-flash-us)。
    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

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();

        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"))
                // 米国リージョンのモデルを使用する場合は、モデル名に「-us」サフィックスを追加してください (例:qwen3-asr-flash-us)。
                .model("qwen3-asr-flash")
                .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 に置き換えてください。米国リージョンのモデルを使用する場合は、URL を https://dashscope-us.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);
    }
}

cURL

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

curl -X POST "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-DashScope-SSE: enable" \
-d '{
    "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
        }
    }
}'

OpenAI 互換

重要

米国リージョンは OpenAI 互換モードをサポートしていません。

qwen3-asr-flash シリーズのモデルのみが OpenAI 互換モードをサポートしています。このモードは、パブリックにアクセス可能な音声ファイル URL のみを受け付け、ローカルファイルパスは受け付けません。

OpenAI Python SDK 1.52.0 以降および Node.js SDK 4.68.0 以降が必要です。

asr_options パラメーターは標準の OpenAI パラメーターではありません。OpenAI SDK を使用する場合、extra_body で渡す必要があります。

入力:音声ファイル URL

Python SDK

from openai import OpenAI
import os

try:
    client = OpenAI(
        # シンガポール/米国リージョンと中国 (北京) リージョンの 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"),
        # 次の URL はシンガポール/米国リージョン用です。中国 (北京) リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/compatible-mode/v1 に置き換えてください。
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
    )
    

    stream_enabled = False  # ストリーミング出力を有効にするかどうか
    completion = client.chat.completions.create(
        model="qwen3-asr-flash",
        messages=[
            {
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
                        }
                    }
                ],
                "role": "user"
            }
        ],
        stream=stream_enabled,
        # stream が False に設定されている場合、stream_options パラメーターは設定できません。
        # stream_options={"include_usage": True},
        extra_body={
            "asr_options": {
                # "language": "zh",
                "enable_itn": False
            }
        }
    )
    if stream_enabled:
        full_content = ""
        print("Streaming output content:")
        for chunk in completion:
            # stream_options.include_usage が True の場合、最後のチャンクの choices フィールドは空のリストであり、スキップする必要があります。トークンの使用量は chunk.usage から取得できます。
            print(chunk)
            if chunk.choices and chunk.choices[0].delta.content:
                full_content += chunk.choices[0].delta.content
        print(f"Full content: {full_content}")
    else:
        print(f"Non-streaming output content: {completion.choices[0].message.content}")
except Exception as e:
    print(f"Error message: {e}")

Node.js SDK

// 準備:
// Windows/Mac/Linux の場合:
// 1. Node.js がインストールされていることを確認してください (バージョン >= 14 を推奨)。
// 2. 次のコマンドを実行して、必要な依存関係をインストールします:npm install openai

import OpenAI from "openai";

const client = new OpenAI({
  // シンガポール/米国リージョンと中国 (北京) リージョンの API キーは異なります。API キーの取得方法については、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
  // 環境変数が設定されていない場合は、次の行をご自身の Model Studio API キーに置き換えてください:apiKey: "sk-xxx",
  apiKey: process.env.DASHSCOPE_API_KEY,
  // 次の URL はシンガポール/米国リージョン用です。中国 (北京) リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/compatible-mode/v1 に置き換えてください。
  baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1", 
});

async function main() {
  try {
    const streamEnabled = false; // ストリーミング出力を有効にするかどうか
    const completion = await client.chat.completions.create({
      model: "qwen3-asr-flash",
      messages: [
        {
          role: "user",
          content: [
            {
              type: "input_audio",
              input_audio: {
                data: "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
              }
            }
          ]
        }
      ],
      stream: streamEnabled,
      // stream が False に設定されている場合、stream_options パラメーターは設定できません。
      // stream_options: {
      //   "include_usage": true
      // },
      extra_body: {
        asr_options: {
          // language: "zh",
          enable_itn: false
        }
      }
    });

    if (streamEnabled) {
      let fullContent = "";
      console.log("Streaming output content:");
      for await (const chunk of completion) {
        console.log(JSON.stringify(chunk));
        if (chunk.choices && chunk.choices.length > 0) {
          const delta = chunk.choices[0].delta;
          if (delta && delta.content) {
            fullContent += delta.content;
          }
        }
      }
      console.log(`Full content: ${fullContent}`);
    } else {
      console.log(`Non-streaming output content: ${completion.choices[0].message.content}`);
    }
  } catch (err) {
    console.error(`Error message: ${err}`);
  }
}

main();

cURL

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

curl -X POST 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3-asr-flash",
    "messages": [
        {
            "content": [
                {
                    "type": "input_audio",
                    "input_audio": {
                        "data": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"
                    }
                }
            ],
            "role": "user"
        }
    ],
    "stream":false,
    "asr_options": {
        "enable_itn": false
    }
}'

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

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

  • <mediatype>:MIME タイプ。

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

    • WAV:audio/wav

    • MP3:audio/mpeg

  • <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

この例で使用されている音声ファイルは welcome.mp3 です。

import base64
from openai import OpenAI
import os
import pathlib

try:
    # 実際の音声ファイルのパスに置き換えてください。
    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}"

    client = OpenAI(
        # シンガポール/米国リージョンと中国 (北京) リージョンの 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"),
        # 次の URL はシンガポール/米国リージョン用です。中国 (北京) リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/compatible-mode/v1 に置き換えてください。
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
    )
    

    stream_enabled = False  # ストリーミング出力を有効にするかどうか
    completion = client.chat.completions.create(
        model="qwen3-asr-flash",
        messages=[
            {
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": data_uri
                        }
                    }
                ],
                "role": "user"
            }
        ],
        stream=stream_enabled,
        # stream が False に設定されている場合、stream_options パラメーターは設定できません。
        # stream_options={"include_usage": True},
        extra_body={
            "asr_options": {
                # "language": "zh",
                "enable_itn": False
            }
        }
    )
    if stream_enabled:
        full_content = ""
        print("Streaming output content:")
        for chunk in completion:
            # stream_options.include_usage が True の場合、最後のチャンクの choices フィールドは空のリストであり、スキップする必要があります。トークンの使用量は chunk.usage から取得できます。
            print(chunk)
            if chunk.choices and chunk.choices[0].delta.content:
                full_content += chunk.choices[0].delta.content
        print(f"Full content: {full_content}")
    else:
        print(f"Non-streaming output content: {completion.choices[0].message.content}")
except Exception as e:
    print(f"Error message: {e}")

Node.js SDK

この例で使用されている音声ファイルは welcome.mp3 です。

// 準備:
// Windows/Mac/Linux の場合:
// 1. Node.js がインストールされていることを確認してください (バージョン >= 14 を推奨)。
// 2. 次のコマンドを実行して、必要な依存関係をインストールします:npm install openai

import OpenAI from "openai";
import { readFileSync } from 'fs';

const client = new OpenAI({
  // シンガポール/米国リージョンと中国 (北京) リージョンの API キーは異なります。API キーの取得方法については、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください。
  // 環境変数が設定されていない場合は、次の行をご自身の Model Studio API キーに置き換えてください:apiKey: "sk-xxx",
  apiKey: process.env.DASHSCOPE_API_KEY,
  // 次の URL はシンガポール/米国リージョン用です。中国 (北京) リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/compatible-mode/v1 に置き換えてください。
  baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1", 
});

const encodeAudioFile = (audioFilePath) => {
    const audioFile = readFileSync(audioFilePath);
    return audioFile.toString('base64');
};

// 実際の音声ファイルのパスに置き換えてください。
const dataUri = `data:audio/mpeg;base64,${encodeAudioFile("welcome.mp3")}`;

async function main() {
  try {
    const streamEnabled = false; // ストリーミング出力を有効にするかどうか
    const completion = await client.chat.completions.create({
      model: "qwen3-asr-flash",
      messages: [
        {
          role: "user",
          content: [
            {
              type: "input_audio",
              input_audio: {
                data: dataUri
              }
            }
          ]
        }
      ],
      stream: streamEnabled,
      // stream が False に設定されている場合、stream_options パラメーターは設定できません。
      // stream_options: {
      //   "include_usage": true
      // },
      extra_body: {
        asr_options: {
          // language: "zh",
          enable_itn: false
        }
      }
    });

    if (streamEnabled) {
      let fullContent = "";
      console.log("Streaming output content:");
      for await (const chunk of completion) {
        console.log(JSON.stringify(chunk));
        if (chunk.choices && chunk.choices.length > 0) {
          const delta = chunk.choices[0].delta;
          if (delta && delta.content) {
            fullContent += delta.content;
          }
        }
      }
      console.log(`Full content: ${fullContent}`);
    } else {
      console.log(`Non-streaming output content: ${completion.choices[0].message.content}`);
    }
  } catch (err) {
    console.error(`Error message: ${err}`);
  }
}

main();

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-2026-02-10, 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, mkv, mp3, mpeg, ogg, opus, wav, webm, wma, wmv

サンプルレート

音声フォーマットによって異なります:

  • PCM フォーマット音声:16 kHz

  • その他の音声フォーマット:任意 (サーバー側で認識前に音声を 16 kHz にリサンプリングします)

サウンドチャンネル

任意

マルチチャンネル音声の扱いはモデルによって異なります:

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

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

入力形式

認識対象ファイルのパブリックにアクセス可能な URL

Base64 エンコードされたファイル、ローカルファイルの絶対パス、または認識対象ファイルのパブリックにアクセス可能な URL

音声サイズ/時間

最大サイズ:2 GB。最大時間:12 時間。

最大サイズ:10 MB。最大時間:5 分。

感情認識

対応 常時有効結果は emotion レスポンスパラメーターで確認できます。

タイムスタンプ

対応 常時有効。タイムスタンプのレベルは enable_words リクエストパラメーターで制御できます。

単語レベルのタイムスタンプは、中国語、英語、日本語、韓国語、ドイツ語、フランス語、スペイン語、イタリア語、ポルトガル語、ロシア語のみでサポートされています。他の言語では精度が保証されません。

非対応

句読点予測

対応 常時有効

ホットワード

非対応

ITN

対応 デフォルトでオフ、有効化可能。中国語と英語にのみ適用されます。

歌声認識

対応 常時有効

ノイズ除去

対応 常時有効

禁止用語フィルター

非対応

話者分離

非対応

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

非対応

VAD

対応 常時有効

非対応

レート制限 (RPM)

100

接続タイプ

DashScope:Java/Python SDK、RESTful API

DashScope:Java/Python SDK、RESTful API

OpenAI:Python/Node.js 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