Client events are JSON messages sent over a WebSocket connection to control the Qwen-TTS Realtime API session -- configure voice settings, stream text for synthesis, and signal completion.
For the full API overview, see Real-time speech synthesis - Qwen.
Event summary
| Client event | Server response | Description |
|---|---|---|
session.update | session.updated | Set voice, audio format, interaction mode, and other session parameters |
input_text_buffer.append | -- | Append text to the synthesis buffer |
input_text_buffer.commit | input_text_buffer.committed | Commit buffered text to trigger synthesis |
input_text_buffer.clear | input_text_buffer.cleared | Discard all buffered text |
session.finish | -- | End the session; the server flushes remaining audio and closes the connection |
session.update
Configures the session. Send as the first message after the WebSocket connection is established. If omitted, all parameters use defaults. The server confirms with a session.updated event.
Request body
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id | string | Yes | Unique event identifier generated by the client (UUID recommended). Must be unique within the WebSocket session. |
type | string | Yes | Set to session.update. |
session | object | No | Session configuration. See the following subsections. |
session properties
session properties
voice
Type: string | Required: YesThe system voice used for speech synthesis. See Supported voices.mode
Type: string | Required: No | Default: server_commitThe interaction mode that controls when buffered text is synthesized.| Value | Behavior |
|---|---|
server_commit | The server decides when to synthesize, balancing latency and quality. Recommended for most uses. |
commit | Trigger synthesis manually by sending input_text_buffer.commit. Lowest latency, but you must manage sentence integrity. |
language_type
Type: string | Required: No | Default: AutoThe language of the synthesized audio.Auto-- For unknown or mixed-language text. The model automatically matches pronunciation per segment, but accuracy is not guaranteed.- For single-language text, specifying language significantly improves quality. Supported values:
| Value | Value | Value |
|---|---|---|
Chinese | English | German |
Italian | Portuguese | Spanish |
Japanese | Korean | French |
Russian |
response_format
Type: string | Required: No | Default: pcmThe audio output format.| Value | Notes |
|---|---|
pcm | Default. |
wav | |
mp3 | |
opus | Supports configurable bitrate via the bit_rate parameter. |
sample_rate
Type: integer | Required: No | Default: 24000The sample rate of the audio output, in Hz.Supported values: 8000, 16000, 24000, 48000.speech_rate
Type: float | Required: No | Default: 1.0 | Range: 0.5--2.0The playback speed. Values below 1.0 slow down the audio; values above 1.0 speed it up.volume
Type: integer | Required: No | Default: 50 | Range: 0--100The audio volume.pitch_rate
Type: float | Required: No | Default: 1.0 | Range: 0.5--2.0The pitch of the synthesized audio.bit_rate
Type: integer | Required: No | Default: 128 | Range: 6--510Audio bitrate in kbps. Higher values produce better quality but larger files. Only applies when response_format is opus.input_text_buffer.append
Append text to the synthesis buffer.
- In
server_commitmode, text is appended to the server-side buffer. - In
commitmode, text is appended to the client-side buffer.
Request body
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id | string | Yes | Unique event identifier generated by the client (UUID recommended). Must be unique within the WebSocket session. |
type | string | Yes | Set to input_text_buffer.append. |
text | string | Yes | The text to synthesize. |
input_text_buffer.commit
Commits buffered text and creates a user message item. The server responds with an input_text_buffer.committed event.
Returns an error if the buffer is empty.
Behavior differs by mode:
server_commitmode: All buffered text is synthesized immediately. The server stops caching and processes everything at once.commitmode: Creates user message item from buffered text.
Note: Committing the buffer triggers synthesis only -- it does not generate a model response.
Request body
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id | string | Yes | Unique event identifier generated by the client (UUID recommended). Must be unique within the WebSocket session. |
type | string | Yes | Set to input_text_buffer.commit. |
input_text_buffer.clear
Clears buffer text. The server responds with an input_text_buffer.cleared event.
Request body
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id | string | Yes | Unique event identifier generated by the client (UUID recommended). Must be unique within the WebSocket session. |
type | string | Yes | Set to input_text_buffer.clear. |
session.finish
Signals no more text will be sent. The server returns remaining audio and closes the connection.
Request body
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id | string | Yes | Unique event identifier generated by the client (UUID recommended). Must be unique within the WebSocket session. |
type | string | Yes | Set to session.finish. |