实时语音识别(Qwen-ASR-Realtime)Python SDK

本文档介绍如何使用 DashScope Python SDK 调用实时语音识别(Qwen-ASR-Realtime)模型。

用户指南:模型介绍、功能特性和示例代码请参见实时语音识别-通义千问

请求参数

  • 以下参数通过OmniRealtimeConversation的构造方法设置。

    参数

    类型

    是否必须

    说明

    model

    str

    指定要使用的模型名称。

    callback

    OmniRealtimeCallback

    用于处理服务端事件的回调对象实例。

  • 以下参数通过OmniRealtimeConversationupdate_session方法设置。

    参数

    类型

    是否必须

    说明

    output_modalities

    List[MultiModality]

    模型输出模态,固定为[MultiModality.TEXT]

    enable_turn_detection

    bool

    是否开启服务端语音活动检测(VAD)。关闭后,需手动调用commit()方法触发识别。

    默认值:True

    取值范围:

    • True:开启

    • False:关闭

    turn_detection_type

    str

    服务端VAD类型,固定为 server_vad

    turn_detection_threshold

    float

    VAD检测阈值。

    默认值:0.2

    取值范围:[-1.0, 1.0]

    较低的阈值会提高 VAD 的灵敏度,可能将背景噪音误判为语音。较高的阈值则降低灵敏度,有助于在嘈杂环境中减少误触发。

    turn_detection_silence_duration_ms

    int

    VAD断句检测阈值(ms)。静音持续时长超过该阈值将被认为是语句结束。

    默认值:800

    取值范围:[200, 6000]

    较低的值(如 300ms)可使模型更快响应,但可能导致在自然停顿处发生不合理的断句。较高的值(如 1200ms)可更好地处理长句内的停顿,但会增加整体响应延迟。

    transcription_params

    TranscriptionParams

    语音识别相关配置。

  • 以下参数通过TranscriptionParams的构造方法设置。

    参数

    类型

    是否必须

    说明

    language

    str

    音频源语言。

    取值范围参见ISO 639-1标准

    sample_rate

    int

    音频采样率(Hz)。支持160008000

    默认值:16000

    设置为 8000 时,服务端会先升采样到16000Hz再进行识别,可能引入微小延迟。建议仅在源音频为8000Hz(如电话线路)时使用。

    input_audio_format

    str

    音频格式。支持pcmopus

    默认值:pcm

    corpus_text

    str

    ASR 语料文本。提供与业务场景强相关的专有词汇(如产品名、人名),可以提升模型对这些词汇的识别准确度。

关键接口

OmniRealtimeConversation

OmniRealtimeConversation通过from dashscope.audio.qwen_omni import OmniRealtimeConversation方法引入。

方法签名

服务端响应事件(通过回调下发)

说明

def connect(self,) -> None

session.created

会话已创建

session.updated

会话配置已更新

和服务端创建连接。

def update_session(self,
                       output_modalities: List[MultiModality],
                       voice: str = None,
                       input_audio_format: AudioFormat = AudioFormat.
                       PCM_16000HZ_MONO_16BIT,
                       output_audio_format: AudioFormat = AudioFormat.
                       PCM_24000HZ_MONO_16BIT,
                       enable_input_audio_transcription: bool = True,
                       input_audio_transcription_model: str = None,
                       enable_turn_detection: bool = True,
                       turn_detection_type: str = 'server_vad',
                       prefix_padding_ms: int = 300,
                       turn_detection_threshold: float = 0.2,
                       turn_detection_silence_duration_ms: int = 800,
                       turn_detection_param: dict = None,
                       translation_params: TranslationParams = None,
                       transcription_params: TranscriptionParams = None,
                       **kwargs) -> None

session.updated

会话配置已更新

用于更新会话配置,建议在连接建立后首先调用该方法进行设置。若未调用该方法,系统将使用默认配置。只需关注请求参数中的涉及到的参数。

def append_audio(self, audio_b64: str) -> None

Base64编码后的音频数据片段追加到云端输入音频缓冲区。

  • 请求参数enable_turn_detection设为True,音频缓冲区用于检测语音,服务端决定何时提交。

  • 请求参数enable_turn_detection设为False,客户端可以选择每个事件中放置多少音频量,最多放置 15 MiB。 例如,从客户端流式处理较小的数据块可以让 VAD 响应更迅速。

def commit(self, ) -> None

input_audio_buffer.committed

服务端收到提交的音频

提交之前通过append添加到云端缓冲区的音视频,如果输入的音频缓冲区为空将产生错误。

禁用场景:请求参数enable_turn_detection设为True时。

def cancel_response(self, ) -> None

取消正在进行的响应。如果没有任何响应可供取消,服务端将以一个错误进行响应。

def close(self, ) -> None

终止任务,并关闭连接。

def get_session_id(self) -> str

获取当前任务的session_id。

def get_last_response_id(self) -> str

获取最近一次responseresponse_id。

def get_last_first_text_delay(self)

获取最近一次response的首包文本延迟。

def get_last_first_audio_delay(self)

获取最近一次response的首包音频延迟。

回调接口(OmniRealtimeCallback)

服务端会通过回调的方式,将服务端响应事件和数据返回给客户端。

继承此类并实现相应方法以处理服务端事件。

通过from dashscope.audio.qwen_omni import OmniRealtimeCallback引入。

方法签名

参数

说明

def on_open(self) -> None

WebSocket连接成功建立时触发。

def on_event(self, message: str) -> None

message:服务端事件

收到服务端事件时触发。

def on_close(self, close_status_code, close_msg) -> None

close_status_code:状态码

close_msg:WebSocket连接关闭时的日志信息

WebSocket连接关闭时触发。