全部产品
Search
文档中心

Alibaba Cloud Model Studio:Pengenalan file audio - Qwen

更新时间:Jan 06, 2026

Model pengenalan file audio Qwen mengonversi rekaman audio menjadi teks dan mendukung fitur seperti pengenalan multi-bahasa, pengenalan suara bernyanyi, serta penekanan kebisingan.

Fitur utama

  • Pengenalan multi-bahasa: Mendukung berbagai bahasa, termasuk Mandarin dan dialeknya seperti Kanton dan Sichuan.

  • Adaptasi terhadap lingkungan kompleks: Mampu menangani lingkungan akustik yang kompleks, mendukung deteksi bahasa otomatis, serta penyaringan cerdas terhadap suara non-manusia.

  • Pengenalan suara bernyanyi: Menyalin seluruh lagu, bahkan dengan musik latar (BGM).

  • Context biasing: Meningkatkan akurasi pengenalan dengan mengonfigurasi konteks. Untuk detailnya, lihat Context biasing.

  • Pengenalan emosi: Mengenali berbagai kondisi emosional, termasuk kaget, tenang, bahagia, sedih, jijik, marah, dan takut.

Ketersediaan

Model yang didukung:

Layanan ini menyediakan dua model inti:

  • Qwen3-ASR-Flash-Filetrans: Dirancang untuk pengenalan asinkron file audio panjang hingga 12 jam, cocok untuk skenario seperti transkripsi catatan rapat dan wawancara.

  • Qwen3-ASR-Flash: Dirancang untuk pengenalan sinkron atau streaming file audio pendek hingga 5 menit, cocok untuk skenario seperti pesan suara dan keterangan real-time.

Internasional (Singapura)

Saat memanggil model berikut, pilih API key dari wilayah Singapura:

  • Qwen3-ASR-Flash-Filetrans: qwen3-asr-flash-filetrans, qwen3-asr-flash-filetrans-2025-11-17 (snapshot)

  • Qwen3-ASR-Flash: qwen3-asr-flash (stable, saat ini setara dengan qwen3-asr-flash-2025-09-08), qwen3-asr-flash-2025-09-08 (snapshot)

AS (Virginia)

Saat memanggil model berikut, pilih API key dari wilayah AS:

Qwen3-ASR-Flash: qwen3-asr-flash-us (stable, saat ini setara dengan qwen3-asr-flash-2025-09-08-us), qwen3-asr-flash-2025-09-08-us (snapshot)

China (Beijing)

Saat memanggil model berikut, pilih API key dari wilayah Beijing:

  • Qwen3-ASR-Flash-Filetrans: qwen3-asr-flash-filetrans, qwen3-asr-flash-filetrans-2025-11-17 (snapshot)

  • Qwen3-ASR-Flash: qwen3-asr-flash (stable, saat ini setara dengan qwen3-asr-flash-2025-09-08), qwen3-asr-flash-2025-09-08 (snapshot)

Untuk informasi lebih lanjut, lihat Daftar model.

Pemilihan model

Skenario

Model yang direkomendasikan

Alasan

Catatan

Pengenalan audio panjang

qwen3-asr-flash-filetrans

Mendukung rekaman hingga 12 jam. Menyediakan pengenalan emosi dan timestamp tingkat kalimat, cocok untuk pengindeksan dan analisis selanjutnya.

Ukuran file audio tidak boleh melebihi 2 GB, dan durasi tidak boleh melebihi 12 jam.

Pengenalan audio pendek

qwen3-asr-flash atau qwen3-asr-flash-us)

Pengenalan latensi rendah untuk audio pendek.

Ukuran file audio tidak boleh melebihi 10 MB, dan durasi tidak boleh melebihi 5 menit.

Pemeriksaan kualitas layanan pelanggan

qwen3-asr-flash-filetrans, qwen3-asr-flash atau qwen3-asr-flash-us)

Dapat menganalisis emosi pelanggan.

Tidak mendukung penyaringan kata sensitif atau diarization pembicara. Pilih model yang sesuai berdasarkan durasi audio.

Pembuatan keterangan program berita/wawancara

qwen3-asr-flash-filetrans

Audio panjang, prediksi tanda baca, dan timestamp untuk langsung menghasilkan keterangan terstruktur.

Memerlukan post-processing untuk menghasilkan file subtitle standar. Pilih model yang sesuai berdasarkan durasi audio.

Lokalisasi video multibahasa

qwen3-asr-flash-filetrans, qwen3-asr-flash atau qwen3-asr-flash-us)

Mencakup berbagai bahasa dan dialek, cocok untuk pembuatan keterangan lintas bahasa.

Pilih model yang sesuai berdasarkan durasi audio.

Analisis audio bernyanyi

qwen3-asr-flash-filetrans, qwen3-asr-flash atau qwen3-asr-flash-us)

Mengenali lirik dan menganalisis emosi, cocok untuk pengindeksan dan rekomendasi lagu.

Pilih model yang sesuai berdasarkan durasi audio.

Untuk informasi lebih lanjut, lihat Perbandingan fitur model.

Memulai

Layanan ini saat ini tidak mendukung uji coba online. Anda dapat memanggil API-nya sebagai gantinya. Contoh kode berikut menunjukkan cara memanggil API.

Sebelum memulai, pastikan Anda telah membuat dan mengonfigurasi API key. Jika menggunakan SDK, Anda juga harus menginstal versi terbaru SDK DashScope.

qwen3-asr-flash-filetrans

qwen3-asr-flash-filetrans dirancang untuk pengenalan asinkron file audio dan mendukung rekaman hingga 12 jam. Model ini memerlukan input berupa URL file audio yang dapat diakses publik dan tidak mendukung unggahan langsung file lokal. Ini adalah API non-streaming yang mengembalikan semua hasil pengenalan sekaligus setelah tugas selesai.

cURL

Saat menggunakan cURL untuk pengenalan ucapan, pertama-tama kirimkan tugas untuk mendapatkan ID tugas (task_id), lalu gunakan ID tersebut untuk mengambil hasil eksekusi tugas.

Kirimkan tugas

# ======= Penting =======
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription
# API key untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===

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
    }
}'

Ambil hasil eksekusi tugas

# ======= Penting =======
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}. Catatan: Ganti {task_id} dengan ID tugas yang akan diquery.
# API key untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===

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"

Contoh lengkap

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 {
    // Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: 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";
    // Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: 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 key untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
        // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: String apiKey = "sk-xxx"
        String apiKey = System.getenv("DASHSCOPE_API_KEY");

        OkHttpClient client = new OkHttpClient();

        // 1. Kirimkan tugas
        /*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("Tugas dikirim. task_id: " + taskId);
                } else {
                    System.out.println("Konten respons pengiriman: " + respBody);
                    return;
                }
            } else {
                System.out.println("Pengiriman tugas gagal! Kode HTTP: " + response.code());
                if (response.body() != null) {
                    System.out.println(response.body().string());
                }
                return;
            }
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }

        // 2. Poll status tugas
        boolean finished = false;
        while (!finished) {
            try {
                TimeUnit.SECONDS.sleep(2);  // Tunggu 2 detik sebelum mengquery lagi
            } 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("Status tugas saat ini: " + status);
                        if ("SUCCEEDED".equalsIgnoreCase(status)
                                || "FAILED".equalsIgnoreCase(status)
                                || "UNKNOWN".equalsIgnoreCase(status)) {
                            finished = true;
                            System.out.println("Tugas selesai. Hasil akhir: ");
                            System.out.println(queryResponse);
                        }
                    } else {
                        System.out.println("Konten respons query: " + 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

# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription
API_URL_SUBMIT = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/asr/transcription"
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1/tasks/
API_URL_QUERY_BASE = "https://dashscope-intl.aliyuncs.com/api/v1/tasks/"


def main():
    # API key untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: 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. Kirimkan tugas
    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("Mengirimkan tugas transkripsi ASR...")
    try:
        submit_resp = requests.post(API_URL_SUBMIT, headers=headers, data=json.dumps(payload))
    except requests.RequestException as e:
        print(f"Gagal mengirim permintaan tugas: {e}")
        return

    if submit_resp.status_code != 200:
        print(f"Pengiriman tugas gagal! Kode HTTP: {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("Konten respons pengiriman tidak normal:", resp_data)
        return

    task_id = output["task_id"]
    print(f"Tugas dikirim. task_id: {task_id}")

    # 2. Poll status tugas
    finished = False
    while not finished:
        time.sleep(2)  # Tunggu 2 detik sebelum mengquery lagi

        query_url = API_URL_QUERY_BASE + task_id
        try:
            query_resp = requests.get(query_url, headers=headers)
        except requests.RequestException as e:
            print(f"Gagal mengquery tugas: {e}")
            return

        if query_resp.status_code != 200:
            print(f"Query tugas gagal! Kode HTTP: {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"Status tugas saat ini: {status}")

            if status.upper() in ("SUCCEEDED", "FAILED", "UNKNOWN"):
                finished = True
                print("Tugas selesai. Hasil akhir sebagai berikut:")
                print(json.dumps(query_data, indent=2, ensure_ascii=False))
        else:
            print("Konten respons query:", 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) {
        // Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
        QwenTranscriptionParam param =
                QwenTranscriptionParam.builder()
                        // API key untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
                        // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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();
            // Kirimkan tugas
            QwenTranscriptionResult result = transcription.asyncCall(param);
            System.out.println("hasil membuat tugas: " + result);
            // Query status tugas
            result = transcription.fetch(QwenTranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
            System.out.println("status tugas: " + result);
            // Tunggu hingga tugas selesai
            result =
                    transcription.wait(
                            QwenTranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
            System.out.println("hasil tugas: " + result);
            // Dapatkan hasil pengenalan ucapan
            QwenTranscriptionTaskResult taskResult = result.getResult();
            if (taskResult != null) {
                // Dapatkan URL hasil pengenalan
                String transcriptionUrl = taskResult.getTranscriptionUrl();
                // Ambil hasil dari URL
                HttpURLConnection connection =
                        (HttpURLConnection) new URL(transcriptionUrl).openConnection();
                connection.setRequestMethod("GET");
                connection.connect();
                BufferedReader reader =
                        new BufferedReader(new InputStreamReader(connection.getInputStream()));
                // Format dan cetak hasil 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


# jalankan skrip transkripsi
if __name__ == '__main__':
    # API key untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: dashscope.api_key = "sk-xxx"
    dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")

    # Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: 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

Model qwen3-asr-flash mendukung file audio hingga 5 menit dan menerima URL file audio yang dapat diakses publik atau unggahan langsung file lokal sebagai input. Model ini juga mendukung keluaran streaming untuk hasil pengenalan.

Input: URL file audio

Python SDK

import os
import dashscope

# Berikut ini adalah URL untuk wilayah Singapura/AS. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

messages = [
    {"role": "system", "content": [{"text": ""}]},  # Konfigurasikan konteks untuk pengenalan kustom
    {"role": "user", "content": [{"audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"}]}
]

response = dashscope.MultiModalConversation.call(
    # API key untuk wilayah Singapura/AS dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key = "sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        #"language": "zh", # Opsional. Jika bahasa audio diketahui, tentukan dengan parameter ini untuk meningkatkan akurasi pengenalan.
        "enable_itn":False
    }
)
print(response)

Hasil lengkap dicetak ke konsol dalam format JSON, mencakup kode status, ID permintaan unik, konten yang dikenali, serta informasi penggunaan token untuk pemanggilan tersebut.

{
    "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())
                // Konfigurasikan konteks untuk pengenalan kustom di sini
                .content(Arrays.asList(Collections.singletonMap("text", "")))
                .build();

        Map<String, Object> asrOptions = new HashMap<>();
        asrOptions.put("enable_itn", false);
        // asrOptions.put("language", "zh"); // Opsional. Jika bahasa audio diketahui, tentukan dengan parameter ini untuk meningkatkan akurasi pengenalan.
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // API key untuk wilayah Singapura/AS dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
                // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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 {
            // Berikut ini adalah URL untuk wilayah Singapura/AS. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: 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);
    }
}

Hasil lengkap dicetak ke konsol dalam format JSON, mencakup kode status, ID permintaan unik, konten yang dikenali, serta informasi penggunaan token untuk pemanggilan tersebut.

{
    "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

Anda dapat mengonfigurasi konteks untuk pengenalan kustom menggunakan parameter text dalam pesan sistem.

# ======= Penting =======
# Berikut ini adalah URL untuk wilayah Singapura/AS. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# API key untuk wilayah Singapura/AS dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===

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
        }
    }
}"

Hasil lengkap dicetak ke konsol dalam format JSON, mencakup kode status, ID permintaan unik, konten yang dikenali, serta informasi penggunaan token untuk pemanggilan tersebut.

{
    "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"
}

Input: File audio yang dikodekan Base64

Anda dapat memasukkan data yang dikodekan Base64 (Data URL) dalam format berikut: data:<mediatype>;base64,<data>.

  • <mediatype>: Multipurpose Internet Mail Extensions (MIME) type

    Bervariasi tergantung pada format audio. Misalnya:

    • WAV: audio/wav

    • MP3: audio/mpeg

    • M4A: audio/mp4

  • <data>: String yang dikodekan Base64 dari audio.

    Pengkodean Base64 meningkatkan ukuran file. Anda harus mengontrol ukuran file asli agar data yang dikodekan tidak melebihi batas ukuran input audio 10 MB.

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

    Klik untuk melihat contoh kode

    import base64, pathlib
    
    # input.mp3 adalah file audio lokal. Ganti dengan jalur ke file audio Anda dan pastikan memenuhi persyaratan audio.
    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 adalah file audio lokal. Ganti dengan jalur ke file audio Anda dan pastikan memenuhi persyaratan audio.
         */
        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;
        }
    
        // Contoh penggunaan
        public static void main(String[] args) throws Exception {
            System.out.println(toDataUrl("input.mp3"));
        }
    }

Python SDK

import base64
import dashscope
import os
import pathlib

# Berikut ini adalah URL untuk wilayah Singapura/AS. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# Ganti dengan jalur aktual ke file audio Anda
file_path = "welcome.mp3"
# Ganti dengan tipe MIME aktual file audio Anda
audio_mime_type = "audio/mpeg"

file_path_obj = pathlib.Path(file_path)
if not file_path_obj.exists():
    raise FileNotFoundError(f"File audio tidak ditemukan: {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": ""}]},  # Konfigurasikan konteks untuk pengenalan kustom
    {"role": "user", "content": [{"audio": data_uri}]}
]
response = dashscope.MultiModalConversation.call(
    # API key untuk wilayah Singapura/AS dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key = "sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        # "language": "zh", # Opsional. Jika bahasa audio diketahui, tentukan dengan parameter ini untuk meningkatkan akurasi pengenalan.
        "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 {
    // Ganti dengan jalur aktual ke file audio Anda
    private static final String AUDIO_FILE = "welcome.mp3";
    // Ganti dengan tipe MIME aktual file audio Anda
    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())
                // Konfigurasikan konteks untuk pengenalan kustom di sini
                .content(Arrays.asList(Collections.singletonMap("text", "")))
                .build();

        Map<String, Object> asrOptions = new HashMap<>();
        asrOptions.put("enable_itn", false);
        // asrOptions.put("language", "zh"); // Opsional. Jika bahasa audio diketahui, tentukan dengan parameter ini untuk meningkatkan akurasi pengenalan.
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // API key untuk wilayah Singapura/AS dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
                // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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 {
            // Berikut ini adalah URL untuk wilayah Singapura/AS. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: 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);
    }

    // Hasilkan data 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;
    }
}

Input: Jalur mutlak file audio lokal

Saat menggunakan SDK DashScope untuk memproses file lokal, Anda harus menyediakan jalur file. Tabel berikut menunjukkan cara membuat jalur file berdasarkan sistem operasi Anda.

Sistem

SDK

Jalur file untuk diteruskan

Contoh

Linux atau macOS

Python SDK

file://{jalur_mutlak_file}

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

Java SDK

Windows

Python SDK

file://{jalur_mutlak_file}

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

Java SDK

file:///{jalur_absolut_file}

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

Penting

Saat menggunakan file lokal, batas pemanggilan API adalah 100 permintaan per detik (QPS), dan batas ini tidak dapat ditingkatkan. Metode ini tidak disarankan untuk lingkungan produksi, situasi konkurensi tinggi, atau skenario uji stres. Untuk konkurensi yang lebih tinggi, unggah file ke Object Storage Service (OSS) dan panggil API menggunakan URL file audio.

Python SDK

import os
import dashscope

# Berikut ini adalah URL untuk wilayah Singapura/AS. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# Ganti ABSOLUTE_PATH/welcome.mp3 dengan jalur mutlak ke file audio lokal Anda.
audio_file_path = "file://ABSOLUTE_PATH/welcome.mp3"

messages = [
    {"role": "system", "content": [{"text": ""}]},  # Konfigurasikan konteks untuk pengenalan kustom
    {"role": "user", "content": [{"audio": audio_file_path}]}
]
response = dashscope.MultiModalConversation.call(
    # API key untuk wilayah Singapura/AS dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key = "sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        # "language": "zh", # Opsional. Jika bahasa audio diketahui, tentukan dengan parameter ini untuk meningkatkan akurasi pengenalan.
        "enable_itn":False
    }
)
print(response)

Hasil lengkap dicetak ke konsol dalam format JSON, mencakup kode status, ID permintaan unik, konten yang dikenali, serta informasi penggunaan token untuk pemanggilan tersebut.

{
  "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 {
        // Ganti ABSOLUTE_PATH/welcome.mp3 dengan jalur mutlak ke file lokal Anda.
        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())
                // Konfigurasikan konteks untuk pengenalan kustom di sini
                .content(Arrays.asList(Collections.singletonMap("text", "")))
                .build();

        Map<String, Object> asrOptions = new HashMap<>();
        asrOptions.put("enable_itn", false);
        // asrOptions.put("language", "zh"); // Opsional. Jika bahasa audio diketahui, tentukan dengan parameter ini untuk meningkatkan akurasi pengenalan.
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // API key untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
                // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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 {
            // Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: 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);
    }
}

Hasil lengkap dicetak ke konsol dalam format JSON, mencakup kode status, ID permintaan unik, konten yang dikenali, serta informasi penggunaan token untuk pemanggilan tersebut.

{
  "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
  }
}

Keluaran streaming

Model dapat menghasilkan hasil secara bertahap. Berbeda dengan keluaran non-streaming yang mengembalikan hasil lengkap setelah model selesai memproses, keluaran streaming mengembalikan hasil antara saat dihasilkan. Hal ini mengurangi waktu tunggu dengan memungkinkan Anda melihat keluaran lebih cepat. Untuk mengaktifkan keluaran streaming, atur parameter yang sesuai berdasarkan metode pemanggilan Anda:

  • DashScope Python SDK: Atur parameter stream ke true.

  • DashScope Java SDK: Panggil layanan menggunakan antarmuka streamCall.

  • HTTP: Atur X-DashScope-SSE ke enable di header permintaan.

Python SDK

import os
import dashscope

# Berikut ini adalah URL untuk wilayah Singapura/AS. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

messages = [
    {"role": "system", "content": [{"text": ""}]},  # Konfigurasikan konteks untuk pengenalan kustom
    {"role": "user", "content": [{"audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"}]}
]
response = dashscope.MultiModalConversation.call(
    # API key untuk wilayah Singapura/AS dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key = "sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3-asr-flash",
    messages=messages,
    result_format="message",
    asr_options={
        # "language": "zh", # Opsional. Jika bahasa audio diketahui, tentukan dengan parameter ini untuk meningkatkan akurasi pengenalan.
        "enable_itn":False
    },
    stream=True
)

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

Hasil pengenalan antara dicetak ke konsol sebagai string.

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())
                // Konfigurasikan konteks untuk pengenalan kustom di sini
                .content(Arrays.asList(Collections.singletonMap("text", "")))
                .build();

        Map<String, Object> asrOptions = new HashMap<>();
        asrOptions.put("enable_itn", false);
        // asrOptions.put("language", "zh"); // Opsional. Jika bahasa audio diketahui, tentukan dengan parameter ini untuk meningkatkan akurasi pengenalan.
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // API key untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
                // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .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 {
            // Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: 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);
    }
}

Hasil pengenalan antara dicetak ke konsol sebagai string.

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

cURL

Anda dapat mengonfigurasi konteks untuk pengenalan kustom menggunakan parameter text dalam pesan sistem.

# ======= Catatan Penting =======
# URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, Anda harus mengganti URL dengan: https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# API key untuk wilayah Singapura dan Beijing berbeda. Dapatkan API key: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === Hapus blok komentar ini sebelum eksekusi ===

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
        }
    }
}"

Hasil pengenalan antara dicetak ke konsol dalam format 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"}

Penggunaan Utama: Pembiasan Konteks

Qwen3-ASR (Automatic Speech Recognition) mendukung context biasing. Anda dapat memberikan konteks untuk meningkatkan pengenalan kosakata spesifik domain, seperti nama, tempat, dan istilah produk, yang secara signifikan meningkatkan akurasi transkripsi. Fitur ini lebih fleksibel dan kuat dibandingkan solusi hotword tradisional.

Batas panjang: Konteks tidak boleh melebihi 10.000 token.

Penggunaan: Saat memanggil API, Anda dapat meneruskan teks dalam parameter text dari pesan sistem.

Jenis teks yang didukung: Jenis teks yang didukung meliputi, namun tidak terbatas pada, hal-hal berikut:

  • Daftar hotword menggunakan berbagai pemisah (misalnya, hotword 1, hotword 2, hotword 3, hotword 4)

  • Paragraf teks atau bab dalam format dan panjang apa pun

  • Konten campuran: Kombinasi apa pun dari daftar kata dan paragraf

  • Teks yang tidak relevan atau tidak berarti (termasuk karakter acak). Model memiliki toleransi kesalahan tinggi dan kemungkinan besar tidak terpengaruh negatif oleh teks yang tidak relevan.

Contoh:

Dalam contoh ini, transkripsi yang benar untuk segmen audio adalah: "Jargon apa dari industri perbankan investasi yang Anda ketahui? Pertama, sembilan bank investasi asing utama, Bulge Bracket, BB…".

Tanpa context biasing

Tanpa context biasing, model salah mengenali beberapa nama bank investasi. Misalnya, "Bulge Bracket" dikenali sebagai "Bird Rock".

Hasil pengenalan: "Jargon apa saja dari industri perbankan investasi yang Anda ketahui? Pertama, sembilan bank investasi asing utama, the Bird Rock, BB..."

Menggunakan context biasing

Dengan context biasing, model mengenali nama bank investasi dengan benar.

Hasil pengenalan: "Jargon apa saja dari industri perbankan investasi yang Anda ketahui? Pertama, sembilan bank investasi asing utama—Bulge Bracket (BB)—..."

Untuk mencapai hasil ini, Anda dapat menambahkan konten berikut ke dalam konteks:

  • Daftar kata:

    • Daftar kata 1:

      Bulge Bracket, Boutique, Middle Market, domestic securities firms
    • Daftar kata 2:

      Bulge Bracket Boutique Middle Market domestic securities firms
    • Daftar kata 3:

      ['Bulge Bracket', 'Boutique', 'Middle Market', 'domestic securities firms']
  • Bahasa alami:

    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!
  • Bahasa alami dengan gangguan: Konteks dapat berisi teks yang tidak relevan. Contoh berikut mencakup nama-nama yang tidak relevan.

    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

Referensi API

Untuk informasi lebih lanjut, lihat Referensi API pengenalan file audio Qwen.

Perbandingan fitur model

Fitur yang dijelaskan dalam tabel berikut untuk model qwen3-asr-flash dan qwen3-asr-flash-2025-09-08 juga berlaku untuk model qwen3-asr-flash-us dan qwen3-asr-flash-2025-09-08-us yang sesuai di wilayah AS (Virginia).

Fitur

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

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

Bahasa yang didukung

Chinese (Mandarin, Sichuanese, Minnan, Wu, and Cantonese), English, Japanese, German, Korean, Russian, French, Portuguese, Arabic, Italian, Spanish, Hindi, Indonesian, Thai, Turkish, Ukrainian, Vietnamese, Czech, Danish, Filipino, Finnish, Icelandic, Malay, Norwegian, Polish, and Swedish

Format audio yang didukung

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

Laju sampel

Any

Saluran

Any

Model menangani audio multi-saluran secara berbeda:

  • qwen3-asr-flash-filetrans: Anda harus menentukan indeks trek audio menggunakan parameter channel_id.

  • qwen3-asr-flash: Tidak diperlukan pemrosesan tambahan. Model merata-ratakan dan menggabungkan audio multi-saluran sebelum diproses.

Format input

URL file yang dapat diakses publik untuk dikenali

File yang dikodekan Base64, jalur mutlak file lokal, URL file yang dapat diakses publik untuk dikenali

Ukuran/durasi audio

Ukuran file audio hingga 2 GB, durasi hingga 12 jam

Ukuran file audio hingga 10 MB, durasi hingga 5 menit

Pengenalan emosi

Didukung Selalu aktif

Timestamp

Didukung Selalu aktif

Tidak didukung

Prediksi tanda baca

Didukung Selalu aktif

Context biasing

Didukung Dapat dikonfigurasi

ITN

Didukung Secara default dimatikan, dapat diaktifkan. Hanya berlaku untuk bahasa China dan Inggris.

Pengenalan suara bernyanyi

Didukung Selalu aktif

Penolakan kebisingan

Didukung Selalu aktif

Penyaringan kata sensitif

Tidak didukung

Speaker Diarization

Tidak didukung

Penyaringan kata pengisi

Tidak didukung

VAD

Didukung Selalu aktif

Tidak didukung

Batas laju (RPM)

100

Jenis koneksi

RESTful API

Java/Python SDK, RESTful API

Harga

Internasional (Singapura): $0,000035/detik

AS (Virginia): $0,000032/detik

China (Beijing): $0,000032/detik

FAQ

T: Bagaimana cara menyediakan URL audio yang dapat diakses publik untuk API?

Anda dapat menggunakan Object Storage Service (OSS). Ini adalah layanan penyimpanan yang sangat tersedia dan andal yang memungkinkan Anda dengan mudah menghasilkan URL akses publik.

Untuk memverifikasi bahwa URL yang dihasilkan dapat diakses publik: Anda dapat mengakses URL tersebut di browser atau dengan perintah curl untuk memastikan file audio berhasil diunduh atau diputar (kode status HTTP 200).

T: Bagaimana cara memeriksa apakah format audio memenuhi persyaratan?

Anda dapat menggunakan alat open-source ffprobe untuk dengan cepat mendapatkan informasi detail tentang audio:

# Query format kontainer audio (format_name), encoding (codec_name), laju sampel (sample_rate), dan jumlah saluran (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

T: Bagaimana cara memproses audio agar memenuhi persyaratan model?

Anda dapat menggunakan alat open-source FFmpeg untuk memotong atau mengonversi audio:

  • Memotong audio: Ekstrak klip dari file audio panjang

    # -i: file input
    # -ss 00:01:30: Atur waktu mulai potongan (mulai pada 1 menit 30 detik)
    # -t 00:02:00: Atur durasi potongan (2 menit)
    # -c copy: Salin langsung aliran audio tanpa re-encoding untuk pemrosesan lebih cepat
    # output_clip.wav: file output
    ffmpeg -i long_audio.wav -ss 00:01:30 -t 00:02:00 -c copy output_clip.wav
  • Konversi format

    Misalnya, Anda dapat mengonversi file audio apa pun ke file WAV mono 16 kHz, 16-bit.

    # -i: file input
    # -ac 1: Atur jumlah saluran audio menjadi 1 (mono)
    # -ar 16000: Atur laju sampel menjadi 16000 Hz (16 kHz)
    # -sample_fmt s16: Atur format sampel menjadi PCM integer bertanda 16-bit
    # output.wav: file output
    ffmpeg -i input.mp3 -ac 1 -ar 16000 -sample_fmt s16 output.wav