Qwen Audio 3.1 ASR Message

WEBSOCKET /v1/realtimeTranscription tuned for voice messages and voice input over a socket, returning each utterance as one complete transcript when the speaker pauses.
At a glance
Pricing
Example request
Parameters
Notes
Connecting
Voice message transcription over a WebSocket at wss://api.empiriolabs.ai/v1/realtime?model=qwen-audio-3-1-asr-message, authenticated with the ordinary Authorization Bearer header.
Sending audio
Stream 16 kHz mono pcm16 audio with input_audio_buffer.append. Voice activity detection decides where each utterance ends, so there is no commit to send.
Session settings
Send session.update right after session.created, before the first audio, with any of these settings: input_audio_transcription.language (or the language query parameter of the connection URL; auto by default), turn_detection.silence_duration_ms (200 to 6000, default 800) and turn_detection.threshold (0.0 to 1.0), and input_audio_noise_reduction (near_field or far_field). keep_dialect keeps Chinese dialect words as spoken. A setting changed while audio is streaming ends the utterance in progress and applies to the audio sent after it.
What comes back
Each utterance arrives whole, as one conversation.item.input_audio_transcription.completed event once the speaker pauses. Set partial_results to also receive it while it is spoken, as conversation.item.input_audio_transcription.delta events that can still change before it settles. For live captions, qwen-audio-3-1-asr-stream always sends them.
Billing
Input and output tokens are priced per 1M, and each completed utterance is billed on its own from the usage the model reports.
Machine-readable schema: GET https://api.empiriolabs.ai/v1/models/qwen-audio-3-1-asr-message.
