All Products
Search
Document Center

Alibaba Cloud Model Studio:Qwen-ASR-Realtime Python SDK - Referensi API

Last Updated:Jul 03, 2026

Kirimkan audio secara streaming ke Qwen-ASR-Realtime melalui WebSocket dan terima hasil transkripsi real-time menggunakan DashScope Python SDK.

Untuk ikhtisar model yang didukung, fitur, dan contoh kode lengkap, lihat Real-time speech recognition.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Penting

Alibaba Cloud Model Studio telah merilis domain khusus ruang kerja untuk wilayah Tiongkok (Beijing) dan Singapura. Domain khusus baru ini menawarkan performa lebih unggul dan stabilitas lebih tinggi untuk permintaan inferensi. Kami merekomendasikan migrasi ke domain baru berikut:

  • Tiongkok (Beijing): dari dashscope.aliyuncs.com ke {WorkspaceId}.cn-beijing.maas.aliyuncs.com

  • Singapura: dari dashscope-intl.aliyuncs.com ke {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com

Ganti {WorkspaceId} dengan Workspace ID Anda yang sebenarnya. Domain lama tetap berfungsi sepenuhnya.

Parameter permintaan

Konstruktor OmniRealtimeConversation

Buat instans OmniRealtimeConversation dengan parameter berikut.

Klik untuk melihat kode contoh

from dashscope.audio.qwen_omni import OmniRealtimeConversation, OmniRealtimeCallback

class MyCallback(OmniRealtimeCallback):
    """Callback untuk pengenalan real-time"""
    def __init__(self, conversation):
        self.conversation = conversation
        self.handlers = {
            'session.created': self._handle_session_created,
            'conversation.item.input_audio_transcription.completed': self._handle_final_text,
            'conversation.item.input_audio_transcription.text': self._handle_stash_text,
            'input_audio_buffer.speech_started': lambda r: print('======Speech Start======'),
            'input_audio_buffer.speech_stopped': lambda r: print('======Speech Stop======')
        }

    def on_open(self):
        print('Connection opened')

    def on_close(self, code, msg):
        print(f'Connection closed, code: {code}, msg: {msg}')

    def on_event(self, response):
        try:
            handler = self.handlers.get(response['type'])
            if handler:
                handler(response)
        except Exception as e:
            print(f'[Error] {e}')

    def _handle_session_created(self, response):
        print(f"Start session: {response['session']['id']}")

    def _handle_final_text(self, response):
        print(f"Final recognized text: {response['transcript']}")

    def _handle_stash_text(self, response):
        print(f"Got stash result: {response['stash']}")

conversation = OmniRealtimeConversation(
        model='qwen3-asr-flash-realtime',
        # URL berikut digunakan untuk Tiongkok daratan. Untuk wilayah di luar
        # Tiongkok daratan, gunakan
        # wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime.
        url='wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime',
        callback=MyCallback(conversation=None)  # Sementara berikan None dan injeksikan nanti.
    )
# Injeksikan self ke dalam callback.
conversation.callback.conversation = conversation
Parameter Tipe Wajib Deskripsi
model str Ya Model yang akan digunakan.
callback OmniRealtimeCallback Ya Objek callback yang menangani event dari sisi server.
url str Ya Titik akhir WebSocket.
Tiongkok (Beijing): wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime
Singapura: wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime. Ganti {WorkspaceId} dengan Workspace ID Anda yang sebenarnya.














































Konfigurasi sesi

Setelah terhubung, panggil update_session untuk mengonfigurasi parameter sesi.

Klik untuk melihat kode contoh

from dashscope.audio.qwen_omni import TranscriptionParams, MultiModality

transcription_params = TranscriptionParams(
    language='zh',
    sample_rate=16000,
    input_audio_format="pcm"
)

conversation.update_session(
    output_modalities=[MultiModality.TEXT],
    enable_turn_detection=True,
    turn_detection_type="server_vad",
    turn_detection_threshold=0.0,
    turn_detection_silence_duration_ms=400,
    enable_input_audio_transcription=True,
    transcription_params=transcription_params
)
Parameter Tipe Wajib Deskripsi
output_modalities List[MultiModality] Ya Modalitas output. Tetap diatur sebagai [MultiModality.TEXT].
enable_turn_detection bool Tidak Mengaktifkan Voice Activity Detection (VAD) di sisi server. Nilai default: True. Jika diatur ke False, panggil commit() secara manual untuk memicu pengenalan.
turn_detection_type str Tidak Jenis VAD di sisi server. Tetap diatur sebagai server_vad.
turn_detection_threshold float Tidak Ambang batas sensitivitas VAD. Nilai default: 0.2. Direkomendasikan: 0.0. Rentang valid: [-1, 1].
Nilai lebih rendah = sensitivitas lebih tinggi (dapat terpicu oleh kebisingan latar). Nilai lebih tinggi = lebih sedikit pemicuan salah di lingkungan bising.















turn_detection_silence_duration_ms int Tidak Durasi diam (ms) yang menandai akhir pernyataan. Nilai default: 800. Direkomendasikan: 400. Rentang valid: [200, 6000].
Nilai lebih rendah (misalnya 300 ms) = respons lebih cepat tetapi dapat memotong jeda alami. Nilai lebih tinggi (misalnya 1200 ms) = penanganan jeda kalimat panjang lebih baik tetapi latensi lebih tinggi.















transcription_params TranscriptionParams Tidak Konfigurasi pengenalan suara. Lihat TranscriptionParams.

TranscriptionParams

Konfigurasikan pengaturan pengenalan suara menggunakan konstruktor TranscriptionParams.

Klik untuk melihat kode contoh

transcription_params = TranscriptionParams(
    language='zh',
    sample_rate=16000,
    input_audio_format="pcm"
)
Parameter Tipe Wajib Deskripsi
language str Tidak Bahasa sumber audio. Nilai yang didukung:
zh (Tiongkok: Mandarin, Sichuan, Minnan, Wu), yue (Kanton), en (Inggris), ja (Jepang), ko (Korea), de (Jerman), fr (Prancis), es (Spanyol), pt (Portugis), it (Italia), ru (Rusia), ar (Arab), hi (Hindi), id (Indonesia), th (Thailand), tr (Turki), uk (Ukraina), vi (Vietnam), cs (Ceko), da (Denmark), fi (Finlandia), fil (Filipino), is (Islandia), ms (Melayu), no (Norwegia), pl (Polandia), sv (Swedia)















sample_rate int Tidak Laju pengambilan sampel audio dalam Hz. Nilai default: 16000. Didukung: 16000, 8000. Dengan 8000, server melakukan upsampling ke 16.000 Hz sebelum pengenalan, yang dapat menambahkan latensi minor. Gunakan 8000 hanya untuk audio sumber 8 kHz seperti rekaman telepon.
input_audio_format str Tidak Format audio. Nilai default: pcm. Didukung: pcm, opus.
corpus_text str Tidak Teks latar belakang, kosakata entitas, atau informasi referensi lainnya untuk contextual biasing. Maksimal: 10.000 token. Untuk detail selengkapnya, lihat Contextual biasing.

Antarmuka utama

Kelas OmniRealtimeConversation

from dashscope.audio.qwen_omni import OmniRealtimeConversation
Metode Event respons server Deskripsi
connect() session.created, session.updated Membuka koneksi WebSocket ke server.
update_session(...) session.updated Mengonfigurasi sesi. Panggil setelah connect(). Jika tidak dipanggil, nilai default akan diterapkan. Lihat Konfigurasi sesi untuk daftar parameter.
append_audio(audio_b64: str) None Mengirimkan chunk audio yang dikodekan Base64 ke buffer input server. Dengan enable_turn_detection=True, server mendeteksi batas ucapan dan melakukan commit secara otomatis. Dengan enable_turn_detection=False, klien mengontrol waktu commit (maksimal 15 MiB per event). Chunk yang lebih kecil meningkatkan responsivitas VAD.
commit() input_audio_buffer.committed Melakukan commit buffer audio untuk pengenalan. Mengembalikan error jika buffer kosong. Dinonaktifkan ketika enable_turn_detection=True.
end_session(timeout: int = 20) session.finished Mengakhiri sesi setelah server menyelesaikan pengenalan akhir. Dalam mode VAD (default), panggil setelah mengirimkan semua audio. Dalam mode Manual, panggil setelah commit(). Varian asinkron: end_session_async().
close() None Menghentikan tugas dan menutup koneksi.
get_session_id() None Mengembalikan ID sesi saat ini.
get_last_response_id() None Mengembalikan ID respons terbaru.

Antarmuka OmniRealtimeCallback

Buat subclass dari OmniRealtimeCallback dan implementasikan metodenya untuk menangani event dari server.

from dashscope.audio.qwen_omni import OmniRealtimeCallback
Metode Parameter Deskripsi
on_open() None Dipanggil ketika koneksi WebSocket berhasil dibuat.
on_event(message: dict) message: sebuah event server Dipanggil ketika menerima event dari server.
on_close(close_status_code, close_msg) close_status_code: kode status; close_msg: pesan log Dipanggil ketika koneksi WebSocket ditutup.