Topik ini menjelaskan antarmuka utama dan parameter permintaan untuk memanggil Qwen-Omni-Realtime menggunakan DashScope Python SDK.
Prasyarat
Versi SDK Anda harus 1.23.9 atau yang lebih baru. Sebelum memulai, tinjau Alur interaksi multimodal waktu nyata.
Memulai
Kunjungi GitHub untuk mengunduh kode contoh. Kami menyediakan kode contoh untuk tiga metode pemanggilan:
-
Contoh percakapan audio: Menangkap input audio waktu nyata dari mikrofon, mengaktifkan mode Deteksi Aktivitas Suara (VAD), dan mendukung interupsi suara.
enable_turn_detectiondiatur menjadi True.Gunakan headphone untuk pemutaran audio agar mencegah gema yang memicu interupsi suara.
-
Contoh percakapan audio dan video: Menangkap input audio dan video waktu nyata dari mikrofon dan Kamera, mengaktifkan mode VAD, dan mendukung interupsi suara.
enable_turn_detectiondiatur menjadi True.Gunakan headphone untuk pemutaran audio agar mencegah gema yang memicu interupsi suara.
-
Pemanggilan lokal: Menggunakan audio dan gambar lokal sebagai input dan mengaktifkan mode Manual, yang memungkinkan Anda mengontrol kecepatan pengiriman secara manual.
enable_turn_detectiondiatur menjadi False.
Parameter permintaan
Anda dapat menyetel parameter permintaan berikut menggunakan metode konstruktor (init) dari kelas OmniRealtimeConversation.
Parameter | Tipe | Deskripsi |
|---|---|---|
model | str | Nama model Qwen-Omni. Untuk informasi lebih lanjut, lihat Daftar Model. |
url | str | Alamat panggilan:
|
Anda dapat mengonfigurasi parameter permintaan berikut menggunakan antarmuka update_session.
| Parameter | Tipe | Deskripsi |
|---|---|---|
output_modalities | list[MultiModality] | Modalitas output model. Setel ke [MultiModality.TEXT] untuk menghasilkan hanya teks, atau [MultiModality.TEXT, MultiModality.AUDIO] untuk menghasilkan baik audio maupun teks. |
voice | str | Suara untuk audio yang dihasilkan oleh model. Untuk daftar suara yang didukung, lihat Daftar Suara. Suara default:
|
input_audio_format | AudioFormat | Format audio input pengguna. Saat ini, hanya PCM_16000HZ_MONO_16BIT yang didukung. |
output_audio_format | AudioFormat | Format audio output model. Saat ini, hanya PCM_24000HZ_MONO_16BIT yang didukung. |
smooth_output | bool | Parameter ini hanya didukung oleh seri Qwen3-Omni-Flash-Realtime.
|
instructions | str | Pesan sistem yang menetapkan tujuan atau peran model. Sebagai contoh: Anda adalah agen AI untuk hotel bintang lima. Jawab pertanyaan pelanggan tentang jenis kamar, fasilitas, harga, dan kebijakan pemesanan. Bersikaplah akurat dan ramah. Selalu tanggapi dengan sikap profesional dan membantu. Jangan memberikan informasi yang tidak diverifikasi atau informasi di luar cakupan layanan hotel. |
enable_input_audio_transcription | bool | Menentukan apakah akan mengaktifkan pengenalan suara untuk input audio. |
input_audio_transcription_model | str | Model pengenalan suara yang digunakan untuk mentranskripsi input audio. Saat ini, hanya "gummy-realtime-v1" yang didukung. |
turn_detection_type | str | Jenis VAD sisi server. Ini tetap pada "server_vad". |
turn_detection_threshold | float | Ambang batas deteksi VAD. Tingkatkan nilai ini di lingkungan bising dan turunkan di lingkungan tenang.
Nilai default: 0,2. Nilai valid: [-1,0, 1,0]. |
turn_detection_silence_duration_ms | int | Durasi keheningan yang menandakan akhir pembicaraan. Jika durasi ini terlampaui, model memicu respons. Nilai default: 800. Nilai valid: [200, 6000]. |
Antarmuka utama
Kelas OmniRealtimeConversation
Anda dapat mengimpor kelas OmniRealtimeConversation menggunakan pernyataan from dashscope.audio.qwen_omni import OmniRealtimeConversation.
Signature Metode | Event respons server (dikirim melalui callback) | Deskripsi |
|---|---|---|
|
| Membuat koneksi dengan server. |
|
| Memperbarui konfigurasi default untuk interaksi sesi saat ini. Untuk konfigurasi parameter, lihat bagian "Parameter permintaan". Setelah Anda membuat koneksi, server segera mengembalikan konfigurasi input dan output default untuk sesi. Untuk memperbarui konfigurasi sesi default, panggil antarmuka ini segera setelah koneksi dibuat. Setelah server menerima event session.update, ia melakukan verifikasi parameter. Jika parameter tidak valid, kesalahan dikembalikan. Jika tidak, konfigurasi sesi di sisi server diperbarui. |
| None | Menambahkan segmen data audio yang dikodekan Base64 ke buffer audio cloud input. Buffer audio adalah penyimpanan sementara yang dapat Anda tulis dan commit nanti.
|
| None | 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 dari buffer cloud saat ini. |
|
| Mengcommit audio dan video yang sebelumnya ditambahkan ke buffer cloud menggunakan append. Terjadi kesalahan jika buffer audio input kosong.
Catatan ⚠️:
|
|
response.audio_transcript.delta
response.audio_transcript.done
| Menginstruksikan server untuk membuat respons model. Ketika sesi dikonfigurasikan dengan mode "turn_detection" diaktifkan, server secara otomatis membuat respons model. |
| None | Membatalkan respons yang sedang berlangsung. Jika tidak ada respons untuk dibatalkan, server merespons dengan kesalahan. |
| None | Mengakhiri tugas dan menutup koneksi. |
| None | Mendapatkan session_id dari tugas saat ini. |
| None | Mendapatkan response_id dari respons terakhir. |
| None | Mendapatkan latensi teks paket pertama dari respons terakhir. |
| None | Mendapatkan latensi audio paket pertama dari respons terakhir. |
OmniRealtimeCallback
Server menggunakan callback untuk mengembalikan event respons dan data ke klien. Anda harus mengimplementasikan metode callback untuk menangani informasi atau data yang dikembalikan oleh server.
Impor antarmuka menggunakan pernyataan from dashscope.audio.qwen_omni import OmniRealtimeCallback.
Metode | Parameter | Nilai kembali | Deskripsi |
|---|---|---|---|
| None | None | Metode ini dipanggil segera setelah koneksi dengan server dibuat. |
| message: Event respons server. | None | Termasuk respons terhadap panggilan antarmuka dan teks serta audio yang dihasilkan oleh model. Untuk informasi lebih lanjut, lihat Event server |
| close_status_code: Kode status untuk menutup WebSocket. close_msg: Pesan penutupan untuk WebSocket. | None | Metode ini dipanggil setelah layanan menutup koneksi. |
FAQ
Q: Bagaimana cara menyelaraskan input audio dan gambar?
Qwen-Omni-Realtime menggunakan audio sebagai garis waktu untuk inputnya. Gambar disisipkan ke dalam aliran audio berdasarkan waktu pengirimannya. Anda dapat menyisipkan gambar pada titik mana pun di garis waktu audio.
Dalam skenario interaksi waktu nyata, Anda dapat mengaktifkan atau menonaktifkan input video kapan saja.
Q: Berapa frekuensi yang direkomendasikan untuk memasukkan gambar dan audio?
Dalam skenario interaksi waktu nyata, Anda dapat mengirim gambar pada laju frame 1 fps atau 2 fps dan audio dalam paket 100 ms.
Q: Apa perbedaan antara dua mode saklar turn_detection?
Saat ini, hanya mode server_vad yang didukung ketika turn_detection diaktifkan:
-
Jika "turn_detection" diaktifkan:
- Keadaan input: VAD berbasis cloud menentukan akhir kalimat berdasarkan input audio. Kemudian secara otomatis memanggil model Qwen-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.
- 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 giliran input audio dan video sendiri. Kemudian, Anda harus secara manual memicu inferensi model Qwen-Omni untuk mendapatkan respons menggunakan commit dan create_response.
- Selama keadaan respons model, Anda harus menghentikan input audio dan video. Anda dapat melanjutkan input untuk giliran berikutnya hanya setelah model selesai merespons.
- Anda harus menggunakan antarmuka cancel_response untuk menginterupsi respons model.
Catatan bahwa ketika "turn_detection" diaktifkan, Anda masih dapat secara aktif memicu respons menggunakan commit dan create_response, dan secara aktif menginterupsi menggunakan cancel_response.
Q: Mengapa memilih model lain untuk input_audio_transcription?
Qwen-Omni-Realtime adalah model multimodal ujung-ke-ujung. Karena output teksnya adalah respons terhadap input, ia tidak langsung menghasilkan transkripsi dari input audio. Anda perlu mengintegrasikan model Pengenalan Suara Otomatis (ASR) lain untuk transkripsi.