All Products
Search
Document Center

Intelligent Speech Interaction:Referensi API

Last Updated:Apr 02, 2026

Layanan pengenalan file rekaman mentranskripsikan file audio yang dikirimkan melalui URL HTTP atau HTTPS. Layanan ini mendukung dua metode pengambilan—polling dan callback—dan memproses file secara asinkron, bukan secara real time.

Fitur yang didukung

  • File audio WAV dan MP3 satu track

  • Dua metode pengambilan: polling dan callback

  • Model linguistik kustom dan kosakata hotword

  • Berbagai bahasa: Mandarin Tiongkok, dialek Tiongkok, dan Inggris

Batasan

KendalaDetail
Format URLHarus dapat diakses publik melalui nama domain. Alamat IP dan spasi tidak diperbolehkan.
Ukuran fileMaksimum 512 MB
Waktu pemrosesan (uji coba gratis)Pengenalan selesai dalam waktu 24 jam
Waktu pemrosesan (Edisi Komersial)Pengenalan selesai dalam waktu 3 jam
Masa retensi hasil72 jam
Kuota harian (uji coba gratis)Hingga 2 jam audio per hari kalender

Contoh URL yang valid

https://aliyun-nls.oss-cn-hangzhou.aliyuncs.com/asr/fileASR/examples/nls-sample-16k.wav

Contoh URL yang tidak valid

http://127.0.0.1/sample.wav
D:\files\sample.wav
Batas pemrosesan 24 jam dan 3 jam tidak berlaku jika total durasi file yang diunggah dalam 30 menit melebihi 500 jam. Untuk pemrosesan audio skala besar, hubungi tim pra-penjualan Alibaba Cloud.

Cara kerja

Layanan pengenalan file rekaman menggunakan API POP Alibaba Cloud (gaya remote procedure call). Klien mengirim permintaan melalui HTTP, dan file rekaman harus dapat diakses melalui URL publik.

Tersedia dua operasi:

  • Kirim task pengenalan (POST): Kirim URL file rekaman dan parameter konfigurasi. Server mengembalikan ID task.

  • Kueri hasil pengenalan (GET): Gunakan ID task untuk melakukan polling terhadap hasil, atau terima hasil tersebut melalui callback jika Anda mengaktifkan metode callback.

Operasi kueri mendukung hingga 100 permintaan per detik (QPS). Jika Anda melebihi batas ini, server akan mengembalikan Throttling.User : Request was denied due to user flow control. Atur interval polling agar tetap berada dalam batas tersebut.

Pilih metode pengambilan

MetodeCara kerjaKapan digunakan
PollingKirim task, lalu secara berkala kueri hasilnya menggunakan ID task.Default. Berfungsi di semua lingkungan.
CallbackKirim task dengan URL callback. Server mengirimkan hasil ke URL tersebut menggunakan metode POST setelah pemrosesan selesai.Gunakan ketika Anda dapat menyediakan titik akhir HTTP atau HTTPS yang dapat dijangkau publik.

Prasyarat

Sebelum mengirimkan task pengenalan:

  1. Periksa format dan laju pengambilan sampel audio file Anda. Pilih skenario dan model yang sesuai di Konsol Interaksi Suara Cerdas berdasarkan kasus penggunaan Anda.

  2. Simpan file audio di Alibaba Cloud Object Storage Service (OSS) atau di server file yang dapat diakses publik.

    • File OSS publik: Dapatkan URL OSS langsung. Lihat Objek baca publik.

    • File OSS privat: Hasilkan URL presigned dengan periode validitas menggunakan SDK. Lihat Objek privat.

    • Server file kustom: Pastikan field Content-Length pada header respons HTTP sesuai dengan ukuran file aktual, atau unduhan akan gagal.

Kirim task pengenalan

Metode: POST

Atur parameter permintaan sebagai string JSON dalam badan permintaan.

Contoh isi permintaan

{
    "appkey": "your-appkey",
    "file_link": "https://aliyun-nls.oss-cn-hangzhou.aliyuncs.com/asr/fileASR/examples/nls-sample-16k.wav",
    "version": "4.0",
    "auto_split": false,
    "enable_words": false,
    "enable_sample_rate_adaptive": true,
    "valid_times": [
        {
            "begin_time": 200,
            "end_time": 2000,
            "channel_id": 0
        }
    ]
}

Parameter permintaan

ParameterTipeWajibDeskripsi
appkeyStringYaAppkey proyek Anda di Konsol Interaksi Suara Cerdas.
file_linkStringYaURL file rekaman. Pastikan skenario dan model proyek sesuai dengan file rekaman.
versionStringYaVersi layanan. Nilai default: 2.0. Atur ke 4.0 untuk integrasi baru.
enable_wordsBooleanTidakMenentukan apakah akan mengembalikan hasil pengenalan tingkat kata. Nilai default: false. Memerlukan version: 4.0.
enable_sample_rate_adaptiveBooleanTidakMenentukan apakah akan melakukan downsampling otomatis pada audio dengan laju pengambilan sampel di atas 16.000 Hz. Nilai default: false. Memerlukan version: 4.0.
enable_callbackBooleanTidakMenentukan apakah akan menggunakan metode callback. Nilai default: false.
callback_urlStringTidakURL callback. Wajib diisi saat enable_callback bernilai true. Harus berupa URL HTTP atau HTTPS dengan nama domain (bukan alamat IP).
auto_splitBooleanTidakMenentukan apakah akan mengaktifkan pemisahan track otomatis. Saat diaktifkan, server mengidentifikasi pembicara setiap kalimat menggunakan field ChannelId. Hanya mendukung audio mono dengan laju 8.000 Hz. Tidak dapat diatur ke true saat enable_unify_post bernilai true.
enable_unify_postBooleanTidakMenentukan apakah akan mengaktifkan post-processing. Nilai default: false. Tidak dapat diatur ke true saat auto_split bernilai true.
enable_inverse_text_normalizationBooleanTidakMenentukan apakah akan mengaktifkan normalisasi teks terbalik (ITN), yang mengonversi angka Tiongkok menjadi angka Arab. Nilai default: false. Memerlukan version: 4.0 dan enable_unify_post: true. ITN tidak berlaku untuk hasil tingkat kata.
enable_disfluencyBooleanTidakMenentukan apakah akan mengaktifkan deteksi disfluensi. Nilai default: false. Memerlukan version: 4.0 dan enable_unify_post: true.
valid_timesList\<ValidTime\>TidakRentang waktu dalam track audio yang memerlukan pengenalan suara.
max_end_silenceIntegerTidakDurasi maksimum keheningan di akhir kalimat. Nilai default: 450. Satuan: milidetik.
max_single_segment_timeIntegerTidakDurasi maksimum satu kalimat. Nilai minimum: 10000. Nilai default: 20000. Satuan: milidetik.
customization_idStringTidakID model linguistik kustom yang dibuat melalui API POP.
class_vocabulary_idStringTidakID kosakata hotword terkategorikan.
vocabulary_idStringTidakID kosakata hotword ekstensif.

Objek ValidTime

ParameterTipeWajibDeskripsi
begin_timeIntYaOffset waktu mulai rentang waktu. Satuan: milidetik.
end_timeIntYaOffset waktu akhir rentang waktu. Satuan: milidetik.
channel_idIntYaTrack audio tempat rentang waktu tersebut berlaku. Nilai dimulai dari 0.

Parameter respons

Kode status HTTP 200 menunjukkan permintaan diterima.

ParameterTipeDeskripsi
TaskIdStringID task. Gunakan ini untuk mengkueri hasil pengenalan.
RequestIdStringID permintaan, untuk debugging.
StatusCodeIntKode status.
StatusTextStringPesan status.

Contoh respons

{
    "TaskId": "4b56f0c4b7e611e88f34c33c2a60****",
    "RequestId": "E4B183CC-6CFE-411E-A547-D877F7BD****",
    "StatusText": "SUCCESS",
    "StatusCode": 21050000
}

Kueri hasil pengenalan

Metode: GET

Masukkan ID task yang dikembalikan oleh operasi POST sebagai parameter permintaan. Lakukan polling dengan interval yang wajar agar tetap berada dalam batas 100 QPS.

Parameter permintaan

ParameterTipeWajibDeskripsi
TaskIdStringYaID task yang dikembalikan oleh operasi kirim.

Parameter respons

Kode status HTTP 200 menunjukkan permintaan kueri diterima.

ParameterTipeDeskripsi
TaskIdStringID task.
StatusCodeIntKode status.
StatusTextStringPesan status.
RequestIdStringID permintaan, untuk debugging.
ResultObjectHasil pengenalan. Hanya muncul saat StatusText bernilai SUCCESS.
SentencesList\<SentenceResult\>Hasil pengenalan tingkat kalimat. Hanya muncul saat StatusText bernilai SUCCESS.
WordsList\<WordResult\>Hasil pengenalan tingkat kata. Hanya muncul saat enable_words bernilai true dan version bernilai 4.0.
BizDurationLongTotal durasi audio yang dikenali. Satuan: milidetik.
SolveTimeLongStempel waktu saat tugas pengenalan selesai, dalam satuan milidetik.

Objek SentenceResult

ParameterTipeDeskripsi
ChannelIdIntTrack audio tempat kalimat tersebut berada.
BeginTimeIntOffset waktu mulai kalimat. Satuan: milidetik.
EndTimeIntOffset waktu akhir kalimat. Satuan: milidetik.
TextStringTeks yang dikenali dari kalimat tersebut.
EmotionValueIntIntensitas emosi, dihitung sebagai desibel volume dibagi 10. Nilai valid: 1–10. Nilai lebih tinggi menunjukkan emosi lebih kuat.
SilenceDurationIntDurasi keheningan antara kalimat ini dan kalimat sebelumnya. Satuan: detik.
SpeechRateIntLaju bicara rata-rata kalimat tersebut. Satuan: kata per menit.

Objek WordResult

ParameterTipeDeskripsi
ChannelIdIntTrack audio tempat kata tersebut berada.
BeginTimeIntWaktu mulai kata tersebut. Satuan: milidetik.
EndTimeIntWaktu akhir kata tersebut. Satuan: milidetik.
WordStringKata yang dikenali.

Contoh respons

Task berhasil diselesaikan (file satu track nls-sample-16k.wav)

{
    "TaskId": "d429dd7dd75711e89305ab6170fe****",
    "RequestId": "9240D669-6485-4DCC-896A-F8B31F94****",
    "StatusText": "SUCCESS",
    "BizDuration": 2956,
    "SolveTime": 1540363288472,
    "StatusCode": 21050000,
    "Result": {
        "Sentences": [{
            "EndTime": 2365,
            "SilenceDuration": 0,
            "BeginTime": 340,
            "Text": "Weather in Beijing",
            "ChannelId": 0,
            "SpeechRate": 177,
            "EmotionValue": 5.0
        }]
    }
}

Respons callback (versi 4.0, enable_callback: true)

Format respons callback sama dengan format respons polling.

{
    "Result": {
        "Sentences": [{
            "EndTime": 2365,
            "SilenceDuration": 0,
            "BeginTime": 340,
            "Text": "Weather in Beijing",
            "ChannelId": 0,
            "SpeechRate": 177,
            "EmotionValue": 5.0
        }]
    },
    "TaskId": "36d01b244ad811e9952db7bb7ed2****",
    "StatusCode": 21050000,
    "StatusText": "SUCCESS",
    "RequestTime": 1553062810452,
    "SolveTime": 1553062810831,
    "BizDuration": 2956
}
RequestTime adalah timestamp saat permintaan pengenalan dikirimkan, dalam milidetik. Misalnya, nilai 1553062810452 menunjukkan pukul 14:20:10 pada 20 Maret 2019, UTC+8. SolveTime adalah timestamp saat task selesai, dalam milidetik.

Task sedang dalam antrian

{
    "TaskId": "c7274235b7e611e88f34c33c2a60****",
    "RequestId": "981AD922-0655-46B0-8C6A-5C836822****",
    "StatusText": "QUEUEING",
    "StatusCode": 21050002
}

Task sedang berjalan

{
    "TaskId": "c7274235b7e611e88f34c33c2a60****",
    "RequestId": "8E908ED2-867F-457E-82BF-4756194A****",
    "StatusText": "RUNNING",
    "BizDuration": 0,
    "StatusCode": 21050001
}

Gagal mengunduh file

{
    "TaskId": "4cf25b7eb7e711e88f34c33c2a60****",
    "RequestId": "098BF27C-4CBA-45FF-BD11-3F532F26****",
    "StatusText": "FILE_DOWNLOAD_FAILED",
    "BizDuration": 0,
    "SolveTime": 1536906469146,
    "StatusCode": 41050002
}

Hasil tingkat kata (enable_words: true, version: 4.0)

Hasil tingkat kata disertakan bersama hasil tingkat kalimat. Respons polling dan callback menggunakan format yang sama.

{
    "StatusCode": 21050000,
    "Result": {
        "Sentences": [{
            "SilenceDuration": 0,
            "EmotionValue": 5.0,
            "ChannelId": 0,
            "Text": "Weather in Beijing",
            "BeginTime": 340,
            "EndTime": 2365,
            "SpeechRate": 177
        }],
        "Words": [{
            "ChannelId": 0,
            "Word": "Weather",
            "BeginTime": 640,
            "EndTime": 940
        }, {
            "ChannelId": 0,
            "Word": "in",
            "BeginTime": 940,
            "EndTime": 1120
        }, {
            "ChannelId": 0,
            "Word": "Beijing",
            "BeginTime": 1120,
            "EndTime": 2020
        }]
    },
    "SolveTime": 1553236968873,
    "StatusText": "SUCCESS",
    "RequestId": "027B126B-4AC8-4C98-9FEC-A031158F****",
    "TaskId": "b505e78c4c6d11e9a213e11db149****",
    "BizDuration": 2956
}

Kode status layanan

Kode status Normal

Kode statusPesan statusDeskripsiTindakan
21050000SUCCESSTask berhasil diselesaikan.Tidak diperlukan tindakan.
21050001RUNNINGTask sedang berjalan.Kueri lagi nanti.
21050002QUEUEINGTask sedang dalam antrian.Kueri lagi nanti.
21050003SUCCESS_WITH_NO_VALID_FRAGMENTTask berhasil, tetapi tidak ada data suara yang terdeteksi.Periksa apakah audio berisi suara atau durasi suara terlalu singkat.

Kode error

Kode status yang diawali dengan 4 adalah error sisi klien. Kode status yang diawali dengan 5 adalah error sisi server.

Kode statusPesan statusDeskripsiSolusi
41050001USER_BIZDURATION_QUOTA_EXCEEDKuota audio harian terlampaui.Kirim email ke nls_support@service.aliyun.com untuk meningkatkan kuota Anda.
41050002FILE_DOWNLOAD_FAILEDFile audio tidak dapat diunduh.Periksa apakah URL benar dan dapat diakses publik.
41050003FILE_CHECK_FAILEDFormat file audio tidak valid.Periksa apakah file rekaman berupa file WAV atau MP3 satu track atau dua track.
41050004FILE_TOO_LARGEFile audio melebihi batas ukuran.Pastikan ukuran file tidak lebih dari 512 MB.
41050005FILE_NORMALIZE_FAILEDNormalisasi audio gagal.Periksa apakah file tidak rusak dan dapat diputar.
41050006FILE_PARSE_FAILEDPenguraian audio gagal.Periksa apakah file tidak rusak dan dapat diputar.
41050007MKV_PARSE_FAILEDPenguraian MKV gagal.Periksa apakah file tidak rusak dan dapat diputar.
41050008UNSUPPORTED_SAMPLE_RATELaju pengambilan sampel audio tidak didukung.Periksa apakah laju pengambilan sampel file sesuai dengan model Pengenalan Suara Otomatis (ASR) yang terikat pada appkey Anda di Konsol Interaksi Suara Cerdas.
41050009UNSUPPORTED_ASR_GROUPGrup ASR tidak didukung.Periksa apakah appkey termasuk dalam Akun Alibaba Cloud yang sama dengan Pasangan Kunci Akses.
41050010FILE_TRANS_TASK_EXPIREDTask pengenalan telah kedaluwarsa.Periksa apakah ID task valid dan belum kedaluwarsa.
41050011REQUEST_INVALID_FILE_URL_VALUEParameter file_link tidak valid.Periksa format file_link.
41050012REQUEST_INVALID_CALLBACK_VALUEParameter callback_url tidak valid.Periksa format callback_url.
41050013REQUEST_PARAMETER_INVALIDParameter permintaan tidak valid.Periksa apakah badan permintaan merupakan string JSON yang valid.
41050014REQUEST_EMPTY_APPKEY_VALUEParameter appkey tidak ada.Tambahkan parameter appkey ke permintaan.
41050015REQUEST_APPKEY_UNREGISTEREDParameter appkey tidak valid.Periksa apakah appkey valid dan termasuk dalam Akun Alibaba Cloud yang sama dengan ID AccessKey.
41050021RAM_CHECK_FAILEDAutentikasi Pengguna RAM gagal.Periksa apakah Pengguna RAM memiliki izin untuk memanggil API Interaksi Suara Cerdas.
41050023CONTENT_LENGTH_CHECK_FAILEDHeader Content-Length tidak valid.Periksa apakah nilai Content-Length pada header respons HTTP sesuai dengan ukuran file aktual.
41050024FILE_404_NOT_FOUNDFile audio tidak ditemukan di URL yang ditentukan.Periksa apakah file ada di URL tersebut.
41050025FILE_403_FORBIDDENAkses ke file audio ditolak.Periksa apakah file dapat diakses publik.
41050026FILE_SERVER_ERRORTerjadi error pada server file.Periksa apakah server file beroperasi dengan benar.
51050000INTERNAL_ERRORTerjadi error internal.Abaikan jika bersifat sementara. Buat tiket jika error berulang.
51050001VAD_FAILEDDeteksi aktivitas suara (VAD) gagal.Abaikan jika bersifat sementara. Buat tiket jika error berulang.
51050002RECOGNIZE_FAILEDASR gagal.Abaikan jika bersifat sementara. Buat tiket jika error berulang.
51050003RECOGNIZE_INTERRUPTASR terganggu.Abaikan jika bersifat sementara. Buat tiket jika error berulang.
51050004OFFER_INTERRUPTTask tidak dapat ditulis ke antrian.Abaikan jika bersifat sementara. Buat tiket jika error berulang.
51050005FILE_TRANS_TIMEOUTTask melebihi batas waktu.Abaikan jika bersifat sementara. Buat tiket jika error berulang.
51050006FRAGMENT_FAILEDKonversi audio multi-channel ke mono gagal.Abaikan jika bersifat sementara. Buat tiket jika error berulang.

Catatan versi

Layanan pengenalan file rekaman menggunakan versi 2.0 secara default untuk integrasi yang sudah ada. Jika Anda telah mengaktifkan layanan pengenalan file rekaman tanpa mengatur versi ke 4.0, versinya adalah 2.0 secara default. Anda dapat terus menggunakan versi ini. Jika Anda pengguna baru, atur version ke 4.0.

Perbedaan utama: Pada versi 2.0, respons callback menggunakan format JSON snake_case yang berbeda dari respons polling. Pada versi 4.0, keduanya menggunakan format camelCase yang sama.

Contoh respons callback versi 2.0

{
    "result": [{
        "begin_time": 340,
        "channel_id": 0,
        "emotion_value": 5.0,
        "end_time": 2365,
        "silence_duration": 0,
        "speech_rate": 177,
        "text": "Weather in Beijing"
    }],
    "task_id": "3f5d4c0c399511e98dc025f34473****",
    "status_code": 21050000,
    "status_text": "SUCCESS",
    "request_time": 1551164878830,
    "solve_time": 1551164879230,
    "biz_duration": 2956
}