All Products
Search
Document Center

Alibaba Cloud Model Studio:API HTTP Fun-ASR untuk transkripsi file audio

Last Updated:Jul 03, 2026

Gunakan HTTP API Fun-ASR untuk mengirimkan file audio guna ditranskripsikan dan mengambil hasilnya melalui DashScope.

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

Panggilan asinkron DashScope (Fun-ASR)

Cara kerja

Berbeda dengan panggilan sinkron yang langsung mengembalikan hasil, mode asinkron menangani file audio panjang dan tugas yang memakan waktu. Mode ini menggunakan alur kerja kirim-lalu-polling untuk menghindari timeout permintaan selama pemrosesan berlangsung lama:

  1. Langkah 1: Kirim tugas

    • Klien mengirim permintaan pemrosesan asinkron.

    • Setelah memvalidasi permintaan, server mengembalikan task_id unik tanpa langsung mengeksekusi tugas, yang menandakan bahwa tugas berhasil dibuat.

  2. Langkah 2: Dapatkan hasilnya

    • Klien menggunakan task_id yang dikembalikan untuk melakukan polling ke endpoint kueri hasil secara berulang.

    • Saat tugas selesai, endpoint kueri hasil akan mengembalikan hasil transkripsi akhir.

Titik akhir layanan

Tiongkok (Beijing)

Endpoint kirim tugas: POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/asr/transcription

Endpoint kueri tugas: GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}

Ganti {WorkspaceId} dengan workspace ID Anda yang sebenarnya.

Singapura

Endpoint kirim tugas: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcription

Endpoint kueri tugas: GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Ganti {WorkspaceId} dengan workspace ID Anda yang sebenarnya.

Singapura

Endpoint pengiriman tugas: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcription

Endpoint kueri tugas: GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Ganti {WorkspaceId} dengan workspace ID Anda yang sebenarnya.

Tiongkok (Beijing)

Endpoint pengiriman tugas: POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/asr/transcription

Endpoint kueri tugas: GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}

Ganti {WorkspaceId} dengan workspace ID aktual Anda.

Penting

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

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

Penting

Saat mengirimkan tugas melalui domain baru (https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com), badan permintaan harus menyertakan objek parameters. Bahkan jika Anda tidak perlu mengatur parameter apa pun, kirimkan objek kosong {}. Jika tidak, tugas berhasil dikirim tetapi transkripsi gagal.

Ganti {WorkspaceId} dengan workspace ID Anda yang sebenarnya.

Header permintaan

Parameter

Tipe

Wajib

Deskripsi

Authorization

string

Ya

Token autentikasi dalam format Bearer <your_api_key>. Ganti <your_api_key> dengan Kunci API Anda yang sebenarnya. Diperlukan untuk kedua endpoint, baik kirim tugas maupun kueri tugas.

Content-Type

string

Ya

Jenis media dari badan permintaan. Hanya diperlukan untuk endpoint kirim tugas. Atur ke application/json.

X-DashScope-Async

string

Ya

Identifier tugas asinkron. Hanya diperlukan untuk endpoint kirim tugas. Atur ke enable. Menghilangkan header ini menyebabkan pengiriman tugas gagal.

Kirim tugas

Mengirimkan tugas transkripsi audio. Endpoint ini mengembalikan respons secara asinkron; gunakan Kueri tugas untuk melakukan polling terhadap hasilnya.

Isi permintaan

URL berikut untuk wilayah Singapura. Ganti WorkspaceId dengan workspace ID Anda yang sebenarnya. URL berbeda tiap wilayah. Kunci API untuk Singapura dan Beijing berbeda.

curl --location '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": "fun-asr",
    "input": {
        "file_urls": [
            "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav"
        ]
    },
    "parameters": {
        "channel_id": [0]
    }
}'

model string (Wajib)

Nama model untuk transkripsi file audio dan video.

Nilai yang valid:

  • fun-asr

  • fun-asr-2025-11-07

  • fun-asr-2025-08-25

  • fun-asr-mtl

  • fun-asr-mtl-2025-08-25

input object (Wajib)

Objek parameter input.

Properti

file_urls array[string] (Wajib)

Daftar URL file audio atau video yang akan ditranskripsikan. Mendukung HTTP dan HTTPS. Setiap permintaan hanya menerima satu URL. Untuk format audio yang didukung, batas ukuran file, dan batas durasi, lihat Spesifikasi audio.

Jika file audio Anda disimpan di Alibaba Cloud OSS, RESTful API juga mendukung URL sementara dengan awalan oss://.

Penting
  • URL sementara kedaluwarsa setelah 48 jam dan tidak dapat digunakan lagi. Jangan gunakan di lingkungan produksi.

  • API kredensial unggah file memiliki pembatasan kecepatan pada 100 QPS dan tidak dapat diskalakan. Jangan gunakan di skenario produksi, konkurensi tinggi, atau pengujian beban.

  • Di lingkungan produksi, simpan file di penyimpanan stabil seperti Alibaba Cloud OSS untuk memastikan ketersediaan jangka panjang dan menghindari pembatasan kecepatan.

  • Jika URL publik sementara OSS tidak dapat diakses, atur X-DashScope-OssResourceResolve ke enable di Header permintaan (tidak direkomendasikan).

    Java SDK dan Python SDK tidak mendukung header permintaan kustom.

parameters object (Opsional)

Objek parameter permintaan.

Penting

Saat menggunakan domain baru (https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com), parameters wajib diisi. Bahkan jika Anda tidak perlu mengatur parameter apa pun, kirimkan objek kosong {}. Jika Anda menghilangkan field ini, tugas berhasil dikirim tetapi endpoint hasil kueri mengembalikan kegagalan transkripsi.

Properti

vocabulary_id string (Opsional)

ID kosakata kustom. Saat diatur, kosakata kustom yang terkait dengan ID ini akan berlaku selama transkripsi. Secara default dinonaktifkan. Untuk petunjuk penggunaan, lihat Hotword kustom.

channel_id array[integer] (Opsional)

Menentukan indeks track audio yang akan ditranskripsikan dalam file audio multi-track. Indeks dimulai dari 0. Misalnya, [0] mentranskripsikan track pertama, dan [0, 1] mentranskripsikan track pertama dan kedua. Jika dihilangkan, hanya track pertama yang diproses.

Penting

Setiap track yang ditentukan ditagih secara terpisah. Misalnya, meminta [0, 1] untuk satu file dikenai dua biaya terpisah.

Default: [0].

special_word_filter string (Opsional)

Menentukan kata sensitif yang akan ditangani selama transkripsi, dengan metode pemrosesan berbeda untuk kata yang berbeda. Untuk detailnya, lihat Filter kata sensitif.

diarization_enabled boolean (Opsional)

Apakah akan mengaktifkan diarization pembicara. Secara default dinonaktifkan.

Hanya berlaku untuk audio mono. Audio multi-channel tidak mendukung diarization pembicara.

Saat diaktifkan, hasil transkripsi mencakup field speaker_id untuk membedakan pembicara yang berbeda.

Catatan

Jika diarization pembicara diaktifkan, pastikan durasi audio di bawah 2 jam. Audio yang lebih panjang dapat menyebabkan kegagalan transkripsi atau timeout.

Untuk contoh speaker_id, lihat Deskripsi hasil transkripsi.

Default: false.

speaker_count integer (Opsional)

Penting

Hanya berlaku saat diarization pembicara diaktifkan (diarization_enabled diatur ke true).

Petunjuk jumlah pembicara yang diharapkan. Nilai yang valid: bilangan bulat dari 2 hingga 100, inklusif.

Secara default, sistem mendeteksi jumlah pembicara secara otomatis. Memberikan nilai ini membimbing algoritma menuju jumlah yang ditentukan, tetapi tidak menjamin jumlah tersebut dalam output.

language_hints array[string] (Opsional)

Bahasa audio yang akan ditranskripsikan. Jika bahasa tidak diketahui, hilangkan parameter ini. Model akan mendeteksi bahasa secara otomatis.

Hanya nilai pertama dalam array yang dibaca. Nilai tambahan diabaikan.

Lihat kode bahasa yang didukung

  • fun-asr, fun-asr-2025-11-07, fun-asr-mtl, fun-asr-mtl-2025-08-25:

    • zh: Bahasa Tiongkok

    • 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: Bahasa Finlandia

    • no: Norwegia

    • el: Yunani

    • pl: Bahasa Polandia

    • cs: Ceko

    • hu: Hongaria

    • ro: Rumania

    • bg: Bahasa Bulgaria

    • hr: Kroasia

    • sk: Slowakia

  • fun-asr-2025-08-25:

    • zh: Bahasa Tiongkok

    • en: Inggris

Isi respons

{
  "output": {
    "task_status": "PENDING",
    "task_id": "c2e5d63b-96e1-4607-bb91-************"
  },
  "request_id": "77ae55ae-be17-97b8-9942--************"
}

request_id string

Identifier unik untuk permintaan ini.

output object

Data yang dikembalikan saat mengirimkan tugas.

Properti

task_id string

ID tugas. Berikan ID ini sebagai string ke Kueri tugas.

task_status string

Status tugas. Mengembalikan PENDING saat tugas berhasil dikirim.

Tugas Kueri

Mengembalikan status dan hasil tugas transkripsi audio. Lakukan polling ke endpoint ini hingga tugas mencapai status terminal.

Isi Permintaan

URL berikut untuk wilayah Singapura. Ganti WorkspaceId dengan workspace ID Anda yang sebenarnya. URL berbeda tiap wilayah. Kunci API untuk Singapura dan Beijing berbeda.

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

task_id string (Wajib)

Penting

Parameter path URL. Tidak ada badan permintaan.

ID tugas yang akan dikueri, dikembalikan sebagai task_id oleh Kirim tugas.

Isi respons

Contoh sukses

{
  "request_id": "f9e1afad-94d3-997e-a83b-************",
  "output": {
    "task_id": "f86ec806-4d73-485f-a24f-************",
    "task_status": "SUCCEEDED",
    "submit_time": "2024-09-12 15:11:40.041",
    "scheduled_time": "2024-09-12 15:11:40.071",
    "end_time": "2024-09-12 15:11:40.903",
    "results": [
      {
        "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
        "transcription_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/pre/filetrans-16k/20240912/15%3A11/409a4b92-445b-4dd8-8c1d-f110954d82d8-1.json?Expires=1726211500&OSSAccessKeyId=yourOSSAccessKeyId&Signature=v5Owy5qoAfT7mzGmQgH0g8C****%3D",
        "subtask_status": "SUCCEEDED"
      }
    ],
    "task_metrics": {
      "TOTAL": 1,
      "SUCCEEDED": 1,
      "FAILED": 0
    }
  },
  "usage": {
    "duration": 9
  }
}

Contoh error

{
    "task_id": "7bac899c-06ec-4a79-8875-xxxxxxxxxxxx",
    "task_status": "SUCCEEDED",
    "submit_time": "2024-12-16 16:30:59.170",
    "scheduled_time": "2024-12-16 16:30:59.204",
    "end_time": "2024-12-16 16:31:02.375",
    "results": [
        {
            "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/sensevoice/rich_text_exaple_1.wav",
            "code": "FILE_DOWNLOAD_FAILED",
            "message": "The audio file cannot be downloaded.",
            "subtask_status": "FAILED"
        }
    ],
    "task_metrics": {
        "TOTAL": 1,
        "SUCCEEDED": 0,
        "FAILED": 1
    }
}

request_id string

Identifier unik untuk permintaan ini.

output object

Data yang dikembalikan saat mengkueri tugas.

Properti

task_id string

ID tugas yang dikueri.

task_status string

Status tugas yang dikueri.

Catatan

Saat tugas berisi beberapa subtugas, status keseluruhan tugas ditandai sebagai SUCCEEDED selama ada subtugas yang berhasil. Periksa field subtask_status untuk menentukan hasil subtugas individual.

submit_time string

Waktu saat tugas dikirim.

scheduled_time string

Waktu saat tugas dijadwalkan untuk dieksekusi.

end_time string

Waktu saat tugas selesai.

results array[object]

Daftar hasil subtugas, satu untuk setiap file audio yang akan ditranskripsikan.

Properti

subtask_status string

Status subtugas.

file_url string

URL file yang diproses dalam subtugas transkripsi ini.

transcription_url string

URL untuk mengunduh hasil transkripsi. URL ini berlaku selama 24 jam. Setelah kedaluwarsa, URL yang sebelumnya dikembalikan tidak dapat lagi digunakan untuk mengkueri tugas atau mengunduh hasil.

Hasil transkripsi disimpan sebagai file JSON. Anda dapat mengunduh file ini melalui URL atau membaca isinya langsung melalui permintaan HTTP. Untuk makna setiap field dalam data JSON, lihat Deskripsi hasil transkripsi.

code string

Penting

Hanya dikembalikan saat subtugas gagal.

Kode kesalahan subtugas yang gagal.

message string

Penting

Hanya dikembalikan saat subtugas gagal.

Pesan kesalahan subtugas yang gagal.

task_metrics object

Statistik eksekusi tugas secara keseluruhan.

Properti

TOTAL integer

Jumlah total subtugas.

SUCCEEDED integer

Jumlah subtugas yang berhasil.

FAILED integer

Jumlah subtugas yang gagal.

API lainnya: kueri batch status tugas dan pembatalan tugas

Untuk detailnya, lihat 管理异步任务: mendukung kueri batch tugas transkripsi file audio yang dikirim dalam 24 jam terakhir, dan membatalkan tugas dalam status PENDING (antrian).

Deskripsi hasil transkripsi

Hasil pengenalan disimpan sebagai file JSON.

Klik untuk melihat contoh hasil pengenalan

{
    "file_url":"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
    "properties":{
        "audio_format":"pcm_s16le",
        "channels":[
            0
        ],
        "original_sampling_rate":16000,
        "original_duration_in_milliseconds":3834
    },
    "transcripts":[
        {
            "channel_id":0,
            "content_duration_in_milliseconds":3720,
            "text":"Hello world, this is Alibaba Speech Lab.",
            "sentences":[
                {
                    "begin_time":100,
                    "end_time":3820,
                    "text":"Hello world, this is Alibaba Speech Lab.",
                    "sentence_id":1,
                    "speaker_id":0, // Field ini hanya ditampilkan saat diarization pembicara otomatis diaktifkan.
                    "words":[
                        {
                            "begin_time":100,
                            "end_time":596,
                            "text":"Hello ",
                            "punctuation":""
                        },
                        {
                            "begin_time":596,
                            "end_time":844,
                            "text":"world",
                            "punctuation":", "
                        }
                        // Konten lainnya dihilangkan di sini.
                    ]
                }
            ]
        }
    ]
}

Parameter utama adalah sebagai berikut:

Parameter

Tipe

Deskripsi

audio_format

string

Format audio dalam file sumber.

channels

array[integer]

Informasi indeks track audio dalam file sumber. Mengembalikan [0] untuk audio single-track, [0, 1] untuk audio dual-track, dan seterusnya.

original_sampling_rate

integer

Laju sampel audio dalam file sumber (Hz).

original_duration_in_milliseconds

integer

Durasi asli audio dalam file sumber (ms).

channel_id

integer

Indeks track audio yang ditranskripsikan, dimulai dari 0.

content_duration_in_milliseconds

integer

Durasi konten dalam track audio yang diidentifikasi sebagai suara (ms).

Penting

Penagihan hanya berdasarkan durasi konten suara (bagian non-suara tidak diukur). Durasi suara biasanya lebih pendek daripada durasi audio total. Deteksi suara berbasis AI mungkin memiliki sedikit perbedaan.

transcript

string

Hasil transkripsi ucapan tingkat paragraf.

sentences

array

Hasil transkripsi ucapan tingkat kalimat.

words

array

Hasil transkripsi ucapan tingkat kata.

begin_time

integer

Timestamp mulai (ms).

end_time

integer

Timestamp akhir (ms).

text

string

Hasil transkripsi ucapan.

speaker_id

integer

Indeks pembicara saat ini, dimulai dari 0. Ini digunakan untuk membedakan pembicara yang berbeda.

Field ini hanya ditampilkan dalam hasil pengenalan saat diarization pembicara diaktifkan.

punctuation

string

Tanda baca yang diprediksi setelah kata, jika ada.

Panggilan sinkron DashScope (Fun-ASR-Flash)

Penting

Panggilan SDK tidak didukung untuk fitur ini.

Titik akhir

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.

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.

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.

Penting

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

  • 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 autentikasi dalam format Bearer <your_api_key>. Ganti <your_api_key> dengan Kunci API Anda yang sebenarnya.

Content-Type

string

Ya

Jenis media dari badan permintaan. Atur ke application/json.

X-DashScope-SSE

string

Ya

Mengontrol apakah hasil dikembalikan sebagai aliran SSE. Atur ke enable untuk menerima hasil antara dan akhir secara bertahap. Atur ke disable atau hilangkan header ini untuk hanya menerima hasil akhir.

Isi permintaan

URL berikut untuk wilayah Singapura. Ganti WorkspaceId dengan workspace ID Anda yang sebenarnya. URL dan Kunci API berbeda tiap wilayah.

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": "fun-asr-flash-2026-06-15",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav"
                        }
                    }
                ]
            }
        ]
    },
    "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": "fun-asr-flash-2026-06-15",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav"
                        }
                    }
                ]
            }
        ]
    },
    "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": "fun-asr-flash-2026-06-15",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_text",
                        "text": "Hello!"
                    }
                ]
            },
            {
                "role": "assistant",
                "content": [
                    {
                        "type": "text",
                        "text": "Hello! I am Tongyi Qianwen. How can I help you?"
                    }
                ]
            },
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav"
                        }
                    }
                ]
            }
        ]
    },
    "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": "fun-asr-flash-2026-06-15",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_text",
                        "text": "Hello!"
                    }
                ]
            },
            {
                "role": "assistant",
                "content": [
                    {
                        "type": "text",
                        "text": "Hello! I am Tongyi Qianwen. How can I help you?"
                    }
                ]
            },
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

Base64

Anda dapat mengirimkan data yang dienkripsi Base64 (Data URI) dalam format: data:<mediatype>;base64,<data>.

  • <mediatype>: Tipe MIME

    Bervariasi berdasarkan format audio. Contoh:

    • WAV: audio/wav

    • MP3: audio/mpeg

  • <data>: String audio file yang dienkripsi Base64

    Pengkodean Base64 meningkatkan ukuran muatan. Pastikan file asli cukup kecil sehingga data terenkripsi tetap dalam batas ukuran input audio 10 MB.

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

    Lihat contoh kode

    import base64, pathlib
    
    # input.mp3 adalah file audio lokal yang akan ditranskripsikan. Ganti dengan path file Anda sendiri 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 yang akan ditranskripsikan. Ganti dengan path file 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("input.mp3"));
              }
          }
import base64, pathlib
import os
import requests

# input.wav adalah file audio lokal yang akan ditranskripsikan. Ganti dengan path file Anda sendiri dan pastikan memenuhi persyaratan audio.
file_path = pathlib.Path("input.wav")
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": "fun-asr-flash-2026-06-15",
    "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())

model string (Wajib)

Nama model. Atur ke fun-asr-flash-2026-06-15.

input object (Wajib)

Informasi input.

Properti

messages array(object) (Wajib)

Daftar pesan. Berisi audio yang akan ditranskripsikan, dan opsional konteks percakapan untuk meningkatkan akurasi pengenalan.

Penting

Fitur konteks meningkatkan akurasi pengenalan untuk kosakata khusus. Untuk detail penggunaan, lihat Mulai cepat. Batasan: Pesan konteks (input_text dan text) masing-masing dibatasi hingga 5. Jika melebihi, hanya 5 yang terbaru yang dipertahankan. Panjang teks total per giliran (user dan assistant panjang field text digabungkan) tidak boleh melebihi 400 karakter (dihitung per karakter, setiap karakter dihitung sebagai 1). Konten berlebih dipotong diam-diam dari akhir.

Penting

Saat memberikan konteks, urutan pesan dalam array messages penting: pesan konteks harus mengikuti urutan giliran percakapan, dengan setiap pesan user (input_text) ditempatkan sebelum pesan assistant (text) yang sesuai. Pesan user yang berisi input_audio harus selalu menjadi item terakhir dalam array messages.

Properti

role string (Wajib)

Peran pesan. Nilai yang valid:

  • user (Wajib): Pesan pengguna. Saat tipe adalah input_audio, ini merepresentasikan audio yang akan ditranskripsikan. Saat tipe adalah input_text, ini merepresentasikan hasil transkripsi giliran sebelumnya atau daftar kata khusus domain (opsional, untuk konteks).

  • assistant (Opsional, untuk konteks): Respons LLM dari giliran sebelumnya.

content array(object) (Wajib)

Daftar konten pesan.

Properti

type string (Wajib)

Tipe konten. Setiap permintaan harus menyertakan setidaknya satu pesan input_audio. Nilai yang valid:

  • input_audio (Wajib): Input audio untuk transkripsi saat ini (peran harus user). Sertakan objek input_audio.

  • input_text (Opsional, untuk konteks): Hasil transkripsi giliran sebelumnya atau daftar kata khusus domain (peran harus user). Sertakan field text.

  • text (Opsional, untuk konteks): Respons LLM dari giliran sebelumnya (peran harus assistant). Sertakan field text.

input_audio object (Wajib bersyarat)

Wajib saat type adalah input_audio.

Properti

data string (Wajib)

Data audio untuk transkripsi. Untuk format audio yang didukung, batas ukuran file, dan batas durasi, lihat Spesifikasi audio. Dua format didukung:

  • URL file audio: URL yang dapat diakses publik yang menunjuk ke file audio.

  • Data URI Base64: Data URI yang berisi data audio terenkripsi Base64, dibentuk dengan menggabungkan awalan data:{MIME_TYPE};base64, 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}

text string (Wajib bersyarat)

Saat type adalah input_text, berikan hasil transkripsi dari giliran sebelumnya atau daftar kata khusus domain. Saat type adalah text, berikan respons LLM dari giliran sebelumnya. Panjang teks dihitung per karakter, setiap karakter dihitung sebagai 1. Panjang field text gabungan semua pesan dalam satu giliran tidak boleh melebihi 400 karakter. Konten berlebih dipotong dari akhir.

parameters object (Wajib)

Parameter model.

Properti

format string (Wajib)

Format audio. Atur ini ke format aktual file audio Anda, seperti wav, mp3, atau opus. Untuk detailnya, lihat Spesifikasi audio.

sample_rate string (Opsional)

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

Badan respons

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 menggunakan protokol Server-Sent Events (SSE). Setiap event SSE memiliki format berikut:

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

Contoh respons:

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

request_id string

Identifier unik untuk permintaan ini.

output object

Hasil output.

Properti

text string

Teks transkripsi lengkap yang terakumulasi hingga titik ini.

sentence object

Detail kalimat saat ini.

Properti

sentence_id integer

Nomor kalimat, dimulai dari 1.

sentence_end boolean

Apakah ini hasil akhir untuk kalimat tersebut. Saat true, pengenalan untuk kalimat ini selesai.

begin_time integer

Waktu mulai kalimat dalam milidetik.

end_time integer

Waktu akhir kalimat dalam milidetik. Hanya dikembalikan saat sentence_end adalah true.

text string

Teks transkripsi untuk kalimat saat ini.

channel_id integer

Nomor channel audio, dimulai dari 0.

words array

Daftar timestamp tingkat kata.

Properti

text string

Teks kata.

begin_time integer

Waktu mulai kata dalam milidetik.

end_time integer

Waktu akhir kata dalam milidetik.

punctuation string

Tanda baca setelah kata. String kosong jika tidak ada.

fixed boolean

Apakah kata tersebut telah difinalisasi. false berarti timestamp dapat disesuaikan dalam event berikutnya.

usage object

Informasi penggunaan. Hanya dikembalikan saat sentence_end adalah true.

Properti

duration integer

Durasi audio yang diproses dalam detik.

Pemrosesan hasil streaming SSE

Dalam mode streaming, perhatikan hal berikut:

  1. Untuk setiap event SSE yang diterima, uraikan JSON dalam field data.

  2. Periksa output.sentence.sentence_end untuk menentukan apakah kalimat saat ini sudah selesai: saat nilainya true, pengenalan untuk kalimat tersebut selesai dan timestamp tingkat kata telah difinalisasi; saat nilainya false, pengenalan masih berlangsung dan teks serta timestamp dapat berubah dalam event berikutnya.

  3. Informasi usage hanya dikembalikan dalam event akhir kalimat. Gunakan informasi ini untuk melacak durasi pemrosesan audio.