Skip to main content
Qwen-ASR

Pengenalan ucapan non-real-time (Qwen-ASR) referensi API

Parameter input dan output untuk model Qwen-ASR. Panggil API menggunakan protokol OpenAI-compatible atau DashScope.

Jenis koneksi model

Model yang berbeda mendukung jenis koneksi yang berbeda.

Model

Jenis koneksi

Qwen3-ASR-Flash-Filetrans

Hanya pemanggilan asinkron DashScope yang didukung

Qwen3-ASR-Flash

OpenAI compatible dan synchronous DashScope

OpenAI compatible

Wilayah AS tidak mendukung mode OpenAI-compatible.

URL

  • Singapura
  • AS (Virginia)
  • China (Beijing)
Alamat permintaan HTTP: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completionsbase_url untuk panggilan SDK: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.
Alibaba Cloud Model Studio telah merilis domain khusus ruang kerja untuk wilayah China (Beijing) dan Singapura. Domain khusus baru ini memberikan kinerja lebih unggul dan stabilitas lebih tinggi untuk permintaan inferensi. Kami merekomendasikan migrasi ke domain baru:
  • China (Beijing): dari dashscope.aliyuncs.com ke {WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapura: dari dashscope-intl.aliyuncs.com ke {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
Ganti {WorkspaceId} dengan ID Ruang Kerja Anda yang sebenarnya. Domain yang ada tetap berfungsi penuh.

Body permintaan

modelstring(Wajib)Nama model. Parameter ini hanya berlaku untuk model Qwen3-ASR-Flash.messagesarray(Wajib)Daftar pesan.

Jenis pesan

System Messageobject (Opsional)Digunakan untuk menyediakan konteks bagi pengenalan ucapan, seperti teks latar belakang dan glosarium entitas. Tidak mendukung pengaturan peran model atau prompt sistem tradisional lainnya. Jika Anda menggunakan pesan sistem, pesan tersebut harus menjadi pesan pertama dalam daftar messages.
rolestring(Wajib)Diatur ke system.
User Messageobject(Wajib)Pesan yang dikirim pengguna ke model.
contentarray(Wajib)Konten pesan pengguna. Hanya satu pesan yang diizinkan dalam array.

Properti

typestring(Wajib)Diatur ke input_audio, yang menunjukkan bahwa input berupa audio.input_audiostring(Wajib)Audio yang akan dikenali. Untuk informasi lebih lanjut tentang cara menggunakan parameter ini, lihat Contoh permintaan.Dalam mode OpenAI-compatible, model Qwen3-ASR-Flash mendukung dua format input: file yang dikodekan Base64 dan URL file audio yang dapat diakses melalui jaringan publik.Saat Anda menggunakan SDK, jika file audio disimpan di OSS, URL sementara yang dimulai dengan oss:// tidak didukung.Saat Anda menggunakan RESTful API, jika file audio disimpan di OSS, URL sementara yang dimulai dengan oss:// didukung. Catatan:
  • URL sementara berlaku selama 48 jam. Setelah kedaluwarsa, URL tersebut tidak dapat digunakan. Jangan gunakan dalam lingkungan produksi.
  • API kredensial unggah file memiliki pembatasan laju 100 QPS dan tidak dapat diskalakan. Jangan gunakan dalam skenario produksi, konkurensi tinggi, atau uji stres.
  • Untuk lingkungan produksi, kami merekomendasikan penggunaan layanan penyimpanan stabil seperti Alibaba Cloud OSS untuk memastikan ketersediaan file jangka panjang dan menghindari masalah pembatasan laju.
rolestring(Wajib)Peran pesan pengguna. Diatur ke user.
asr_optionsobject(Opsional)Menentukan apakah akan mengaktifkan fitur tertentu.
asr_options bukan parameter standar OpenAI. Jika Anda menggunakan SDK OpenAI, teruskan melalui extra_body.

Properti

language string (Opsional) Tidak ada nilai defaultJika bahasa audio diketahui, Anda dapat menentukannya menggunakan parameter ini untuk meningkatkan akurasi pengenalan.Anda hanya dapat menentukan satu bahasa.Jika bahasa audio tidak pasti atau mencakup beberapa bahasa (seperti campuran bahasa Mandarin, Inggris, Jepang, dan Korea), jangan tentukan parameter ini.
  • zh: Bahasa Tionghoa (Mandarin, Sichuan, Minnan, dan Wu)
  • yue: Kanton
  • en: Inggris
  • ja: Jepang
  • de: Jerman
  • ko: Korea
  • ru: Rusia
  • fr: Prancis
  • pt: Portugis
  • ar: Arab
  • it: Italia
  • es: Spanyol
  • hi: Hindi
  • id: Indonesia
  • th: Thai
  • tr: Turki
  • uk: Ukraina
  • vi: Vietnam
  • cs: Ceko
  • da: Bahasa Denmark
  • fil: Filipina
  • fi: Finlandia
  • is: Islandia
  • ms: Melayu
  • no: Norwegia
  • pl: Polandia
  • sv: Swedia
enable_itnboolean (Opsional) Default: falseMenentukan apakah akan mengaktifkan Inverse Text Normalization (ITN). Fitur ini hanya berlaku untuk audio bahasa Tionghoa dan Inggris.
  • true
  • false (default)
streamboolean(Opsional) Default: falseMenentukan apakah akan menggunakan keluaran streaming. Lihat Keluaran streaming.Nilai yang valid:
  • false: Model mengembalikan konten lengkap setelah generasi.
  • true: Model menghasilkan dan mengeluarkan konten secara bersamaan. Blok data (chunk) dikembalikan setiap kali sebagian konten dihasilkan. Anda harus membaca blok-blok ini secara real time untuk menyusun balasan lengkap.
Atur ke true untuk mengurangi risiko timeout permintaan.stream_optionsobject(Opsional)Item konfigurasi untuk keluaran streaming. Parameter ini hanya berlaku ketika stream diatur ke true.

Properti

include_usageboolean(Opsional) Default: falseMenentukan apakah akan menyertakan informasi konsumsi token dalam blok data terakhir respons.Nilai yang valid:
  • true
  • false (default)
Selama keluaran streaming, informasi konsumsi token hanya muncul dalam blok data terakhir respons.

Contoh permintaan

  • Masukan: URL file audio
  • Input: file audio yang dikodekan Base64
  • Python SDK
  • Node.js SDK
  • cURL
from openai import OpenAI
import os

try:
    client = OpenAI(
        # Kunci API berbeda antara wilayah Singapura/AS dan Beijing. Dapatkan Kunci API: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Alibaba Cloud Model Studio Anda: api_key = "sk-xxx",
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # Berikut adalah konfigurasi untuk wilayah Singapura. Saat memanggil, ganti "{WorkspaceId}" dengan ID ruang kerja Anda yang sebenarnya. Konfigurasi berbeda menurut wilayah.
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
    )

    stream_enabled = False  # Apakah akan mengaktifkan keluaran streaming
    completion = client.chat.completions.create(
        model="qwen3-asr-flash",
        messages=[
            {
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ],
                "role": "user"
            }
        ],
        stream=stream_enabled,
        # Ketika stream diatur ke False, parameter stream_options tidak dapat diatur
        # stream_options={"include_usage": True},
        extra_body={
            "asr_options": {
                # "language": "zh",
                "enable_itn": False
            }
        }
    )
    if stream_enabled:
        full_content = ""
        print("Keluaran streaming adalah:")
        for chunk in completion:
            # Jika stream_options.include_usage bernilai True, bidang choices pada chunk terakhir adalah daftar kosong dan perlu dilewati (Anda bisa mendapatkan penggunaan Token melalui chunk.usage)
            print(chunk)
            if chunk.choices and chunk.choices[0].delta.content:
                full_content += chunk.choices[0].delta.content
        print(f"Konten lengkapnya adalah: {full_content}")
    else:
        print(f"Keluaran non-streaming adalah: {completion.choices[0].message.content}")
except Exception as e:
    print(f"Pesan kesalahan: {e}")

Body respons

idstringPengidentifikasi unik untuk pemanggilan ini.choicesarrayInformasi keluaran dari model.
finish_reasonstringNilai yang valid:
  • null: Keluaran masih sedang dihasilkan.
  • stop: Keluaran berakhir secara alami atau dihentikan oleh kondisi berhenti.
  • length: Keluaran melebihi batas panjang maksimum.
indexintegerIndeks objek saat ini dalam array choices.messageobjectObjek pesan yang dikeluarkan oleh model.

Properti

rolestringPeran pesan keluaran. Diatur ke assistant.contentarrayHasil pengenalan ucapan.annotationsarrayInformasi anotasi keluaran, seperti bahasa.

Properti

languagestringBahasa audio yang dikenali. Jika parameter permintaan language ditentukan, nilai ini sama dengan parameter yang ditentukan.
  • zh: Bahasa Tionghoa (Mandarin, Sichuan, Minnan, dan Wu)
  • yue: Kanton
  • en: Inggris
  • ja: Jepang
  • de: Jerman
  • ko: Korea
  • ru: Rusia
  • fr: Prancis
  • pt: Portugis
  • ar: Arab
  • it: Italia
  • es: Spanyol
  • hi: Hindi
  • id: Indonesia
  • th: Thailand
  • tr: Turki
  • uk: Ukraina
  • vi: Vietnam
  • cs: Ceko
  • da: Denmark
  • fil: Filipina
  • fi: Finlandia
  • is: Islandia
  • ms: Melayu
  • no: Norwegia
  • pl: Polandia
  • sv: Swedia
typestringDiatur ke audio_info, yang menunjukkan informasi audio.emotionstringEmosi audio yang dikenali. Emosi berikut didukung:
  • surprised: terkejut
  • neutral: netral
  • happy: senang
  • sad: sedih
  • disgusted: jijik
  • angry: marah
  • fearful: takut
createdintegerStempel waktu UNIX (dalam detik) saat permintaan dibuat.modelstringModel yang digunakan untuk permintaan ini.objectstringSelalu chat.completion.usageobjectInformasi konsumsi token untuk permintaan ini.

Properti

completion_tokens integerJumlah token dalam keluaran model.completion_tokens_details objectRincian detail halus token dalam keluaran model.
text_tokens integerJumlah token dalam teks keluaran model.
prompt_tokens objectJumlah token dalam input.prompt_tokens_details objectRincian detail halus token dalam input.
audio_tokens integerPanjang audio input dalam token. Aturan konversi audio ke token: Setiap detik audio dikonversi menjadi 25 token. Durasi kurang dari 1 detik dihitung sebagai 1 detik.text_tokens integerAnda dapat mengabaikan parameter ini.
seconds integerDurasi audio dalam detik.total_tokens integerTotal jumlah token input dan output (total_tokens = completion_tokens + prompt_tokens).
{
    "choices": [
        {
            "finish_reason": "stop",
            "index": 0,
            "message": {
                "annotations": [
                    {
                        "emotion": "neutral",
                        "language": "zh",
                        "type": "audio_info"
                    }
                ],
                "content": "Welcome to Alibaba Cloud.",
                "role": "assistant"
            }
        }
    ],
    "created": 1767683986,
    "id": "chatcmpl-487abe5f-d4f2-9363-a877-xxxxxxx",
    "model": "qwen3-asr-flash",
    "object": "chat.completion",
    "usage": {
        "completion_tokens": 12,
        "completion_tokens_details": {
            "text_tokens": 12
        },
        "prompt_tokens": 42,
        "prompt_tokens_details": {
            "audio_tokens": 42,
            "text_tokens": 0
        },
        "seconds": 1,
        "total_tokens": 54
    }
}

DashScope synchronous

URL

  • Singapura
  • AS (Virginia)
  • China (Beijing)
Alamat permintaan HTTP: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generationbase_url untuk panggilan SDK: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.
Alibaba Cloud Model Studio telah merilis domain khusus ruang kerja untuk wilayah China (Beijing) dan Singapura. Domain khusus baru ini memberikan kinerja lebih unggul dan stabilitas lebih tinggi untuk permintaan inferensi. Kami merekomendasikan migrasi ke domain baru:
  • China (Beijing): dari dashscope.aliyuncs.com ke {WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapura: dari dashscope-intl.aliyuncs.com ke {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
Ganti {WorkspaceId} dengan ID Ruang Kerja Anda yang sebenarnya. Domain yang ada tetap berfungsi penuh.

Body permintaan

modelstring(Wajib)Nama model. Parameter ini hanya berlaku untuk model Qwen3-ASR-Flash.messagesarray(Wajib)Daftar pesan.
Saat melakukan panggilan HTTP, letakkan messages dalam objek input.

Jenis pesan

System Messageobject (Opsional)Digunakan untuk menyediakan konteks bagi pengenalan ucapan, seperti teks latar belakang dan glosarium entitas. Tidak mendukung pengaturan peran model atau prompt sistem tradisional lainnya. Jika Anda menetapkan pesan sistem, letakkan di awal daftar messages.Hanya Qwen3-ASR-Flash yang mendukung parameter ini.
rolestring(Wajib)Diatur ke system.
User Messageobject(Wajib)Pesan yang dikirim pengguna ke model.
contentarray(Wajib)Konten pesan pengguna. Hanya satu pesan yang diizinkan dalam array.

Properti

audiostring(Wajib)Audio yang akan dikenali. Untuk informasi lebih lanjut tentang cara menggunakan parameter ini, lihat Contoh permintaan.Saat Anda menggunakan DashScope, model Qwen3-ASR-Flash mendukung tiga format input: file yang dikodekan Base64, jalur absolut file lokal, dan URL file audio yang dapat diakses melalui jaringan publik.Saat Anda menggunakan SDK, jika file audio disimpan di OSS, URL sementara yang dimulai dengan oss:// tidak didukung.Saat Anda menggunakan RESTful API, jika file audio disimpan di OSS, URL sementara yang dimulai dengan oss:// didukung. Catatan:
  • URL sementara berlaku selama 48 jam. Setelah kedaluwarsa, URL tersebut tidak dapat digunakan. Jangan gunakan dalam lingkungan produksi.
  • API kredensial unggah file memiliki pembatasan laju 100 QPS dan tidak dapat diskalakan. Jangan gunakan dalam skenario produksi, konkurensi tinggi, atau uji stres.
  • Untuk lingkungan produksi, kami merekomendasikan penggunaan layanan penyimpanan stabil seperti Alibaba Cloud OSS untuk memastikan ketersediaan file jangka panjang dan menghindari masalah pembatasan laju.
rolestring(Wajib)Peran pesan pengguna. Diatur ke user.
asr_optionsobject(Opsional)Menentukan apakah akan mengaktifkan fitur tertentu.Parameter ini hanya didukung oleh model Qwen3-ASR-Flash.

Properti

language string (Opsional) Tidak ada nilai defaultJika bahasa audio diketahui, Anda dapat menentukannya menggunakan parameter ini untuk meningkatkan akurasi pengenalan.Anda hanya dapat menentukan satu bahasa.Jika bahasa audio tidak pasti atau mencakup beberapa bahasa (seperti campuran bahasa Mandarin, Inggris, Jepang, dan Korea), jangan tentukan parameter ini.
  • zh: Bahasa Tionghoa (Mandarin, Sichuan, Minnan, dan Wu)
  • yue: Kanton
  • en: Inggris
  • ja: Jepang
  • de: Jerman
  • ko: Korea
  • ru: Rusia
  • fr: Prancis
  • pt: Portugis
  • ar: Arab
  • it: Italia
  • es: Spanyol
  • hi: Hindi
  • id: Indonesia
  • th: Thailand
  • tr: Turki
  • uk: Ukraina
  • vi: Vietnam
  • cs: Ceko
  • da: Denmark
  • fil: Filipina
  • fi: Finlandia
  • is: Islandia
  • ms: Melayu
  • no: Norwegia
  • pl: Polandia
  • sv: Swedia
enable_itnboolean (Opsional) Default: falseMenentukan apakah akan mengaktifkan Inverse Text Normalization (ITN). Fitur ini hanya berlaku untuk audio bahasa Tionghoa dan Inggris.
  • true
  • false (default)

Contoh permintaan

Qwen3-ASR-Flash mendukung rekaman hingga durasi 5 menit, menerima URL file audio publik atau unggahan file lokal sebagai input, dan dapat mengembalikan hasil pengenalan dalam mode streaming.
  • Masukan: URL file audio
  • Input: file audio dalam format Base64
  • Input: jalur mutlak file audio lokal
  • keluaran streaming
```bash
curl -X POST "https://{WorkspaceId}.ap-southeast-1.maas.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": [
                    {
                        "audio": "{YOUR_AUDIO_URL}"
                    }
                ],
                "role": "user"
            }
        ]
    },
    "parameters": {
        "asr_options": {
            "enable_itn": false
        }
    }
}'

Body respons

request_idstringPengidentifikasi unik untuk pemanggilan ini.
Parameter yang dikembalikan oleh SDK Java adalah requestId
outputobjectInformasi hasil pemanggilan.

Properti

choicesarrayKeluaran model. Dikembalikan saat result_format adalah message.
finish_reasonstringNilai yang valid:
  • null: Keluaran masih sedang dihasilkan.
  • stop: Keluaran berakhir secara alami atau dihentikan oleh kondisi berhenti.
  • length: Keluaran melebihi batas panjang maksimum.
messageobjectObjek pesan yang dikeluarkan oleh model.

Properti

rolestringPeran pesan keluaran. Diatur ke assistant.contentarrayKonten pesan keluaran.

Properti

textstringHasil pengenalan ucapan.
annotationsarrayInformasi anotasi keluaran, seperti bahasa.

Properti

languagestringBahasa audio yang dikenali. Jika parameter permintaan language ditentukan, nilai ini sama dengan parameter yang ditentukan.
  • zh: Bahasa Tionghoa (Mandarin, Sichuan, Minnan, dan Wu)
  • yue: Kanton
  • en: Inggris
  • ja: Jepang
  • de: Jerman
  • ko: Korea
  • ru: Rusia
  • fr: Prancis
  • pt: Portugis
  • ar: Arab
  • it: Italia
  • es: Spanyol
  • hi: Hindi
  • id: Indonesia
  • th: Thailand
  • tr: Turki
  • uk: Ukraina
  • vi: Vietnam
  • cs: Ceko
  • da: Denmark
  • fil: Filipina
  • fi: Finlandia
  • is: Islandia
  • ms: Melayu
  • no: Norwegia
  • pl: Polandia
  • sv: Swedia
typestringDiatur ke audio_info, yang menunjukkan informasi audio.emotionstringEmosi audio yang dikenali. Emosi berikut didukung:
  • surprised: terkejut
  • neutral: netral
  • happy: senang
  • sad: sedih
  • disgusted: jijik
  • angry: marah
  • fearful: takut
usageobjectInformasi konsumsi token untuk permintaan ini.

Properti

input_tokens_details objectPanjang konten input untuk Qwen3-ASR-Flash dalam token.
text_tokens integerAnda dapat mengabaikan parameter ini.
output_tokens_details objectPanjang konten keluaran dari Qwen3-ASR-Flash dalam token.
text_tokens integerPanjang teks yang dikenali yang dikeluarkan oleh Qwen3-ASR-Flash dalam token.
seconds integerDurasi audio untuk Qwen3-ASR-Flash dalam detik.
{
    "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"
}

Pemanggilan asinkron DashScope

Deskripsi proses

Pemanggilan asinkron dirancang untuk file audio panjang atau tugas yang memakan waktu. Proses ini menggunakan proses "submit-poll" dua langkah untuk mencegah timeout permintaan:
  1. Langkah 1: Kirim tugas
    • Klien memulai permintaan pemrosesan asinkron.
    • Setelah memvalidasi permintaan, server tidak langsung mengeksekusi tugas. Sebaliknya, server mengembalikan task_id unik, yang menunjukkan bahwa tugas telah berhasil dibuat.
  2. Langkah 2: Dapatkan hasil
    • Klien menggunakan task_id untuk melakukan polling API kueri hasil.
    • Saat tugas selesai, API kueri hasil mengembalikan hasil pengenalan akhir.
Anda dapat memilih untuk menggunakan SDK atau memanggil RESTful API secara langsung berdasarkan lingkungan integrasi Anda.
  • Gunakan SDK. Untuk contoh kode, lihat Contoh permintaan. Untuk parameter permintaan, lihat Body permintaan operasi Kirim tugas. Untuk informasi respons, lihat Deskripsi hasil pemanggilan asinkron. SDK menangani detail pemanggilan API dasar secara otomatis.
    1. Kirim tugas: Panggil metode async_call() (Python) atau asyncCall() (Java) untuk mengirim tugas. Metode ini mengembalikan objek tugas yang berisi task_id.
    2. Dapatkan hasil: Gunakan objek tugas yang dikembalikan pada langkah sebelumnya atau task_id untuk memanggil metode fetch() guna mengambil hasil. SDK secara otomatis menangani logika polling internal hingga tugas selesai atau timeout.
  • Gunakan RESTful API Memanggil RESTful API secara langsung memberikan fleksibilitas maksimum.
    1. Kirim tugas. Jika permintaan berhasil, body respons akan berisi task_id.
    2. Gunakan task_id dari langkah sebelumnya untuk mengambil hasil eksekusi tugas.

Contoh lengkap

  • HTTP
  • Java SDK
  • Python SDK
  • Unduh hasil pengenalan
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 adalah konfigurasi untuk wilayah Singapura. Saat memanggil, ganti "{WorkspaceId}" dengan ID ruang kerja Anda yang sebenarnya. Konfigurasi berbeda-beda tergantung wilayah.
    private static final String API_URL_SUBMIT = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcription";
    // Berikut adalah konfigurasi untuk wilayah Singapura. Saat memanggil, ganti "{WorkspaceId}" dengan ID ruang kerja Anda yang sebenarnya. Konfigurasi berbeda-beda tergantung wilayah.
    private static final String API_URL_QUERY = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/";
    private static final Gson gson = new Gson();

    public static void main(String[] args) {
        // Kunci API berbeda antara wilayah Singapura dan Beijing. Dapatkan Kunci API: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Alibaba Cloud 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": "{YOUR_AUDIO_URL}"
                    },
                    "parameters": {
                        "channel_id": [0],
                        "enable_itn": false,
                        "language": "zh"
                    }
                }
                """;*/
        String payloadJson = """
                {
                    "model": "qwen3-asr-flash-filetrans",
                    "input": {
                        "file_url": "{YOUR_AUDIO_URL}"
                    },
                    "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("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. Polling status tugas
        boolean finished = false;
        while (!finished) {
            try {
                TimeUnit.SECONDS.sleep(2);  // Tunggu 2 detik sebelum mengkueri 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 kueri: " + 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;
    }
}

Kirim tugas

URL

  • Singapura
  • China (Beijing)
Alamat permintaan HTTP: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcriptionbase_url untuk panggilan SDK: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.
Alibaba Cloud Model Studio telah merilis domain khusus ruang kerja untuk wilayah China (Beijing) dan Singapura. Domain khusus baru ini memberikan kinerja lebih unggul dan stabilitas lebih tinggi untuk permintaan inferensi. Kami merekomendasikan migrasi ke domain baru:
  • China (Beijing): dari dashscope.aliyuncs.com ke {WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapura: dari dashscope-intl.aliyuncs.com ke {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
Ganti {WorkspaceId} dengan ID Ruang Kerja Anda yang sebenarnya. Domain yang ada tetap berfungsi penuh.

Body permintaan

modelstring(Wajib)Nama model. Parameter ini hanya berlaku untuk model Qwen3-ASR-Flash-Filetrans.inputobject(Wajib)

Properti

file_url string(Wajib)URL file audio yang akan dikenali. URL harus dapat diakses melalui jaringan publik.Saat Anda menggunakan SDK, jika file audio disimpan di OSS, URL sementara yang dimulai dengan oss:// tidak didukung.Saat Anda menggunakan RESTful API, jika file audio disimpan di OSS, URL sementara yang dimulai dengan oss:// didukung. Catatan:
  • URL sementara berlaku selama 48 jam. Setelah kedaluwarsa, URL tersebut tidak dapat digunakan. Jangan gunakan dalam lingkungan produksi.
  • API kredensial unggah file memiliki pembatasan laju 100 QPS dan tidak dapat diskalakan. Jangan gunakan dalam skenario produksi, konkurensi tinggi, atau uji stres.
  • Untuk lingkungan produksi, kami merekomendasikan penggunaan layanan penyimpanan stabil seperti Alibaba Cloud OSS untuk memastikan ketersediaan file jangka panjang dan menghindari masalah pembatasan laju.
parametersobject(Opsional)

Properti

language string (Opsional) Tidak ada nilai defaultJika bahasa audio diketahui, Anda dapat menentukannya menggunakan parameter ini untuk meningkatkan akurasi pengenalan.Anda hanya dapat menentukan satu bahasa.Jika bahasa audio tidak pasti atau mencakup beberapa bahasa (seperti campuran bahasa Mandarin, Inggris, Jepang, dan Korea), jangan tentukan parameter ini.
  • zh: Bahasa Tionghoa (Mandarin, Sichuan, Minnan, dan Wu)
  • yue: Kanton
  • en: Inggris
  • ja: Jepang
  • de: Jerman
  • ko: Korea
  • ru: Rusia
  • fr: Prancis
  • pt: Portugis
  • ar: Arab
  • it: Italia
  • es: Spanyol
  • hi: Hindi
  • id: Indonesia
  • th: Thailand
  • tr: Turki
  • uk: Ukraina
  • vi: Vietnam
  • cs: Ceko
  • da: Denmark
  • fil: Filipina
  • fi: Finlandia
  • is: Islandia
  • ms: Melayu
  • no: Norwegia
  • pl: Polandia
  • sv: Swedia
enable_itnboolean (Opsional) Default: falseMenentukan apakah akan mengaktifkan Inverse Text Normalization (ITN). Fitur ini hanya berlaku untuk audio bahasa Tionghoa dan Inggris.
  • true
  • false (default)
enable_wordsboolean(Opsional) Default: falseMenentukan apakah akan mengembalikan timestamp tingkat kata:
  • false: Mengembalikan timestamp tingkat kalimat.
  • true: Mengembalikan timestamp tingkat kata. Timestamp tingkat kata hanya didukung untuk bahasa berikut: Tionghoa, Inggris, Jepang, Korea, Jerman, Prancis, Spanyol, Italia, Portugis, dan Rusia. Akurasi untuk bahasa lain tidak dapat dijamin.
Parameter ini juga memengaruhi aturan segmentasi kalimat:
  • false: Segmentasi kalimat berdasarkan Voice Activity Detection (VAD).
  • true: Segmentasi kalimat berdasarkan VAD dan tanda baca.
channel_idarray(Opsional) Default: [0]Menentukan indeks trek audio yang akan dikenali dalam file audio multi-trek. Indeks dimulai dari 0. Misalnya, [0] menunjukkan bahwa trek audio pertama dikenali, dan [0, 1] menunjukkan bahwa trek audio pertama dan kedua dikenali secara simultan. Jika parameter ini dihilangkan, trek audio pertama diproses secara default.
Setiap trek audio yang ditentukan ditagih secara terpisah. Misalnya, meminta [0, 1] untuk satu file akan dikenai dua biaya terpisah.
  • cURL
  • Java
  • Python
# ======= Penting =======
# Konfigurasi berikut untuk wilayah Singapura. Ganti "{WorkspaceId}" dengan ID ruang kerja Anda yang sebenarnya. Konfigurasi bervariasi menurut wilayah.
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi lebih lanjut tentang cara mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum menjalankan perintah. ===

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.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": "{YOUR_AUDIO_URL}"
    },
    "parameters": {
        "channel_id":[
            0
        ],
        "enable_itn": false
    }
}'

Body respons

request_idstringPengidentifikasi unik untuk pemanggilan ini.outputobjectInformasi hasil pemanggilan.

Properti

task_idstringID tugas. ID ini diteruskan sebagai parameter permintaan dalam API untuk mengkueri tugas pengenalan ucapan.task_statusstringStatus tugas:
  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • UNKNOWN: Tugas tidak ada atau statusnya tidak diketahui.
{
    "request_id": "92e3decd-0c69-47a8-************",
    "output": {
        "task_id": "8fab76d0-0eed-4d20-************",
        "task_status": "PENDING"
    }
}

Dapatkan hasil eksekusi tugas

URL

  • Singapura
  • China (Beijing)
Alamat permintaan HTTP: GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}base_url untuk panggilan SDK: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.
Alibaba Cloud Model Studio telah merilis domain khusus ruang kerja untuk wilayah China (Beijing) dan Singapura. Domain khusus baru ini memberikan kinerja lebih unggul dan stabilitas lebih tinggi untuk permintaan inferensi. Kami merekomendasikan migrasi ke domain baru:
  • China (Beijing): dari dashscope.aliyuncs.com ke {WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapura: dari dashscope-intl.aliyuncs.com ke {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
Ganti {WorkspaceId} dengan ID Ruang Kerja Anda yang sebenarnya. Domain yang ada tetap berfungsi penuh.

Body permintaan

task_idstring(Wajib)ID tugas. Teruskan task_id dari respons operasi Kirim tugas untuk mengkueri hasil pengenalan ucapan.
  • cURL
  • Java
  • Python
# ======= Penting =======
# Konfigurasi berikut untuk wilayah Singapura. Ganti "{WorkspaceId}" dengan ID ruang kerja Anda yang sebenarnya. Konfigurasi bervariasi menurut wilayah.
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk informasi lebih lanjut tentang cara mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum menjalankan perintah. ===

curl --location --request GET 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json"

Body respons

request_idstringPengidentifikasi unik untuk pemanggilan ini.outputobjectInformasi hasil pemanggilan.

Properti

task_idstringID tugas. ID ini diteruskan sebagai parameter permintaan dalam API untuk mengkueri tugas pengenalan ucapan.task_statusstringStatus tugas:
  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • UNKNOWN: Tugas tidak ada atau statusnya tidak diketahui.
resultobjectHasil pengenalan ucapan.
transcription_urlstringURL unduhan untuk file hasil pengenalan. Tautan ini berlaku selama 24 jam. Setelah tautan kedaluwarsa, Anda tidak dapat mengkueri tugas atau mengunduh hasil menggunakan URL sebelumnya.
Hasil pengenalan disimpan sebagai file JSON. Anda dapat mengunduh file dari tautan ini atau membaca konten file secara langsung menggunakan permintaan HTTP.
Untuk informasi lebih lanjut, lihat Deskripsi hasil pemanggilan asinkron.
submit_timestringWaktu saat tugas dikirim.schedule_time stringWaktu saat tugas dijadwalkan, yaitu waktu mulai eksekusi.end_timestringWaktu saat tugas berakhir.task_metricsobjectMetrik tugas, yang mencakup statistik status subtugas.
TOTALintegerJumlah total subtugas.SUCCEEDEDintegerJumlah subtugas yang berhasil.FAILEDintegerJumlah subtugas yang gagal.
codestringKode kesalahan. Ini dikembalikan hanya saat tugas gagal.messagestringPesan kesalahan. Ini dikembalikan hanya saat tugas gagal.usageobjectInformasi konsumsi token untuk permintaan ini.
seconds integerDurasi audio untuk Qwen3-ASR-Flash dalam detik.
{
    "request_id": "6769df07-2768-4fb0-ad59-************",
    "output": {
        "task_id": "9be1700a-0f8e-4778-be74-************",
        "task_status": "RUNNING",
        "submit_time": "2025-10-27 14:19:31.150",
        "scheduled_time": "2025-10-27 14:19:31.233",
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 0,
            "FAILED": 0
        }
    }
}

Deskripsi hasil pemanggilan asinkron

file_url stringURL file audio yang dikenali.audio_infoobjectInformasi tentang file audio yang dikenali.

Properti

format stringFormat audio.sample_rate integerLaju pengambilan sampel audio.
transcriptsarrayDaftar hasil pengenalan lengkap. Setiap elemen sesuai dengan konten yang dikenali dari satu trek audio.

Properti

channel_idintegerIndeks trek audio, dimulai dari 0.textstringTeks yang dikenali.sentencesobjectDaftar hasil pengenalan tingkat kalimat.

Properti

begin_time integerStempel waktu mulai kalimat dalam milidetik.end_time integerStempel waktu akhir kalimat dalam milidetik.textstringTeks yang dikenali.sentence_idintegerIndeks kalimat, dimulai dari 0.languagestringBahasa audio yang dikenali. Jika parameter permintaan language ditentukan, nilai ini sama dengan parameter yang ditentukan.
  • zh: Bahasa Tionghoa (Mandarin, Sichuan, Minnan, dan Wu)
  • yue: Kanton
  • en: Inggris
  • ja: Jepang
  • de: Jerman
  • ko: Korea
  • ru: Rusia
  • fr: Prancis
  • pt: Portugis
  • ar: Arab
  • it: Italia
  • es: Spanyol
  • hi: Hindi
  • id: Indonesia
  • th: Thailand
  • tr: Turki
  • uk: Ukraina
  • vi: Vietnam
  • cs: Ceko
  • da: Denmark
  • fil: Filipina
  • fi: Finlandia
  • is: Islandia
  • ms: Melayu
  • no: Norwegia
  • pl: Polandia
  • sv: Swedia
emotionstringEmosi audio yang dikenali. Emosi berikut didukung:
  • surprised
  • neutral
  • happy
  • sad
  • disgusted
  • angry
  • fearful
wordsobjectDaftar hasil pengenalan tingkat kata. Hasil ini ditampilkan saat parameter permintaan enable_words diatur ke true.

Properti

begin_time integerStempel waktu mulai dalam milidetik.end_time integerStempel waktu akhir dalam milidetik.textstringTeks yang dikenali.punctuationstringTanda baca.
{
    "file_url": "https://***.wav",
    "audio_info": {
        "format": "wav",
        "sample_rate": 16000
    },
    "transcripts": [
        {
            "channel_id": 0,
            "text": "Senior staff, Principal Doris Jackson, Wakefield faculty, and of course my fellow classmates.I am honored to have been chosen to speak before my classmates along with the students across America today.",
            "sentences": [
                {
                    "sentence_id": 0,
                    "begin_time": 240,
                    "end_time": 6720,
                    "language": "en",
                    "emotion": "happy",
                    "text": "Senior staff, Principal Doris Jackson, Wakefield faculty, and of course my fellow classmates.",
                    "words": [
                        {
                            "begin_time": 240,
                            "end_time": 1120,
                            "text": "Senior ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 1120,
                            "end_time": 1200,
                            "text": "staff",
                            "punctuation": ","
                        },
                        {
                            "begin_time": 1680,
                            "end_time": 1920,
                            "text": " Principal ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 2000,
                            "end_time": 2320,
                            "text": "Doris ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 2320,
                            "end_time": 2960,
                            "text": "Jackson",
                            "punctuation": ","
                        },
                        {
                            "begin_time": 3360,
                            "end_time": 3840,
                            "text": " Wakefield ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 3840,
                            "end_time": 4480,
                            "text": "faculty",
                            "punctuation": ","
                        },
                        {
                            "begin_time": 4800,
                            "end_time": 4960,
                            "text": " and ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 4960,
                            "end_time": 5040,
                            "text": "of ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 5040,
                            "end_time": 5520,
                            "text": "course ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 5520,
                            "end_time": 5680,
                            "text": "my ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 5760,
                            "end_time": 6000,
                            "text": "fellow ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 6000,
                            "end_time": 6720,
                            "text": "classmates",
                            "punctuation": "."
                        }
                    ]
                },
                {
                    "sentence_id": 1,
                    "begin_time": 12268,
                    "end_time": 17388,
                    "language": "en",
                    "emotion": "neutral",
                    "text": "I am honored to have been chosen to speak before my classmates along with the students across America today.",
                    "words": [
                        {
                            "begin_time": 12268,
                            "end_time": 12428,
                            "text": "I ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 12428,
                            "end_time": 12508,
                            "text": "am ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 12588,
                            "end_time": 12828,
                            "text": "honored ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 12908,
                            "end_time": 12908,
                            "text": "to ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 12908,
                            "end_time": 13068,
                            "text": "have ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 13068,
                            "end_time": 13228,
                            "text": "been ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 13228,
                            "end_time": 13628,
                            "text": "chosen ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 13628,
                            "end_time": 13708,
                            "text": "to ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 13708,
                            "end_time": 14028,
                            "text": "speak ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 14028,
                            "end_time": 14268,
                            "text": "before ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 14268,
                            "end_time": 14428,
                            "text": "my ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 14428,
                            "end_time": 15148,
                            "text": "classmates ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15308,
                            "end_time": 15468,
                            "text": "as ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15468,
                            "end_time": 15628,
                            "text": "well ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15628,
                            "end_time": 15788,
                            "text": "as ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15788,
                            "end_time": 15788,
                            "text": "the ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15788,
                            "end_time": 16188,
                            "text": "students ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 16188,
                            "end_time": 16588,
                            "text": "across ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 16588,
                            "end_time": 16988,
                            "text": "America ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 16988,
                            "end_time": 17388,
                            "text": "today",
                            "punctuation": "."
                        }
                    ]
                }
            ]
        }
    ]
}
Pembuatan Gambar
  • FAQ
Video Generation
Model Dunia
Audio
  • Pembuatan audio
Realtime API
Penyematan Teks
TokenPlan
Model production