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:
-
DashScope SDK versi 1.25.6 atau lebih baru
-
Pemahaman mengenai alur interaksi
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.comke{WorkspaceId}.cn-beijing.maas.aliyuncs.comSingapura: dari
dashscope-intl.aliyuncs.comke{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.
| 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/realtimeSingapura: 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.
| 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.
| 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. |