Pelajari tentang endpoint WebSocket, autentikasi, alur interaksi Realtime dan Inferensi, serta event spesifik model.
Prasyarat
- Aktifkan model atau aplikasi target dan konfirmasi wilayah yang didukungnya.
- Dapatkan API key untuk wilayah dan workspace yang akan Anda gunakan. Lihat Autentikasi token.
- Dapatkan ID Workspace Anda jika Anda menggunakan domain spesifik workspace.
Header permintaan
Atur Authorization dalam permintaan handshake WebSocket. Gunakan header lain seperti yang dijelaskan dalam referensi parameter model target.
| Header | Wajib | Deskripsi |
|---|---|---|
Authorization | Ya | Berikan API key sebagai Bearer <API_KEY>. |
user-agent | Tidak | Mengidentifikasi klien. |
X-DashScope-WorkSpace | Spesifik model | Menentukan ID workspace. Lihat referensi header spesifik model untuk penggunaannya. |
X-DashScope-DataInspection | Spesifik model | Mengonfigurasi inspeksi data. Lihat referensi header spesifik model untuk nilai yang didukung dan penerapannya. |
Endpoint
Gunakan wss:// dan pilih jalur API serta lokasi nama model untuk model target Anda. Tabel di bawah ini mencantumkan metode koneksi berdasarkan model. Untuk model dan wilayah yang didukung, lihat dokumentasi model yang sesuai.
| Keluarga model | Path API | Lokasi nama model |
|---|---|---|
| Qwen-Omni-Realtime | /api-ws/v1/realtime | Parameter kueri URL model |
| Qwen-Audio-TTS/CosyVoice | /api-ws/v1/inference | payload.model dalam run-task |
| Qwen-TTS-Realtime | /api-ws/v1/realtime | Parameter kueri URL model |
| Qwen-Audio-ASR/Fun-ASR/Paraformer | /api-ws/v1/inference | payload.model dalam run-task |
| Qwen-ASR-Realtime | /api-ws/v1/realtime | Parameter kueri URL model |
| Qwen-Audio-Realtime | /api-ws/v1/realtime | Parameter kueri URL model |
| Qwen-LiveTranslate-Realtime | /api-ws/v1/realtime | Parameter kueri URL model |
| Wilayah | Domain spesifik workspace |
|---|---|
| Tiongkok (Beijing) | {WorkspaceId}.cn-beijing.maas.aliyuncs.com |
| Singapura | {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com |
{WorkspaceId} dengan ID workspace Anda. Contoh:
dashscope.aliyuncs.com untuk Beijing dan dashscope-intl.aliyuncs.com untuk Singapura, dengan jalur /api-ws/v1/realtime yang sama. API key harus sesuai dengan wilayahnya.
Alur interaksi umum
/api-ws/v1/realtime menggunakan protokol berbasis sesi, sedangkan /api-ws/v1/inference menggunakan protokol berbasis tugas.
Protokol waktu nyata
Setelah terhubung, klien mengonfigurasi sesi dengan session.update dan menunggu session.updated sebelum mengirimkan input. Model target menentukan cara melakukan commit input, memicu respons, dan mengakhiri sesi.
- Klien →
Realtime API: Jabat tangan WebSocket denganAuthorizationdanmodel. Realtime API→ Klien:HTTP 101dansession.created.- Klien →
Realtime API:session.update.Realtime API→ Klien:session.updated. - Dalam loop input/output, pilih cabang input: untuk audio, Klien →
Realtime API:input_audio_buffer.append; untuk input teksQwen-TTS, Klien →Realtime API:input_text_buffer.append. - Commit manual opsional: Klien →
Realtime API:input_audio_buffer.commitatauinput_text_buffer.commit, dipilih sesuai dengan jenis input. - Untuk model yang memerlukan respons eksplisit, Klien →
Realtime API:response.create. Realtime API→ Klien: peristiwa teks /response.audio.delta.- Penyelesaian respons opsional, tidak termasuk model khusus ASR:
Realtime API→ Klien:response.done. Loop input/output dapat dilanjutkan. - Untuk model yang mendukung peristiwa selesai, Klien →
Realtime API:session.finish;Realtime API→ Klien:session.finished. - Klien →
Realtime API: Menutup koneksi WebSocket.
- Hubungkan: Tentukan model dalam parameter kueri
modelURL dan sertakan API key dalam header permintaan. Setelah handshake berhasil, server mengirimkansession.created. - Konfigurasikan sesi: Kirim
session.updateuntuk mengonfigurasi format audio yang didukung, modalitas output, suara, atau parameter deteksi ucapan, lalu tunggusession.updated. Lihat referensi event klien spesifik model untuk parameter sesi yang didukung. - Kirim input: Kirim audio berkode Base64 dengan
input_audio_buffer.append. Untuk Qwen-TTS, kirim teks denganinput_text_buffer.append. Model yang mendukung input gambar menggunakaninput_image_buffer.append; ikuti persyaratan waktu gambar dan audio model tersebut. - Commit dan terima hasil: Dalam mode otomatis, server memicu pemrosesan. Dalam mode manual, kirim
input_audio_buffer.commitatauinput_text_buffer.commitsesuai dengan jenis input. Apakahresponse.createjuga diperlukan, dan event hasil mana yang harus ditangani, bergantung pada model. Lihat perbandingan di bawah ini. - Akhiri sesi: Untuk model yang mendukung event selesai, kirim
session.finishdan tunggusession.finishedserta hasil yang tersisa. Untuk model lainnya, tutup WebSocket setelah menerima hasil.response.donemenandai akhir dari satu respons, bukan koneksi. Untuk model khusus ASR, event penyelesaian transkripsi menandai akhir dari pengenalan.
Protokol inferensi
Klien mengirim run-task dan menunggu task-started sebelum mentransmisikan input. Pengenalan ucapan menggunakan frame audio biner; sintesis ucapan mengirim teks dengan continue-task. Saat input berakhir, kirim finish-task dan tunggu task-finished.
- Klien →
Inference API: Jabat tangan WebSocket denganAuthorization. Inference API→ Klien:HTTP 101.- Klien →
Inference API:run-taskdenganpayload.modeldantask_id.Inference API→ Klien:task-started. - Dalam loop input/output, cabang pengenalan ucapan mengirim frame audio biner dari Klien ke
Inference API.Inference APImengembalikanresult-generatedke Klien. - Dalam cabang sintesis ucapan, Klien →
Inference API:continue-taskdengan teks dantask_id.Inference API→ Klien: frame audio biner danresult-generatedjika disediakan. - Ketika loop input/output berakhir, Klien →
Inference API:finish-taskdengantask_idyang sama. Inference API→ Klien: Hasil yang tersisa dantask-finished.- Klien →
Inference API: Menutup atau menggunakan kembali koneksi sesuai dukungan model.
- Hubungkan: Gunakan
/api-ws/v1/inferencedan sertakan API key dalam header permintaan. - Mulai tugas: Kirim
run-task, tentukan model dalampayload.modeldan parameter seperti format input. Buatheader.task_idyang unik dan tunggutask-started. - Kirim input dan terima hasil:
- Pengenalan ucapan: Kirim frame audio biner dan terima hasil pengenalan melalui
result-generated. - Sintesis ucapan: Kirim teks dalam
payload.input.textdaricontinue-taskdan terima frame audio biner. Model juga dapat mengembalikan informasi seperti stempel waktu melaluiresult-generated.
- Pengenalan ucapan: Kirim frame audio biner dan terima hasil pengenalan melalui
- Selesaikan tugas: Setelah mengirim
finish-task, terus terima hasil yang tersisa hinggatask-finishedtiba. Semua eventrun-task,continue-task, danfinish-taskuntuk tugas yang sama harus menggunakanheader.task_idyang sama. Kemudian tutup koneksi, atau gunakan kembali sesuai dukungan model.
Perbedaan model
Model waktu nyata
Tabel di bawah ini merangkum pemicu input dan pengakhiran sesi. Untuk semua jenis VAD yang didukung, format audio, dan nilai parameter lainnya, lihat referensi event spesifik model.
| Model | Pemicu input dan respons | Pengakhiran |
|---|---|---|
| Qwen3.8-Omni / Qwen3.5-Omni | Mode VAD memicu respons secara otomatis. Dalam mode Manual, kirim input_audio_buffer.commit diikuti oleh response.create. | Tutup koneksi setelah menerima hasil. |
| Qwen-TTS-Realtime | server_commit melakukan commit teks secara otomatis. Dalam mode commit, kirim input_text_buffer.commit; response.create tidak diperlukan. | session.finish → session.finished |
| Qwen-ASR-Realtime | Mode VAD memproses input secara otomatis. Dalam mode Manual, kirim input_audio_buffer.commit; response.create tidak diperlukan. | session.finish → session.finished |
| Qwen-Audio-Realtime | Mode otomatis mendeteksi giliran bicara di server. Dalam mode Manual, kirim input_audio_buffer.commit diikuti oleh response.create. | Tutup koneksi setelah menerima hasil. |
| Qwen3.8-LiveTranslate | Konfigurasikan modalitas output dengan output_modalities dan deteksi giliran bicara dengan audio.input.turn_detection. Streaming audio dan kirim session.finish saat input berakhir. | session.finish → session.finished |
| Qwen3.5-LiveTranslate | Konfigurasikan sesi dengan modalities dan turn_detection. Dalam mode Manual, input_audio_buffer.commit memicu respons tanpa response.create. | session.finish → session.finished |
| Model | Event output utama |
|---|---|
| Qwen-Omni-Realtime | response.text.delta / response.audio_transcript.delta / response.audio.delta / response.done |
| Qwen-TTS-Realtime | response.audio.delta / response.done |
| Qwen-ASR-Realtime | conversation.item.input_audio_transcription.text / conversation.item.input_audio_transcription.completed |
| Qwen-Audio-Realtime | response.audio_transcript.delta / response.audio.delta / response.done |
| Qwen3.8-LiveTranslate | response.text.delta / response.audio_transcript.delta / response.audio.delta / response.done |
| Qwen3.5-LiveTranslate | response.text.text / response.audio_transcript.text / response.audio.delta / response.done |
Nama event terjemahan bergantung pada versi model: Qwen3.8-LiveTranslate menggunakan
.delta, sedangkan Qwen3.5-LiveTranslate menggunakan .text. Misalnya, transkrip audio yang diterjemahkan masing-masing menggunakan response.audio_transcript.delta dan response.audio_transcript.text.Model inferensi
Qwen-Audio-TTS/CosyVoice menggunakan alur tugas run-task → task-started → continue-task → finish-task → task-finished. Pengenalan ucapan Qwen-Audio-ASR/Fun-ASR/Paraformer mengirimkan frame audio biner setelah task-started. Kedua jenis tersebut melaporkan kesalahan tugas melalui task-failed.
Panduan integrasi spesifik model
Omni waktu nyata
Sintesis ucapan real-time
Qwen-Audio-TTS
CosyVoice
Qwen-TTS-Realtime
Sambert
Pengenalan ucapan real-time
Qwen-Audio-ASR-Message
Qwen-Audio-ASR-Streaming
Fun-ASR-Realtime
Qwen-ASR-Realtime
Paraformer
Percakapan suara real-time
Qwen-Audio-Realtime
Terjemahan audio dan video real-time
Qwen-Livetranslate-Realtime
Penanganan error
- Kegagalan handshake: Gunakan status HTTP dan pesan kesalahan untuk memeriksa endpoint, API key, workspace, dan izin model. Untuk 401/403, periksa autentikasi terlebih dahulu.
- Model tidak tersedia atau belum diaktifkan: Verifikasi nama model, aktivasi layanan, dan wilayah.
- Kesalahan waktu nyata: Tangani event
errordan baca jenis serta pesannya. Sesuaikan jenis event atau parameter dalam permintaan berdasarkan pesan kesalahan tersebut. - Kesalahan inferensi: Event
task-failedmenunjukkan bahwa tugas telah gagal. Bacaheader.error_codedanheader.error_messageuntuk mengetahui penyebabnya.