All Products
Search
Document Center

Alibaba Cloud Model Studio:Non-real-time speech recognition (Qwen-Audio-3.0-ASR-Flash/Fun-ASR-Flash) HTTP API

Last Updated:Sep 08, 2026

Topik ini menjelaskan parameter dan detail antarmuka API HTTP untuk pengenalan ucapan non-real-time Qwen-Audio-3.0-ASR-Flash/Fun-ASR-Flash.

Panduan pengguna: Pengenalan ucapan non-real-time. Untuk persyaratan input seperti format audio yang didukung, batas ukuran file, dan batas durasi, lihat Spesifikasi audio.

Titik akhir layanan

Singapura

POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

Ganti {WorkspaceId} dengan Workspace ID Anda yang sebenarnya.

Tiongkok (Beijing)

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

Ganti {WorkspaceId} dengan Workspace ID Anda yang sebenarnya.

PentingAlibaba Cloud Model Studio telah merilis domain khusus ruang kerja untuk wilayah Tiongkok (Beijing) dan Singapura. Domain khusus baru ini memberikan performa unggul dan stabilitas lebih tinggi untuk permintaan inferensi. Kami menyarankan migrasi ke domain baru berikut:

  • Tiongkok (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 Workspace ID Anda yang sebenarnya. Domain lama tetap berfungsi sepenuhnya.

Header permintaan

Parameter

Tipe

Wajib

Deskripsi

Authorization

string

Ya

Token otentikasi, dalam format Bearer <your_api_key>. Ganti "<your_api_key>" dengan Kunci API Anda yang sebenarnya.

Content-Type

string

Ya

Tipe media dari badan permintaan. Tetapkan ke application/json.

X-DashScope-SSE

string

Ya

Mengontrol apakah hasil dikembalikan sebagai aliran SSE. Tetapkan ke enable untuk mengaktifkan streaming SSE. Server hanya mengembalikan hasil pengenalan sementara dan akhir dalam beberapa pesan untuk audio yang durasinya minimal 1 menit. Tetapkan ke disable atau abaikan parameter ini untuk hanya mengembalikan hasil akhir.

Badan permintaan

modelstring(Wajib)

Nama model. Seri model Qwen-Audio-3.0-ASR-Flash dan Fun-ASR-Flash didukung. Untuk detailnya, lihat Model dan wilayah yang didukung.

inputobject(Wajib)

Informasi input.

Properti

messagesarray(object)(Wajib)

Daftar pesan. Berisi audio yang akan dikenali dan, secara opsional, konteks percakapan yang meningkatkan akurasi pengenalan.

PentingFitur konteks meningkatkan akurasi pengenalan istilah spesifik domain. Untuk penggunaannya, lihat Peningkatan konteks.

Batasan: Satu permintaan dapat mencakup maksimal 5 pesan konteks untuk tiap tipe (input_text dan text). Jika melebihi batas ini, hanya 5 pesan terbaru yang dipertahankan. Total teks konteks per giliran (panjang gabungan bidang text dalam pesan user dan assistant) tidak boleh melebihi 400 karakter, dengan setiap karakter dihitung sebagai 1. Kelebihan akan dipotong dari bagian akhir.

PentingSaat menyertakan konteks, urutan pesan dalam array messages sangat penting: pesan konteks harus diatur berdasarkan giliran percakapan. Dalam tiap giliran, pesan user (bertipe input_text) harus mendahului pesan assistant yang sesuai (bertipe text). Pesan user yang berisi input_audio harus menjadi item terakhir dalam array messages.

Properti

rolestring(Wajib)

Peran pesan. Nilai yang valid:

  • user (Wajib): Pesan pengguna. Saat tipe adalah input_audio, berisi audio yang akan dikenali. Saat tipe adalah input_text, berisi hasil pengenalan dari giliran sebelumnya atau daftar kata spesifik domain (opsional, digunakan sebagai konteks).
  • assistant (Opsional, konteks): Balasan dari model bahasa besar pada giliran sebelumnya.

contentarray(object)(Wajib)

Daftar isi pesan.

Properti

typestring(Wajib)

Tipe konten. Setiap permintaan memerlukan minimal satu pesan bertipe input_audio. Nilai yang valid:

  • input_audio (Wajib): Input audio yang akan dikenali (peran adalah user). Anda juga harus meneruskan objek input_audio.
  • input_text (Opsional, konteks): Hasil pengenalan ucapan pengguna dari giliran sebelumnya, atau daftar kata spesifik domain (peran adalah user). Anda juga harus meneruskan bidang text.
  • text (Opsional, konteks): Balasan dari model bahasa besar pada giliran sebelumnya (peran adalah assistant). Anda juga harus meneruskan bidang text.

input_audioobject(Wajib bersyarat)

Wajib saat type bernilai input_audio.

Properti

datastring(Wajib)

Data audio yang akan dikenali. Untuk persyaratan input seperti format audio yang didukung, batas ukuran file, dan batas durasi, lihat Spesifikasi audio. Dua metode didukung:

  • URL file audio: Teruskan URL yang dapat diakses publik ke file audio.
  • Data URI Base64: Teruskan data audio terenkripsi Base64 sebagai Data URI. Nilainya adalah awalan data:{MIME_TYPE};base64, yang digabungkan dengan data audio terenkripsi Base64. Tipe MIME yang didukung termasuk audio/wav dan audio/mp3.

Contoh (URL): https://example.com/audio/sample.wav

Contoh (Base64): data:audio/wav;base64,{BASE64_ENCODED_DATA}

textstring(Wajib bersyarat)

Saat type bernilai input_text, masukkan hasil pengenalan ucapan pengguna dari giliran sebelumnya atau daftar kata spesifik domain. Saat type bernilai text, masukkan balasan model bahasa besar dari giliran sebelumnya. Panjang teks diukur dalam karakter, dengan setiap karakter dihitung sebagai 1. Panjang gabungan bidang text di semua pesan dalam satu giliran konteks tidak boleh melebihi 400 karakter. Kelebihan akan dipotong dari bagian akhir.

parametersobject(Wajib)

Parameter model.

CatatanText Polishing dinonaktifkan secara default dan belum tersedia.

Text Polishing: Saat mentranskripsikan ucapan, model secara otomatis menghapus kata pengisi yang tidak bermakna dan pengulangan akibat gagap, menangani koreksi diri selama berbicara, menghaluskan ekspresi percakapan, serta menstandarkan tanda baca dan format teks. Hasilnya adalah output yang lebih ringkas, lancar, dan mudah dibaca, sekaligus mempertahankan maksud asli pengguna dan informasi penting sebanyak mungkin.

Properti

formatstring(Wajib)

Format audio. Atur sesuai dengan format audio Anda yang sebenarnya. Nilai yang didukung termasuk wav, mp3, dan opus. Untuk detailnya, lihat Spesifikasi audio.

sample_ratestring(Opsional)

Laju sampel audio, dalam Hz. Misalnya, 16000 berarti laju sampel 16 kHz. Untuk detailnya, lihat Spesifikasi audio.

vocabulary_idstring(Opsional)

ID daftar hot word yang telah dikompilasi sebelumnya.

Hasilkan ID ini terlebih dahulu dengan memanggil API pembuatan daftar hot word. Teruskan ID tersebut selama pengenalan untuk menggunakan hot word dalam daftar.

Cocok untuk skenario di mana kosakata sudah diketahui dan relatif stabil, serta Anda perlu menggunakan kembali daftar kata yang sama di berbagai permintaan.

Untuk detail penggunaan, lihat Hotword yang telah dikompilasi.

vocabularyobject(Opsional)

Hot word instan.

Diteruskan sebagai pasangan kunci-nilai, dengan kunci berupa teks hot word (string) dan nilai berupa bobot hot word (integer). Tidak perlu membuat daftar hot word terlebih dahulu. Bobot berkisar antara [1, 5] atau diatur ke 50: nilai dalam [1, 5] membuat model lebih cenderung mengeluarkan kata tersebut seiring peningkatan nilainya; nilai 50 menunjukkan hot word super, yang sangat meningkatkan recall, tetapi jumlah hot word super tidak boleh melebihi 50.

Cocok untuk optimasi hot word sementara tingkat sesi.

Jika dikonfigurasi bersama hot word yang telah dikompilasi, hanya hot word instan yang berlaku. Untuk detail penggunaan, lihat Hotword instan.

PentingHanya qwen-audio-3.0-asr-flash yang mendukung hotword inline.

language_hints array[string](Opsional)

Kode bahasa yang akan dikenali. Jika Anda tidak dapat menentukan bahasa sebelumnya, biarkan tidak diatur dan model akan mendeteksi bahasa secara otomatis.

Untuk model seri Qwen-Audio-3.0-ASR-Flash, Anda dapat mengatur hingga 4 nilai; jika lebih dari 4, hanya 4 nilai pertama yang berlaku. Untuk model seri Fun-ASR-Flash, Anda hanya dapat mengatur 1 nilai; jika lebih dari satu, hanya nilai pertama yang berlaku.

Klik untuk melihat kode bahasa yang didukung

  • qwen-audio-3.0-asr-flash, fun-asr-flash-2026-06-15:

    • zh: Tionghoa
    • en: Inggris
    • ja: Jepang
    • ko: Korea
    • vi: Vietnam
    • th: Thai
    • id: Bahasa Indonesia
    • ms: Melayu
    • tl: Filipina
    • hi: Hindi
    • ar: Arab
    • fr: Prancis
    • de: Jerman
    • es: Spanyol
    • pt: Portugis
    • ru: Rusia
    • it: Italia
    • nl: Belanda
    • sv: Swedia
    • da: bahasa Denmark
    • fi: Finlandia
    • no: Norwegia
    • el: Yunani
    • pl: Polandia
    • cs: Ceko
    • hu: Hongaria
    • ro: Rumania
    • bg: Bahasa Bulgaria
    • hr: Kroasia
    • sk: Slovak

Contoh berikut menggunakan konfigurasi untuk wilayah Singapura. Ganti "{WorkspaceId}" dengan Workspace ID Anda yang sebenarnya. Konfigurasi berbeda di tiap wilayah, dan Kunci API untuk wilayah Singapura berbeda dari wilayah Beijing.

Non-streaming

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
     --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
     --header "Content-Type: application/json" \
     --header "X-DashScope-SSE: disable" \
     --data '{
    "model": "qwen-audio-3.0-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

Streaming

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.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": "qwen-audio-3.0-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

Dengan konteks - non-streaming

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
     --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
     --header "Content-Type: application/json" \
     --header "X-DashScope-SSE: disable" \
     --data '{
    "model": "qwen-audio-3.0-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_text",
                        "text": "Hello"
                    }
                ]
            },
            {
                "role": "assistant",
                "content": [
                    {
                        "type": "text",
                        "text": "Hello, I'm Qwen. How can I help you?"
                    }
                ]
            },
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

Dengan konteks - streaming

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.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": "qwen-audio-3.0-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_text",
                        "text": "Hello"
                    }
                ]
            },
            {
                "role": "assistant",
                "content": [
                    {
                        "type": "text",
                        "text": "Hello, I'm Qwen. How can I help you?"
                    }
                ]
            },
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

Base64

Anda dapat meneruskan data terenkripsi Base64 (Data URL) dalam format data:<mediatype>;base64,<data>.

  • <mediatype>: Tipe MIME.

    Nilainya bergantung pada format audio. Contohnya:

    • WAV: audio/wav
    • MP3: audio/mpeg
  • <data>: String audio yang dienkripsi Base64.

    Pengenkripsian Base64 memperbesar ukuran data. Kendalikan ukuran file asli agar data terenkripsi tetap memenuhi batas ukuran input audio (10 MB).

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

    Klik untuk melihat contoh kode

    import base64, pathlib
    
    # Ganti dengan path ke file audio Anda sendiri dan pastikan memenuhi persyaratan audio
    file_path = pathlib.Path("{YOUR_AUDIO_FILE}")
    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 {
              /**
               * Ganti dengan path ke file audio Anda sendiri 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;
              }
    
              public static void main(String[] args) throws Exception {
                  System.out.println(toDataUrl("{YOUR_AUDIO_FILE}"));
              }
          }
    
import base64, pathlib
import os
import requests

# Ganti dengan path ke file audio Anda sendiri dan pastikan memenuhi persyaratan audio
file_path = pathlib.Path("{YOUR_AUDIO_FILE}")
base64_str = base64.b64encode(file_path.read_bytes()).decode()
data_uri = f"data:audio/wav;base64,{base64_str}"

# Ganti "{WorkspaceId}" dengan Workspace ID Anda yang sebenarnya
url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation"

headers = {
    "Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}",
    "Content-Type": "application/json",
    "X-DashScope-SSE": "disable",
}

payload = {
    "model": "qwen-audio-3.0-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": data_uri,
                        },
                    }
                ],
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000",
    },
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())

Hotword inline

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
     --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
     --header "Content-Type: application/json" \
     --header "X-DashScope-SSE: disable" \
     --data '{
    "model": "qwen-audio-3.0-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000",
        "vocabulary": {"John Smith": 5, "Jane Doe": 5}
    }
}'

Isi respons

request_idstring

Pengidentifikasi unik untuk permintaan ini.

outputobject

Hasil output.

Properti

textstring

Teks lengkap yang telah dikenali hingga saat ini.

sentenceobject

Detail kalimat saat ini.

Properti

sentence_idinteger

Nomor kalimat, dimulai dari 1.

sentence_endboolean

Apakah ini hasil akhir untuk kalimat tersebut. true menunjukkan bahwa pengenalan kalimat telah selesai.

begin_timeinteger

Waktu mulai kalimat, dalam milidetik.

end_timeinteger

Waktu akhir kalimat, dalam milidetik. Dikembalikan hanya saat sentence_end bernilai true.

textstring

Teks yang dikenali dari kalimat saat ini.

channel_idinteger

Nomor saluran, dimulai dari 0.

wordsarray

Daftar timestamp tingkat kata.

Properti

textstring

Kata teks.

begin_timeinteger

Waktu mulai kata, dalam milidetik.

end_timeinteger

Waktu akhir kata, dalam milidetik.

punctuationstring

Tanda baca setelah kata. String kosong jika tidak ada tanda baca.

fixedboolean

Apakah kata tersebut telah distabilkan. false menunjukkan bahwa timestamp kata tersebut mungkin disesuaikan dalam event berikutnya.

usageobject

Informasi penggunaan. Dikembalikan hanya saat sentence_end bernilai true.

Properti

durationinteger

Durasi audio yang diproses, dalam detik.

Non-streaming

{
    "output": {
        "sentence": {
            "begin_time": 760,
            "channel_id": 0,
            "end_time": 3800,
            "sentence_end": true,
            "sentence_id": 1,
            "text": "Hello World, this is Alibaba Speech Lab.",
            "words": [
                {"begin_time": 760, "end_time": 1040, "fixed": true, "punctuation": "", "text": "Hello"},
                {"begin_time": 1040, "end_time": 1240, "fixed": true, "punctuation": ",", "text": " World"},
                {"begin_time": 1360, "end_time": 1880, "fixed": true, "punctuation": "", "text": "this is"},
                {"begin_time": 1880, "end_time": 2520, "fixed": true, "punctuation": "", "text": "Alibaba"},
                {"begin_time": 2520, "end_time": 2840, "fixed": true, "punctuation": "", "text": "Speech"},
                {"begin_time": 2840, "end_time": 3800, "fixed": true, "punctuation": ".", "text": "Lab"}
            ]
        },
        "text": "Hello World, this is Alibaba Speech Lab."
    },
    "usage": {
        "duration": 4
    },
    "request_id": "40e0734d-096f-9ae3-86c1-a8c013287561"
}

Streaming

Saat X-DashScope-SSE: enable diatur, server mengembalikan hasil pengenalan menggunakan protokol Server-Sent Events hanya untuk audio yang durasinya minimal 1 menit. Format event SSE adalah sebagai berikut:

id:{sequence_number}
      event:result
      :HTTP_STATUS/200
      data:{JSON_data}

Contoh tanggapan:

id:1
event:result
:HTTP_STATUS/200
data:{"output":{"sentence":{"sentence_id":1,"sentence_end":true,"end_time":3800,"words":[{"end_time":1040,"punctuation":"","begin_time":760,"fixed":true,"text":"Hello"},{"end_time":1240,"punctuation":",","begin_time":1040,"fixed":true,"text":" World"},{"end_time":1880,"punctuation":"","begin_time":1360,"fixed":true,"text":"this is"},{"end_time":2520,"punctuation":"","begin_time":1880,"fixed":true,"text":"Alibaba"},{"end_time":2840,"punctuation":"","begin_time":2520,"fixed":true,"text":"Speech"},{"end_time":3800,"punctuation":".","begin_time":2840,"fixed":true,"text":"Lab"}],"begin_time":760,"text":"Hello World, this is Alibaba Speech Lab.","channel_id":0},"text":"Hello World, this is Alibaba Speech Lab."},"usage":{"duration":4},"request_id":"fc1582e4-935c-9fc2-a482-a98bf43daa69"}

Logika pemrosesan hasil streaming SSE

Dalam mode streaming, klien perlu menangani hal berikut:

  1. Untuk tiap event SSE yang diterima, uraikan JSON dalam bidang data.
  2. Gunakan output.sentence.sentence_end untuk menentukan apakah kalimat saat ini telah selesai. Saat nilai ini true, pengenalan kalimat telah selesai, timestamp tingkat kata telah distabilkan, dan hasilnya dapat digunakan sebagai hasil akhir. Saat nilai ini false, pengenalan masih berlangsung, dan teks serta timestamp mungkin diperbarui dalam event berikutnya.
  3. Informasi usage hanya dikembalikan dalam event akhir kalimat, dan Anda dapat menggunakannya untuk mengukur durasi audio yang diproses.