All Products
Search
Document Center

Alibaba Cloud Model Studio:Java SDK

Last Updated:Sep 02, 2026

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:

  1. 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.

  2. 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.

  3. 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:

  • Wilayah Singapura: wss://dashscope-intl.aliyuncs.com/api-ws/v1/realtime

  • Wilayah China (Beijing): wss://dashscope.aliyuncs.com/api-ws/v1/realtime

Konfigurasikan parameter permintaan berikut menggunakan metode berantai atau setter objek OmniRealtimeConfig. Kemudian, lewatkan objek ini sebagai parameter ke antarmuka updateSession.

ParameterTipeDeskripsi

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:

  • Qwen3-Omni-Flash-Realtime: "Cherry"
  • Qwen-Omni-Turbo-Realtime: "Chelsie"

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.

  • true: Respon percakapan.

  • false: Respon formal.

    Namun, performa mungkin kurang optimal jika kontennya sulit dibaca dengan lantang.

  • null: Nilai default. Model secara otomatis memilih antara gaya respon percakapan dan formal.

CatatanAtur smooth_output menggunakan metode parameters dari instance OmniRealtimeConfig:

OmniRealtimeConfig config = OmniRealtimeConfig.builder()
        .modalities(Arrays.asList(OmniRealtimeModality.AUDIO, OmniRealtimeModality.TEXT))
        .voice("Chelsie")
        .enableInputAudioTranscription(true)
        .InputAudioTranscription("gummy-realtime-v1")
        .parameters(new HashMap<String, Object>() {{
            put("smooth_output", true);
        }})
        .build();

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 instructions menggunakan metode parameters dari instance OmniRealtimeConfig:

OmniRealtimeConfig config = OmniRealtimeConfig.builder()
        .modalities(Arrays.asList(OmniRealtimeModality.AUDIO, OmniRealtimeModality.TEXT))
        .voice("Cherry")
        .enableTurnDetection(true)
        .enableInputAudioTranscription(true)
        .InputAudioTranscription("gummy-realtime-v1")
        .parameters(new HashMap<String, Object>() {{
            put("instructions","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.");
        }})
        .build();

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.

  • Semakin dekat nilainya ke -1, semakin besar kemungkinan kebisingan terdeteksi sebagai suara.
  • Semakin dekat nilainya ke 1, semakin kecil kemungkinan kebisingan terdeteksi sebagai suara.

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

public void connect() throws NoApiKeyException, InterruptedException

session.created

Sesi dibuat

session.updated

Konfigurasi sesi diperbarui

Membuat koneksi dengan server.

public void updateSession(OmniRealtimeConfig config)

session.updated

Konfigurasi sesi diperbarui

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.

public void appendAudio(String audioBase64)

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.

  • Jika "turn_detection" diaktifkan, buffer audio digunakan untuk mendeteksi pembicaraan, dan server memutuskan kapan harus mengirimkannya.
  • Jika "turn_detection" dinonaktifkan, klien dapat memilih jumlah audio yang ditempatkan dalam setiap event, hingga 15 MiB. Misalnya, streaming blok data yang lebih kecil dari klien dapat membuat VAD lebih responsif.
public void appendVideo(String videoBase64)

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:

  • Format gambar harus JPG atau JPEG. Resolusi gambar yang direkomendasikan adalah 480p atau 720p, dengan maksimum 1080p.
  • Ukuran satu gambar tidak boleh melebihi 500 KB (sebelum pengkodean Base64).
  • Data gambar harus dikodekan Base64.
  • Kirim gambar ke server dengan frekuensi 1 gambar per detik.
public void clearAppendedAudio()

input_audio_buffer.cleared

Audio yang diterima oleh server dihapus

Menghapus audio di buffer cloud saat ini.

public void commit()

input_audio_buffer.committed

Server menerima audio yang dikirimkan

Mengirimkan audio dan video yang sebelumnya ditambahkan ke buffer cloud menggunakan append. Kesalahan terjadi jika buffer audio input kosong.

  • Jika "turn_detection" diaktifkan, klien tidak perlu mengirimkan event ini. Server secara otomatis mengirimkan buffer audio.
  • Jika "turn_detection" dinonaktifkan, klien harus mengirimkan buffer audio untuk membuat item pesan pengguna.

Catatan ⚠️:

  1. Jika transkripsi audio dikonfigurasikan untuk sesi menggunakan input_audio_transcription, sistem mentranskripsi audio.
  2. Mengirimkan buffer audio input tidak menciptakan respons dari model.
public void createResponse(String instructions, List<OmniRealtimeModality> modalities)

response.created

Server mulai menghasilkan respons

response.output_item.added

Konten output baru tersedia dalam respons

conversation.item.created

Item percakapan dibuat

response.content_part.added

Konten baru ditambahkan ke item pesan asisten

response.audio_transcript.delta

Teks transkripsi yang dihasilkan secara bertahap

response.audio.delta

Audio yang dihasilkan secara bertahap dari model

response.audio_transcript.done

Transkripsi teks selesai

response.audio.done

Pembuatan audio selesai

response.content_part.done

Streaming konten teks atau audio untuk pesan asisten selesai

response.output_item.done

Streaming seluruh item output untuk pesan asisten selesai

response.done

Respons selesai

Menginstruksikan server untuk membuat respons model.

Saat sesi dikonfigurasikan dengan mode "turn_detection" diaktifkan, server secara otomatis membuat respons model.

public void cancelResponse()

Tidak ada

Membatalkan respons yang sedang berlangsung. Jika tidak ada respons untuk dibatalkan, server mengembalikan kesalahan.

public void close()

Tidak ada

Menghentikan tugas dan menutup koneksi.

public String getSessionId()

Tidak ada

Mendapatkan session_id tugas saat ini.

public String getResponseId()

Tidak ada

Mendapatkan response_id dari respons terbaru.

public long getFirstTextDelay()

Tidak ada

Mendapatkan latensi teks paket pertama dari respons terbaru.

public long getFirstAudioDelay()

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

public void onOpen()

Tidak ada

Tidak ada

Metode ini dipanggil segera setelah koneksi dengan server dibuat.

public abstract void onEvent(JsonObject message)

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.

public abstract void onClose(int code, String reason)

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.