Topik ini menjelaskan antarmuka utama dan parameter permintaan untuk menggunakan DashScope Java SDK dengan model real-time Qwen-Omni .
Prasyarat
Versi Java SDK Anda harus 2.20.9 atau lebih baru. Sebelum memulai, baca Alur interaksi multimodal real-time.
Memulai
Kunjungi GitHub untuk mengunduh kode contoh, yang menyediakan contoh untuk tiga metode panggilan berikut:
-
Contoh percakapan audio: Menangkap input audio waktu nyata dari mikrofon, mengaktifkan mode VAD (deteksi aktivitas suara otomatis), dan mendukung interupsi suara.
Atur parameter enableTurnDetection ke
true.Gunakan headphone untuk pemutaran audio guna mencegah gema memicu interupsi suara.
-
Contoh percakapan audio dan video: Menangkap input audio dan video waktu nyata dari mikrofon dan kamera, mengaktifkan mode VAD (deteksi aktivitas suara otomatis), dan mendukung interupsi suara.
Atur parameter enableTurnDetection ke
true.Gunakan headphone untuk pemutaran audio guna mencegah gema memicu interupsi suara.
-
Panggilan lokal: Menggunakan audio dan gambar lokal sebagai input dan mengaktifkan mode Manual (kontrol manual atas kecepatan pengiriman).
Atur parameter enableTurnDetection ke
false.
Parameter Permintaan
Konfigurasikan parameter permintaan berikut menggunakan metode berantai atau setter objek OmniRealtimeParam. Kemudian, lewatkan objek ini sebagai parameter ke konstruktor OmniRealtimeConversation.
Parameter | Tipe | Deskripsi |
|---|---|---|
model | String | Nama model real-time Qwen-Omni. Untuk informasi lebih lanjut, lihat Daftar model. |
url | String | URL Titik akhir:
|
Konfigurasikan parameter permintaan berikut menggunakan metode berantai atau setter objek OmniRealtimeConfig. Kemudian, lewatkan objek ini sebagai parameter ke antarmuka updateSession.
| Parameter | Tipe | Deskripsi |
|---|---|---|
modalities | List<OmniRealtimeModality> | Modalitas keluaran model. Atur ke [OmniRealtimeModality.TEXT] untuk output teks saja, atau [OmniRealtimeModality.TEXT, OmniRealtimeModality.AUDIO] untuk output audio dan teks. |
voice | String | Suara audio yang dihasilkan oleh model. Untuk daftar suara yang didukung, lihat Daftar Suara. Suara default:
|
inputAudioFormat | OmniRealtimeAudioFormat | Format audio input pengguna. Saat ini, hanya PCM_16000HZ_MONO_16BIT yang didukung. |
outputAudioFormat | OmniRealtimeAudioFormat | Format audio output model. Saat ini, hanya PCM_24000HZ_MONO_16BIT yang didukung. |
smooth_output | Boolean | Parameter ini hanya didukung oleh seri Qwen3-Omni-Flash-Realtime.
CatatanAtur |
instructions | String | Pesan sistem yang menetapkan tujuan atau peran untuk model. Contoh: "Anda adalah agen layanan pelanggan AI untuk hotel bintang lima. Jawab pertanyaan pelanggan tentang jenis kamar, fasilitas, harga, dan kebijakan pemesanan dengan akurat dan ramah. Selalu merespons secara profesional dan membantu. Jangan memberikan informasi yang tidak diverifikasi atau informasi di luar lingkup layanan hotel." CatatanAtur |
enableInputAudioTranscription | Boolean | Menentukan apakah akan mengaktifkan pengenalan suara untuk input audio. |
InputAudioTranscription | String | Model pengenalan suara yang digunakan untuk mentranskripsi input audio. Saat ini, hanya "gummy-realtime-v1" yang didukung. |
enableTurnDetection | Boolean | Menentukan apakah akan mengaktifkan deteksi aktivitas suara (VAD). Jika dinonaktifkan, pengguna harus secara manual mengirimkan audio untuk membuat respons omni. |
turnDetectionType | String | Jenis VAD sisi server. Ini tetap menjadi "server_vad". |
turnDetectionThreshold | Float | Ambang batas deteksi VAD. Tingkatkan nilai ini di lingkungan bising dan turunkan di lingkungan tenang.
Nilai default: 0.2. Rentang nilai: [-1.0, 1.0]. |
turnDetectionSilenceDurationMs | Integer | Durasi keheningan yang menandakan akhir pembicaraan. Model memicu respons setelah durasi ini terlampaui. Nilai default: 800. Rentang nilai: [200, 6000]. |
Antarmuka Utama
Kelas OmniRealtimeConversation
Impor kelas OmniRealtimeConversation menggunakan import com.alibaba.dashscope.audio.omni.OmniRealtimeConversation;.
Tanda tangan Metode | Event respons server (dikirim melalui callback) | Deskripsi |
|---|---|---|
|
| Membuat koneksi dengan server. |
|
| Memperbarui konfigurasi default untuk sesi saat ini. Untuk konfigurasi parameter, lihat bagian Parameter Permintaan. Saat Anda membuat koneksi, server segera mengembalikan konfigurasi input dan output default untuk sesi. Untuk memperbarui konfigurasi sesi default, kami sarankan Anda memanggil antarmuka ini segera setelah koneksi dibuat. Setelah menerima event session.update, server melakukan verifikasi parameter. Jika parameter tidak valid, kesalahan dikembalikan. Jika tidak, konfigurasi sesi sisi server diperbarui. |
| Tidak ada | Menambahkan segmen data audio yang dikodekan Base64 ke buffer audio cloud input. Buffer audio adalah penyimpanan sementara di mana Anda dapat menulis data dan mengirimkannya nanti.
|
| Tidak ada | Menambahkan data gambar yang dikodekan Base64 ke buffer video cloud. Data gambar bisa berupa gambar lokal atau gambar yang ditangkap secara real-time dari aliran video. Berikut adalah batasan untuk input gambar:
|
|
| Menghapus audio di buffer cloud saat ini. |
|
| Mengirimkan audio dan video yang sebelumnya ditambahkan ke buffer cloud menggunakan append. Kesalahan terjadi jika buffer audio input kosong.
Catatan ⚠️:
|
|
response.audio_transcript.delta
response.audio_transcript.done
| Menginstruksikan server untuk membuat respons model. Saat sesi dikonfigurasikan dengan mode "turn_detection" diaktifkan, server secara otomatis membuat respons model. |
| Tidak ada | Membatalkan respons yang sedang berlangsung. Jika tidak ada respons untuk dibatalkan, server mengembalikan kesalahan. |
| Tidak ada | Menghentikan tugas dan menutup koneksi. |
| Tidak ada | Mendapatkan session_id tugas saat ini. |
| Tidak ada | Mendapatkan response_id dari respons terbaru. |
| Tidak ada | Mendapatkan latensi teks paket pertama dari respons terbaru. |
| Tidak ada | Mendapatkan latensi audio paket pertama dari respons terbaru. |
Antarmuka Callback (OmniRealtimeCallback)
Server menggunakan callback untuk mengembalikan event dan data ke klien. Implementasikan metode callback untuk memproses event dan data yang dikembalikan oleh server.
Impor antarmuka menggunakan import com.alibaba.dashscope.audio.omni.OmniRealtimeCallback;.
Metode | Parameter | Nilai Kembali | Deskripsi |
|---|---|---|---|
| Tidak ada | Tidak ada | Metode ini dipanggil segera setelah koneksi dengan server dibuat. |
| message: Event respons server. | Tidak ada | Termasuk respons terhadap panggilan antarmuka serta teks dan audio yang dihasilkan oleh model. Untuk informasi lebih lanjut, lihat Event Server. |
| code: Kode status untuk menutup WebSocket. reason: Alasan menutup WebSocket. | Tidak ada | Metode ini dipanggil setelah koneksi ke layanan ditutup. |
FAQ
P: Bagaimana cara menyelaraskan input audio dan gambar?
A: Model omni-realtime menggunakan aliran audio sebagai garis waktu. Gambar dikaitkan dengan aliran audio berdasarkan waktu pengirimannya. Anda dapat menambahkan gambar pada titik mana pun di garis waktu audio.
Dalam skenario interaksi real-time, Anda dapat mengaktifkan atau menonaktifkan input video kapan saja.
P: Berapa frekuensi yang direkomendasikan untuk memasukkan gambar dan audio?
A: Dalam skenario interaksi real-time, Anda dapat mengirim gambar dengan laju frame 1 fps atau 2 fps, dan mengirim audio dalam paket 100 ms.
P: Apa perbedaan antara dua mode saklar turn_detection?
J: Saat ini, hanya mode server_vad yang didukung saat turn_detection diaktifkan.
-
Jika turn_detection diaktifkan:
- Keadaan input: VAD berbasis cloud menganalisis input audio untuk menentukan akhir kalimat yang diucapkan. Layanan kemudian secara otomatis memanggil model omni untuk inferensi dan mengirimkan respons teks dan audio.
- Keadaan respons: Dalam keadaan ini, input audio dan video dapat terus berlanjut tanpa gangguan selama fase respons model. Setelah respons selesai, keadaan kembali ke keadaan input untuk menunggu masukan suara lebih lanjut.
- Interrupsi: Jika pengguna mulai berbicara selama respons model, interupsi dipicu. Layanan segera menghentikan respons saat ini dan beralih ke keadaan input.
-
Jika turn_detection dinonaktifkan:
- Anda harus menentukan akhir putaran input audio dan video dan secara manual memicu inferensi model omni menggunakan commit dan create_response untuk mendapatkan respons.
- Anda harus menghentikan pengiriman input audio dan video saat model menghasilkan respons. Anda dapat melanjutkan pengiriman input untuk giliran berikutnya hanya setelah respons selesai.
- Anda harus menggunakan metode response_cancel untuk menginterupsi respons model.
Catatan bahwa bahkan saat turn_detection diaktifkan, Anda masih dapat secara manual memicu respons menggunakan commit dan create_response, dan menginterupsi menggunakan response_cancel.
P: Mengapa saya perlu memilih model lain untuk input_audio_transcription?
A: Model omni adalah model multimodal besar end-to-end. Output teksnya adalah respons terhadap input, bukan transkripsi langsung dari input audio. Oleh karena itu, Anda harus menggunakan model Pengenalan Suara Otomatis (ASR) terpisah untuk transkripsi.