Topik ini menjelaskan event yang dikirim server ke klien selama sesi WebSocket dengan API Qwen-ASR-Realtime.
error
Event ini dikirim ke klien ketika server mendeteksi suatu error, baik dari sisi klien maupun server.
Parameter | Type | Description | type | string | Jenis event. Nilainya tetap error. | event_id | string | ID event. | error.type | string | Jenis error. | error.code | string | Kode kesalahan. | error.message | string | Pesan kesalahan spesifik. Untuk solusi, lihat Pesan kesalahan. | error.param | string | Parameter yang terkait dengan kesalahan tersebut. | error.event_id | string | ID event yang terkait dengan kesalahan tersebut. |
| {
"event_id": "event_B2uoU7VOt1AAITsPRPH9n",
"type": "error",
"error": {
"type": "invalid_request_error",
"code": "invalid_value",
"message": "Invalid value: 'whisper-1xx'. Supported values are: 'whisper-1'.",
"param": "session.input_audio_transcription.model",
"event_id": "event_123"
}
}
|
session.created
Ini adalah event pertama yang dikirim server setelah klien berhasil terhubung. Event ini berisi konfigurasi default yang ditetapkan server untuk sesi tersebut.
Parameter | Type | Description | type | string | Jenis event. Nilainya tetap session.created. | event_id | string | ID event. | session.id | string | ID sesi WebSocket saat ini. | session.object | string | Nilainya tetap realtime.session. | session.model | string | Nama model. | session.modalities | array[string] | Modalitas output model. Nilainya tetap ["text"]. | session.input_audio_format | string | Format audio input. | session.input_audio_transcription | object | Parameter konfigurasi untuk pengenalan ucapan. Untuk informasi selengkapnya, lihat parameter input_audio_transcription pada event session.update dari client. | session.turn_detection | object | Konfigurasi Voice Activity Detection (VAD). | session.turn_detection.type | string | Nilainya tetap server_vad. | session.turn_detection.threshold | float | Ambang batas deteksi VAD. | session.turn_detection.silence_duration_ms | integer | Durasi jeda yang digunakan sebagai ambang deteksi VAD, dalam milidetik (ms). |
| {
"event_id": "event_1234",
"type": "session.created",
"session": {
"id": "sess_001",
"object": "realtime.session",
"model": "qwen3-asr-flash-realtime",
"modalities": ["text"],
"input_audio_format": "pcm16",
"input_audio_transcription": null,
"turn_detection": {
"type": "server_vad",
"threshold": 0.5,
"silence_duration_ms": 200
}
}
}
|
session.updated
Server mengirim event ini setelah berhasil memproses event session.update dari klien. Jika terjadi error selama pemrosesan, server akan mengirim event error sebagai gantinya.
Parameter | Type | Description | type | string | Jenis event. Nilainya adalah session.updated. |
Untuk deskripsi parameter lainnya, lihat session.created. | {
"event_id": "event_1234",
"type": "session.updated",
"session": {
"id": "sess_001",
"object": "realtime.session",
"model": "gpt-4o-realtime-preview-2024-12-17",
"modalities": ["text"],
"input_audio_format": "pcm16",
"input_audio_transcription": null,
"turn_detection": {
"type": "server_vad",
"threshold": 0.5,
"silence_duration_ms": 200
}
}
}
|
input_audio_buffer.speech_started
Event ini hanya dikirim dalam mode VAD. Server mengirimnya ketika mendeteksi awal ucapan dalam buffer audio.
Event ini dapat terjadi setiap kali audio ditambahkan ke buffer, kecuali jika awal ucapan telah terdeteksi sebelumnya.
Parameter | Type | Description | type | string | Jenis event. Nilainya tetap input_audio_buffer.speech_started. | event_id | string | ID event. | audio_start_ms | integer | Waktu dalam milidetik sejak audio mulai ditulis ke buffer hingga ucapan pertama kali terdeteksi selama sesi. | item_id | string | ID item pesan pengguna yang akan dibuat. |
| {
"event_id": "event_B1lV7FPbgTv9qGxPI1tH4",
"type": "input_audio_buffer.speech_started",
"audio_start_ms": 64,
"item_id": "item_B1lV7jWLscp4mMV8hSs8c"
}
|
input_audio_buffer.speech_stopped
Event ini hanya dikirim dalam mode VAD. Server mengirimnya ketika mendeteksi akhir ucapan dalam buffer audio.
Setelah event ini dipicu, server segera mengirim event conversation.item.created, yang berisi item pesan pengguna yang dibuat dari buffer audio.
Parameter | Type | Description | type | string | Jenis event. Nilainya tetap input_audio_buffer.speech_stopped. | event_id | string | ID event. | audio_end_ms | integer | Waktu yang berlalu dalam milidetik sejak awal sesi hingga ucapan berhenti. | item_id | string | ID item pesan pengguna yang dibuat saat ucapan berhenti. |
| {
"event_id": "event_B3GGEYh2orwNIdhUagZPz",
"type": "input_audio_buffer.speech_stopped",
"audio_end_ms": 28128,
"item_id": "item_B3GGE8ry4yqbqJGzrVhEM"
}
|
input_audio_buffer.committed
Parameter | Type | Description | type | string | Jenis event. Nilainya tetap input_audio_buffer.committed. | event_id | string | ID event. | previous_item_id | string | ID item percakapan sebelumnya. | item_id | string | ID item percakapan pengguna yang akan dibuat. |
| {
"event_id": "event_1121",
"type": "input_audio_buffer.committed",
"previous_item_id": "msg_001",
"item_id": "msg_002"
}
|
conversation.item.created
Server mengirim event ini ketika sebuah item percakapan baru dibuat.
Parameter | Type | Description | type | string | Jenis event. Nilainya tetap conversation.item.created. | event_id | string | ID event. | previous_item_id | string | ID item percakapan sebelumnya. | item | object | Item yang akan ditambahkan ke percakapan. | item.id | string | ID unik item percakapan. | item.object | string | Nilainya tetap realtime.item. | item.type | string | Nilainya tetap message. | item.status | string | Status item percakapan. | item.role | string | Peran pengirim pesan. | item.content | array[object] | Konten pesan. | item.content.type | string | Nilainya tetap input_audio. | item.content.transcript | string | Nilainya tetap null. Hasil pengenalan lengkap disediakan dalam event conversation.item.input_audio_transcription.completed. |
| {
"type": "conversation.item.created",
"event_id": "event_B3GGKbCfBZTpqFHZ0P8vg",
"previous_item_id": "item_B3GGE8ry4yqbqJGzrVhEM",
"item": {
"id": "item_B3GGEPlolCqdMiVbYIf5L",
"object": "realtime.item",
"type": "message",
"status": "completed",
"role": "user",
"content": [
{
"type": "input_audio",
"transcript": null
}
]
}
}
|
conversation.item.input_audio_transcription.text
Event ini dikirim secara berkala untuk memberikan hasil pengenalan secara real-time.
Parameter | Type | Description | type | string | Jenis event. Nilainya tetap conversation.item.input_audio_transcription.text. | event_id | string | ID event. | item_id | string | ID item percakapan terkait. | content_index | integer | Indeks bagian konten yang berisi audio. | language | string | Bahasa audio yang dikenali. Jika bahasa ditentukan dalam parameter permintaan language, nilai ini akan sesuai dengan bahasa yang ditentukan. Nilai yang mungkin: | emotion | string | Emosi yang terdeteksi dalam audio. Emosi berikut didukung: surprised
neutral
happy
sad
disgusted
angry
fearful
| text | string | Awalan teks yang telah dikonfirmasi. Ini adalah bagian dari kalimat saat ini yang telah dikonfirmasi oleh model dan tidak akan berubah. | stash | string | Akhiran teks yang telah dikenali sebagian. Ini adalah draf sementara yang mengikuti bagian yang telah dikonfirmasi. Model masih memproses draf ini dan mungkin melakukan koreksi. |
| {
"event_id": "event_R7Pfu8QVBfP5HmpcbEFSd",
"type": "conversation.item.input_audio_transcription.text",
"item_id": "item_MpJQPNQzqVRc9aC9zMwSj",
"content_index": 0,
"language": "en",
"emotion": "neutral",
"text": "",
"stash": "Beijing's"
}
Kapan saja, Anda dapat memperoleh pratinjau kalimat paling lengkap dengan menggabungkan kedua bidang ini: pratinjau kalimat real-time = text + stash. Klik untuk melihat contoh Misalnya, asumsikan pengguna mengucapkan, "Cuacanya bagus hari ini, cerah dan terang." Tabel berikut menunjukkan aliran acara yang mungkin Anda terima dan menjelaskan cara menafsirkannya: Timestamp | Progres ucapan pengguna | Tanggapan API (text dan stash) | Tampilan UI (text + stash) | T1 | “Tersebut...” | text: "" stash: "The" | Cuaca | T2 | "...cuaca adalah..." | text: "" stash: "Cuacanya adalah" | Cuaca adalah | T3 | "...hari ini bagus" | text: "Cuaca" stash: "cuaca hari ini bagus" | Cuacanya bagus hari ini (Catatan: “The” telah dikonfirmasi dan dipindahkan ke bidang teks.) | T4 | (Jeda singkat) | text: "Cuacanya bagus hari ini," stash: "" | Cuacanya bagus hari ini, (Klausa pertama telah sepenuhnya dikonfirmasi.) | T5 | "...cerah dan..." | text: "Cuacanya bagus hari ini," stash: "cerah dan" | Cuacanya bagus hari ini, cerah dan | T6 | "...terang." | text: "Cuacanya bagus hari ini," stash: "cerah dan terang." | Cuacanya bagus hari ini, cerah dan terang. | T7 | (Pengguna berhenti berbicara) | - | Gunakan konten transkrip dari event conversation.item.input_audio_transcription.completed sebagai hasil akhir. |
|
conversation.item.input_audio_transcription.completed
Event ini mengirimkan hasil pengenalan akhir ke klien dan menandai akhir dari sebuah item percakapan.
Parameter | Type | Description | type | string | Jenis event. Nilainya tetap conversation.item.input_audio_transcription.completed. | event_id | string | ID event. | item_id | string | ID item percakapan terkait. | content_index | integer | Indeks bagian konten yang berisi audio. | language | string | Bahasa audio yang dikenali. Jika bahasa ditentukan dalam parameter permintaan language, nilai ini akan sesuai dengan bahasa yang ditentukan. Nilai yang mungkin: | emotion | string | Emosi yang terdeteksi dalam audio. Emosi berikut didukung: surprised
neutral
happy
sad
disgusted
angry
fearful
| transcript | string | Hasil transkripsi. |
| {
"event_id": "event_B3GGEjPT2sLzjBM74W6kB",
"type": "conversation.item.input_audio_transcription.completed",
"item_id": "item_B3GGC53jGOuIFcjZkmEQ9",
"content_index": 0,
"language": "en",
"emotion": "neutral",
"transcript": "What's the weather like today?"
}
|
conversation.item.input_audio_transcription.failed
Server mengirim event ini jika pengenalan gagal untuk audio input. Event ini ditangani secara terpisah dari event error lainnya untuk membantu klien mengidentifikasi item spesifik yang gagal.
Parameter | Type | Description | type | string | Jenis event. Nilainya tetap conversation.item.input_audio_transcription.failed. | item_id | string | ID item percakapan terkait. | content_index | integer | Indeks bagian konten yang berisi audio. | error.code | string | Kode kesalahan. | error.message | string | Pesan kesalahan. | error.param | string | Parameter yang terkait dengan kesalahan tersebut. |
| {
"type": "conversation.item.input_audio_transcription.failed",
"item_id": "<item_id>",
"content_index": 0,
"error": {
"code": "<code>",
"message": "<message>",
"param": "<param>"
}
}
|
session.finished
Sesi telah selesai dan semua pengenalan audio dalam sesi saat ini telah lengkap.
Event ini hanya dikirim setelah klien mengirimkan event <a baseurl="t3167042_v2_1_0.xdita" data-node="6184310" data-root="85177" data-tag="xref" href="t3166998.xdita#147ce70052d4z" id="51096614e2809">session.finish</a>. Klien dapat memutuskan koneksi setelah menerima event ini.
Parameter | Type | Description | type | string | Jenis event. Nilainya adalah session.finished. | event_id | string | ID event. |
| {
"event_id": "event_2239",
"type": "session.finished"
}
|