All Products
Search
Document Center

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

Last Updated:Aug 26, 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:

PentingAlibaba 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
ParameterTipeWajibDeskripsi
modelstrYaModel yang akan digunakan.
callbackOmniRealtimeCallbackYaObjek callback yang menangani event dari sisi server.
urlstrYaTitik 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
)
ParameterTipeWajibDeskripsi
output_modalitiesList[MultiModality]YaModalitas output. Tetap diatur sebagai [MultiModality.TEXT].
enable_turn_detectionboolTidakMengaktifkan Voice Activity Detection (VAD) di sisi server. Nilai default: True. Jika diatur ke False, panggil commit() secara manual untuk memicu pengenalan.
turn_detection_typestrTidakJenis VAD di sisi server. Tetap diatur sebagai server_vad.
turn_detection_thresholdfloatTidakAmbang 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_msintTidakDurasi 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_paramsTranscriptionParamsTidakKonfigurasi 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"
)
ParameterTipeWajibDeskripsi
languagestrTidakBahasa 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_rateintTidakLaju 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_formatstrTidakFormat audio. Nilai default: pcm. Didukung: pcm, opus.
corpus_textstrTidakTeks 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
MetodeEvent respons serverDeskripsi
connect()session.created, session.updatedMembuka koneksi WebSocket ke server.
update_session(...)session.updatedMengonfigurasi sesi. Panggil setelah connect(). Jika tidak dipanggil, nilai default akan diterapkan. Lihat Konfigurasi sesi untuk daftar parameter.
append_audio(audio_b64: str)NoneMengirimkan 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.committedMelakukan commit buffer audio untuk pengenalan. Mengembalikan error jika buffer kosong. Dinonaktifkan ketika enable_turn_detection=True.
end_session(timeout: int = 20)session.finishedMengakhiri 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()NoneMenghentikan tugas dan menutup koneksi.
get_session_id()NoneMengembalikan ID sesi saat ini.
get_last_response_id()NoneMengembalikan ID respons terbaru.

Antarmuka OmniRealtimeCallback

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

from dashscope.audio.qwen_omni import OmniRealtimeCallback
MetodeParameterDeskripsi
on_open()NoneDipanggil ketika koneksi WebSocket berhasil dibuat.
on_event(message: dict)message: sebuah event serverDipanggil ketika menerima event dari server.
on_close(close_status_code, close_msg)close_status_code: kode status; close_msg: pesan logDipanggil ketika koneksi WebSocket ditutup.