Qwen-Audio-3.0-ASR-Flash-Streaming/Fun-ASR-Realtime real-time speech recognition client events

更新时间:
复制 MD 格式

This topic describes the client events that the client sends to the server over WebSocket in the Qwen-Audio-3.0-ASR-Flash-Streaming/Fun-ASR-Realtime real-time speech recognition service, including the data structures and field definitions for run-task (start a task), continue-task (update the context), and finish-task (end a task).

User guide: For model descriptions and selection guidance, see Speech-to-text.

Event interaction flow: For the event interaction sequence, see WebSocket API.

run-task

Description: Starts a speech recognition task and sets parameters such as the model, audio format, and sample rate.

When to send: Send immediately after the WebSocket connection is established.

Response event: You can send audio only after the server returns the task-started event.

header object (Required)

Properties

action string (Required)

The command type. Set to run-task.

task_id string (Required)

A client-generated task ID (UUID format) that links subsequent events to this task.

streaming string (Required)

Set to duplex.

Basic request

{
    "header": {
        "action": "run-task",
        "task_id": "2bf83b9a-baeb-4fda-8d9a-xxxxxxxxxxxx",
        "streaming": "duplex"
    },
    "payload": {
        "task_group": "audio",
        "task": "asr",
        "function": "recognition",
        "model": "qwen-audio-3.0-asr-flash-streaming",
        "parameters": {
            "format": "pcm",
            "sample_rate": 16000
        },
        "input": {}
    }
}

With context

{
    "header": {
        "action": "run-task",
        "task_id": "2bf83b9a-baeb-4fda-8d9a-xxxxxxxxxxxx",
        "streaming": "duplex"
    },
    "payload": {
        "task_group": "audio",
        "task": "asr",
        "function": "recognition",
        "model": "qwen-audio-3.0-asr-flash-streaming",
        "parameters": {
            "format": "pcm",
            "sample_rate": 16000
        },
        "input": {
            "context": [
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "input_text",
                            "text": "Hello there"
                        }
                    ]
                },
                {
                    "role": "assistant",
                    "content": [
                        {
                            "type": "text",
                            "text": "Hello, I am Qwen. How can I help you?"
                        }
                    ]
                }
            ]
        }
    }
}

Instant hot words

{
    "header": {
        "action": "run-task",
        "task_id": "2bf83b9a-baeb-4fda-8d9a-xxxxxxxxxxxx",
        "streaming": "duplex"
    },
    "payload": {
        "task_group": "audio",
        "task": "asr",
        "function": "recognition",
        "model": "qwen-audio-3.0-asr-flash-streaming",
        "parameters": {
            "format": "pcm",
            "sample_rate": 16000,
            "vocabulary": {"John Smith": 5, "Jane Doe": 5}
        },
        "input": {}
    }
}

payload object (Required)

Properties

task_group string (Required)

The task group. Set to audio.

task string (Required)

The task type. Set to asr.

function string (Required)

The function type. Set to recognition.

model string (Required)

The model name. The Qwen-Audio-3.0-ASR-Flash-Streaming and Fun-ASR-Realtime model series are supported. For details, see Supported models and regions.

input object (Required)

The input object. Pass {} when no context is provided.

Important

Only the qwen-audio-3.0-asr-flash-streaming, fun-asr-realtime, and fun-asr-realtime-2025-11-07 models support context.

Properties

context array(object) (Optional)

The conversation context, which improves recognition accuracy for domain-specific vocabulary. For usage details, see Context enhancement.

Important

Limits: You can provide at most 5 context messages of each type (input_text and text). If you exceed this limit, only the 5 most recent messages are kept. The total text length per turn (the combined length of the text fields of the user and assistant messages) cannot exceed 400 characters (counted by character, where each character counts as 1). Text beyond this limit is truncated from the end.

Important

When you provide context, the messages in context must follow a specific order. Context messages must be arranged by conversation turn, and within each turn the user message (of type input_text) must come before its corresponding assistant message (of type text).

Properties

role string (Required)

The message role. Valid values:

  • user: The recognition results from previous turns of user speech, or a domain-specific word list.

  • assistant: The responses from the large language model in previous turns.

content array(object) (Required)

The list of message contents.

Properties

type string (Required)

The content type. Valid values:

  • input_text: The recognition results from previous turns of user speech, or a domain-specific word list (used when role is user). You must also provide the text field.

  • text: The responses from the large language model in previous turns (used when role is assistant). You must also provide the text field.

text string (Required)

The text content. When type is input_text, enter the recognition results from previous turns of user speech or a domain-specific word list. When type is text, enter the responses from the large language model in previous turns.

parameters object (Required)

The speech recognition parameters.

Properties

format string (Required)

The audio format.

Valid values:

  • pcm

  • wav

  • mp3

  • opus

  • speex

  • aac

  • amr

Important

opus/speex: Must use Ogg encapsulation.

wav: Must use PCM encoding.

amr: Only the AMR-NB type is supported.

sample_rate integer (Required)

The sample rate, in Hz.

Valid values: 8 kHz models support only 8000 Hz; other models support any sample rate.

vocabulary_id string (Optional)

The ID of a precompiled hot word list.

Generate this ID in advance by calling the create hot word list API. Pass the ID during recognition to use the hot words in the list.

Suitable for scenarios where the vocabulary is known and relatively stable, and where you need to reuse the same word list across requests.

For usage details, see Precompiled hotwords.

vocabulary object (Optional)

Instant hot words.

Passed as key-value pairs, where the key is the hot word text (string) and the value is the hot word weight (integer). No hot word list needs to be created in advance. The weight ranges from [1, 5] or is set to 50: a value in [1, 5] makes the model more likely to output the word as the value increases; a value of 50 designates a super hot word, which greatly improves recall, but the number of super hot words cannot exceed 50.

Suitable for temporary, session-level hot word optimization.

When configured together with precompiled hot words, only the instant hot words take effect. For usage details, see Instant hotwords.

Important

Only qwen-audio-3.0-asr-flash-streaming supports instant hot words.

language_hints array[string] (Optional)

The language of the audio to recognize. There is no default value; if not set, the model detects the language automatically.

For the Qwen-Audio-3.0-ASR-Flash-Streaming model series, you can set up to 4 values; if you set more than 4, only the first 4 take effect. For the Fun-ASR-Realtime model series, you can set only 1 value; if you set multiple values, only the first one takes effect.

Click to view the supported language codes

  • qwen-audio-3.0-asr-flash-streaming, fun-asr-realtime, fun-asr-realtime-2025-11-07:

    • zh: Chinese

    • en: English

    • ja: Japanese

    • ko: Korean

    • vi: Vietnamese

    • th: Thai

    • id: Indonesian

    • ms: Malay

    • tl: Filipino

    • hi: Hindi

    • ar: Arabic

    • fr: French

    • de: German

    • es: Spanish

    • pt: Portuguese

    • ru: Russian

    • it: Italian

    • nl: Dutch

    • sv: Swedish

    • da: Danish

    • fi: Finnish

    • no: Norwegian

    • el: Greek

    • pl: Polish

    • cs: Czech

    • hu: Hungarian

    • ro: Romanian

    • bg: Bulgarian

    • hr: Croatian

    • sk: Slovak

  • fun-asr-realtime-2026-02-28:

    • zh: Chinese

    • en: English

    • ja: Japanese

  • fun-asr-realtime-2025-09-15:

    • zh: Chinese

    • en: English

  • fun-asr-flash-8k-realtime, fun-asr-flash-8k-realtime-2026-01-28:

    • zh: Chinese

semantic_punctuation_enabled boolean (Optional)

Whether to enable semantic segmentation.

Default value: false.

  • true: Enables semantic segmentation and disables VAD segmentation.

  • false (default): Enables VAD segmentation and disables semantic segmentation.

Semantic segmentation is more accurate and is better suited to meeting transcription scenarios. VAD (Voice Activity Detection) segmentation has lower latency and is better suited to interactive scenarios.

max_sentence_silence integer (Optional)

The VAD silence threshold for segmentation, in ms. When the silence after a segment of speech exceeds this threshold, the system determines that the sentence has ended. When semantic_punctuation_enabled is set to true, this parameter is not used as the criterion for returning sentence_end, but setting it too low may affect recognition performance.

Default value: 1300.

Valid values: [200, 6000].

multi_threshold_mode_enabled boolean (Optional)

Important

Takes effect only when semantic_punctuation_enabled is false.

Whether to enable multi-threshold mode. When enabled, this prevents VAD segments from becoming too long.

Default value: false.

heartbeat boolean (Optional)

Whether to enable heartbeat packets.

Default value: false.

  • true: Keeps the connection to the server alive even when silent audio is sent continuously.

  • false (default): The connection is disconnected due to timeout after 60 seconds, even if silent audio is sent continuously.

Silent audio refers to content in an audio file or data stream that contains no sound signal. You can generate silent audio in several ways, such as using audio editing software like Audacity or Adobe Audition, or using a command-line tool like FFmpeg.

speech_noise_threshold float (Optional)

The threshold for distinguishing speech from noise, used to adjust the sensitivity of Voice Activity Detection (VAD).

Valid values: [-1.0, 1.0].

Value descriptions:

  • The closer the value is to -1: The noise threshold decreases, so noise is more likely to be recognized as speech, which may cause more noise to be transcribed.

  • The closer the value is to +1: The noise threshold increases, so speech is more likely to be misjudged as noise, which may cause some speech to be filtered out.

This is an advanced configuration parameter. Adjusting it can significantly affect recognition results. Recommendations:

  • Thoroughly test and verify the results before adjusting.

  • Adjust in small increments based on the actual audio environment (a step of 0.1 is recommended).

special_word_filter string (Optional)

Specifies the sensitive words to process during speech recognition, and supports setting different processing methods for different sensitive words. For details, see Sensitive word filtering.

continue-task

Description: Updates the conversation context during task execution to improve recognition.

When to send: Send during task execution when you need to update the conversation context.

Important

Only the qwen-audio-3.0-asr-flash-streaming, fun-asr-realtime, and fun-asr-realtime-2025-11-07 models support this event.

header object (Required)

Properties

action string (Required)

The command type. Set to continue-task.

task_id string (Required)

A client-generated task ID (UUID format) that must match the task_id in the run-task event.

streaming string (Required)

Set to duplex.

{
    "header": {
        "action": "continue-task",
        "task_id": "2bf83b9a-baeb-4fda-8d9a-xxxxxxxxxxxx",
        "streaming": "duplex"
    },
    "payload": {
        "input": {
            "context": [
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "input_text",
                            "text": "Hello there"
                        }
                    ]
                },
                {
                    "role": "assistant",
                    "content": [
                        {
                            "type": "text",
                            "text": "Hello, I am Qwen. How can I help you?"
                        }
                    ]
                }
            ]
        }
    }
}

payload object (Required)

Properties

input object (Required)

The input object.

Properties

**context**` _array(object)_`__ (Optional) The conversation context, which improves recognition accuracy for domain-specific vocabulary. For usage details, see [Quick start](t3275015.xdita#).

Important

Limits: You can provide at most 5 context messages of each type (input_text and text). If you exceed this limit, only the 5 most recent messages are kept. The total text length per turn (the combined length of the text fields of the user and assistant messages) cannot exceed 400 characters (counted by character, where each character counts as 1). Text beyond this limit is truncated from the end.

Important

When you provide context, the messages in context must follow a specific order. Context messages must be arranged by conversation turn, and within each turn the user message (of type input_text) must come before its corresponding assistant message (of type text).

**Properties** **role**` _string_` __**(Required)** The message role. Valid values:

user: The recognition results from previous turns of user speech, or a domain-specific word list.

assistant: The responses from the large language model in previous turns.

**content**` _array(object)_`__**(Required)** The list of message contents. **Properties** **type**` _string_` __**(Required)** The content type. Valid values:

input_text: The recognition results from previous turns of user speech, or a domain-specific word list (used when role is user). You must also provide the text field.

text: The responses from the large language model in previous turns (used when role is assistant). You must also provide the text field.

**text**` _string_` __**(Required)** The text content. When `type` is `input_text`, enter the recognition results from previous turns of user speech or a domain-specific word list. When `type` is `text`, enter the responses from the large language model in previous turns.

finish-task

Description: Notifies the server that all audio has been sent and requests to end the task.

When to send: Send after all audio data has been sent.

Response event: The server returns the task-finished event.

header object (Required)

Properties

action string (Required)

The command type. Set to finish-task.

task_id string (Required)

A client-generated task ID (UUID format) that must match the task_id in the run-task event.

streaming string (Required)

Set to duplex.

{
    "header": {
        "action": "finish-task",
        "task_id": "2bf83b9a-baeb-4fda-8d9a-xxxxxxxxxxxx",
        "streaming": "duplex"
    },
    "payload": {
        "input": {}
    }
}

payload object (Required)

Properties

input object (Required)

Set to {}.