技术实践|端云协同的百炼语音AI软件开发套件

简介: Qwen-Audio-3.0移动端SDK是覆盖Android、iOS、HarmonyOS的语音AI套件,以C++为核心,提供可自由组合的原子能力(KWS、AEC、VAD、TTS等),通过统一API连接百炼云端ASR/TTS/Realtime等大模型,支持实时识别、合成、对话、翻译等场景。

适用平台:安卓 Android、苹果 iOS、鸿蒙 HarmonyOS  

关键词:音频处理|Qwen-Audio-3.0|百炼


自然的语音交互,通常需要在同一条链路中处理环境噪声和扬声器回声,检测用户是否发声,判断唤醒时机,并根据业务场景,在实时识别、实时对话、翻译、录音转写与语音合成等能力之间灵活组合。

Qwen Audio 移动端 SDK 是一套以高性能 C++ 为核心语言、覆盖 Android / iOS / HarmonyOS 三端的语音 AI 软件开发套件。它把语音能力拆解为可独立启用、自由组合的原子能力:设备端封装 VAD、AEC、KWS 与本地 TTS 等模块;通过兼容性广泛的 WebSocket / HTTP 协议,连接百炼云端的 ASR、TTS、Realtime、实时翻译与录音转写大模型能力。三端应用层面向统一的任务模型与回调语义,底层平台差异由 SDK 统一适配。

SDK 不预设唯一的交互范式,开发者可以像搭积木一样组织链路:以 KWS 作为入口,用 AEC、VAD 控制输入质量,再把处理后的音频流交给云端模型;也可以跳过 KWS 环节,直接构建实时字幕、同声传译或按键说话类对话应用——把原子的语音 AI 能力,组合成完整的产品体验。


01 一图看懂:统一 API 之下,是可自由组合的原子能力

图1:Qwen Audio 移动端 SDK 整体架构

Qwen Audio 移动端 SDK 的架构可以从上到下理解为五层:

层级

作用

代表能力

统一 API 层

三端统一接入、控制与事件回调

会话控制、音频输入、结果回调、播放控制

能力路由层

根据输入数据和业务配置选择对应的本地模块或云端交互协议

实时识别、实时对话、实时翻译、语音合成、录音文件转写

设备端能力

在端侧完成音频预处理与有效性判断,降低无效云端请求

KWS、AEC、VAD、离线 TTS

百炼云端能力

通过 Qwen Audio 移动端 SDK 封装的 WebSocket / HTTP 连接完成识别与生成

实时/非实时 ASR、TTS、Realtime、实时翻译

基础设施

网络连接、断网续传与跨平台系统适配

录放音管理、线程、TLS、三端适配

比能力数量更关键的,是能力之间可被稳定编排的组合关系。以语音助手为例,一条典型链路是:

麦克风 → AEC → VAD → KWS → 实时 ASR → 业务服务 → 流式 TTS → 扬声器

同一套 SDK 还可快速组织为:

  • 实时字幕:麦克风 → AEC/VAD(可选)→ 实时 ASR → 业务服务;
  • 同声翻译:麦克风 → 实时语音翻译 → 双语文本和语音 → 扬声器;
  • 实时语音助手:麦克风 → AEC/VAD → Realtime → 实时全双工交互;
  • 会议纪要:录音文件 → 非实时 ASR / 文件转写 → 结构化文本结果。


02 接入 Qwen-Audio-3.0:实时识别、合成与语音对话

本节三端调用示例采用 Qwen Audio 移动端 SDK 的实际调用方式。实时识别、流式合成与实时语音对话均基于 NativeNui、任务参数和回调事件完成接入,但不同能力在实例类型、任务参数和音频输入方式上会存在差异。

2.1 Qwen-Audio-3.0-ASR 实时语音识别示例

一个 NativeNui 实例对应一路实时识别。应用先初始化 SDK,再设置详细可选参数,最后开始识别。以下以 qwen-audio-3.0-asr-flash-streaming 为例。

NativeNui nui_instance = new NativeNui();
nui_instance.initialize(this, genInitParams(debugPath),
        Constants.LogLevel.LOG_LEVEL_DEBUG, true);
nui_instance.setParams(genParams());
nui_instance.startDialog(Constants.VadMode.TYPE_P2T, genDialogParams());
private String genInitParams(String debug_path) {
    String str = "";
    try{
        JSONObject object = new JSONObject();
        object.put("device_id", "empty_device_id"); // 必填, 推荐填入具有唯一性的id, 方便定位问题
        object.put("url", "wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference");
        object.put("service_mode", Constants.ModeFullCloud); // 必填
        str = object.toString();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return str;
}
private String genParams() {
    String params = "";
    try {
        JSONObject nls_config = new JSONObject();
        // 模型选择, 注意模型对应的采样率要求。
        nls_config.put("model", "qwen-audio-3.0-asr-flash-streaming");
        // 设置待识别音频语种。无默认值,不设置时模型自动识别。
        nls_config.put("language_hints", ["en"]);
        if (isVadMode) {
            // 设置开启VAD(Voice Activity Detection,语音活动检测)断句,默认关闭。
            nls_config.put("semantic_punctuation_enabled", false);
            // 设置VAD(Voice Activity Detection,语音活动检测)断句的静音时长阈值(单位为ms)。
            // 取值范围[200, 6000],默认1300。
            nls_config.put("max_sentence_silence", 800);
        } else {
            // 设置开启语义断句。
            nls_config.put("semantic_punctuation_enabled", true);
        }
        // 噪音参数阈值,参数范围:[-1,1]。取值说明如下:
        // 取值越趋于-1,噪音被判定为语音的概率越大。
        // 取值越趋于+1,语音被判定为噪音的概率越大。
        nls_config.put("speech_noise_threshold", 0.88);
        // 上下文增强:传入对话历史或领域语料,模型利用上下文修正识别结果
        nls_config.put("input_context", "context");
        JSONObject tmp = new JSONObject();
        tmp.put("nls_config", nls_config);
        // 必填, 设置成实时识别模式
        tmp.put("service_type", Constants.kServiceTypeSpeechTranscriber);
        params = tmp.toString();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return params;
}
private String genDialogParams() {
    String params = "";
    try {
        JSONObject dialog_param = new JSONObject();
        // 服务只需要在临时Token(API Key)快过期前刷新一次。各端侧在Token(API Key)快过期前从服务获得新的
        // 临时Token(API Key)。
        dialog_param.put("apikey", "临时token");
        params = dialog_param.toString();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return params;
}

实时音频接入通常有两种方式:默认由 SDK 通过 onNuiNeedAudioData 拉取音频数据;也可以由应用调用 updateAudio 主动推送。具体选择取决于应用是否需要在送入识别前插入本地音频处理,例如 AEC。

// 回调送数据:SDK 请求一帧音频时,将音频数据填入缓存
@Override
public int onNuiNeedAudioData(byte[ ] buffer, int len) {
    // 录音数据填入缓存
}

识别结果和事件信息通过 onNuiEventCallback 获取。

// 回调送数据:SDK 请求一帧音频时,将音频数据填入缓存
@Override
public void onNuiEventCallback(Constants.NuiEvent event, final int resultCode,
                                final int arg2, KwsResult kwsResult,
                                AsrResult asrResult) {
    if (event == Constants.NuiEvent.EVENT_TRANSCRIBER_STARTED) {
        // 交互开始
    } else if (event == Constants.NuiEvent.EVENT_TRANSCRIBER_COMPLETE) {
        // 交互结束
    } else if (event == Constants.NuiEvent.EVENT_ASR_PARTIAL_RESULT) {
        // 中间识别结果
    } else if (event == Constants.NuiEvent.EVENT_SENTENCE_END) {
        // 识别句结果
    } else if (event == Constants.NuiEvent.EVENT_ASR_ERROR) {
        // 发生错误
    }
}

2.2 Qwen-Audio-TTS 实时语音合成示例

流式输入 TTS 模式建议创建独立实例。上游文本可按句或按语义片段持续写入,合成音频通过流式回调返回后,应立即送入播放器队列,以降低首包延迟和端到端播放延迟。

NativeNui tts_instance = new NativeNui(Constants.ModeType.MODE_STREAM_INPUT_TTS);
int ret = tts_instance.startStreamInputTts(new INativeStreamInputTtsCallback() {
    @Override
    public void onStreamInputTtsDataCallback(byte[ ] data) {
        // 音频送入播放队列
    }
    @Override
    public void onStreamInputTtsEventCallback(StreamInputTtsEvent event,
            String taskId, String sessionId, int code, String message,
            String timestamp, String allResponse) {
        if (event == StreamInputTtsEvent.STREAM_INPUT_TTS_EVENT_SYNTHESIS_STARTED) {
            // 打开播放器
        } else if (event == StreamInputTtsEvent.STREAM_INPUT_TTS_EVENT_SYNTHESIS_COMPLETE) {
            // 已送完合成音频,等待播放器播空
        }
    }
}, genTicket(), genParameters(false), taskId,
    Constants.LogLevel.toInt(Constants.LogLevel.LOG_LEVEL_DEBUG), true);
tts_instance.sendStreamInputTts("您好,我已经为");
tts_instance.sendStreamInputTts("您查到相关信息。");
// 通知待合成文本发送完成,等待语音合成结束
tts_instance.asyncStopStreamInputTts();

每轮合成开始前应清空播放器缓存,并将上游文本按句切分后逐段调用 sendStreamInputTts。需要立即中断时,可调用 cancelStreamInputTts 或保持连接的取消接口;正常收尾时使用 asyncStopStreamInputTts,确保待合成文本完整发送并等待服务端结束事件。

2.3 Qwen-Audio Realtime 实时语音对话示例

一个 NativeNui 实例对应一路实时语音对话。应用先初始化 SDK,再设置详细可选参数,最后开始识别。以下以 qwen-audio-3.0-realtime-plus 为例。

NativeNui nui_instance = new NativeNui();
nui_instance.initialize(this, genInitParams(debugPath),
        Constants.LogLevel.LOG_LEVEL_DEBUG, true);
nui_instance.setParams(genParams());
nui_instance.startDialog(Constants.VadMode.TYPE_P2T, genDialogParams());
private String genInitParams(String debug_path) {
    String str = "";
    try{
        JSONObject object = new JSONObject();
        object.put("workspace", workspace); // 必填, 传入模型资源所在目录
        object.put("device_id", "empty_device_id"); // 必填, 推荐填入具有唯一性的id, 方便定位问题
        object.put("url", "wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference");
        object.put("service_mode", Constants.ModeFullCloud); // 必填
        // 使用主动推送录音数据的方式, 自动启动AEC, 是实时对话的基础
        object.put("audio_update_manually", "true");
        str = object.toString();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return str;
}
private String genParams() {
    String params = "";
    try {
        JSONObject nls_config = new JSONObject();
        // 模型选择, 注意模型对应的采样率要求。
        nls_config.put("model", "qwen-audio-3.0-realtime-plus");
        // 模型输出模态设置
        nls_config.put("modalities", "[\"text\", \"audio\"]");
        JSONObject turn_detection = new JSONObject();
        if (isVadMode) {
            // 服务端 VAD 检测语音起止,自动触发推理。
            turn_detection.put("type", "server_vad");
        } else {
            // 融合声学感知与语义理解判断轮次边界,而非仅依赖人声信号。无语义的声音(如”嗯”、”啊”)不会触发对话轮或打断模型播报。
            turn_detection.put("type", "smart_turn");
        }
        nls_config.put("turn_detection", turn_detection.toString());
        
        // 用户自有服务function_call注册
        nls_config.put("tools", "xxxx");
        JSONObject tmp = new JSONObject();
        tmp.put("nls_config", nls_config);
        // 必填
        tmp.put("service_type", Constants.kServiceTypeSpeechTranscriber);
        params = tmp.toString();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return params;
}
private String genDialogParams() {
    String params = "";
    try {
        JSONObject dialog_param = new JSONObject();
        // 服务只需要在临时Token(API Key)快过期前刷新一次。各端侧在Token(API Key)快过期前从服务获得新的
        // 临时Token(API Key)。
        dialog_param.put("apikey", "临时token");
        params = dialog_param.toString();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return params;
}

为实现实时对话中的全双工交互,应将 audio_update_manually 设置为 true,启用主动推送音频并开启 AEC 的工作模式。此时,应用需要同时将麦克风数据和播放参考数据送入 SDK,由 SDK 完成回声消除。

public void onPlayAudioData(byte[ ] data, int len) {
    // 将播放器输出音频作为参考信号送入SDK用于回声消除(仅SDK内部AEC模式需要,first_pack可不关注)
    nui_instance.updateRefAudio(data, len, false);
}
public int onRecorderData(byte[ ] data, int len, boolean first_pack) {
    // 开启SDK内部AEC时的录音数据回调:将原始音频通过updateAudio送入SDK,由SDK做AEC
    return nui_instance.updateAudio(data, len, first_pack);
}

识别结果和事件信息通过 onNuiEventCallback 获取。

@Override
public void onNuiEventCallback(Constants.NuiEvent event, final int resultCode,
                                final int arg2, KwsResult kwsResult,
                                AsrResult asrResult) {
    if (event == Constants.NuiEvent.EVENT_TRANSCRIBER_STARTED) {
        // 交互开始
    } else if (event == Constants.NuiEvent.EVENT_TRANSCRIBER_COMPLETE) {
        // 交互结束
    } else if (event == Constants.NuiEvent.EVENT_ASR_PARTIAL_RESULT) {
        // 中间识别结果
    } else if (event == Constants.NuiEvent.EVENT_SENTENCE_END) {
        // 识别句结果
    } else if (event == Constants.NuiEvent.EVENT_AUDIO_TRANSCRIPTION) {
        // 解析 delta 增量,累加后显示在回答内容中
    } else if (event == Constants.NuiEvent.EVENT_AUDIO_TRANSCRIPTION_COMPLETED) {
        // 最终结果,直接显示在回答内容中
    } else if (event == Constants.NuiEvent.EVENT_OTHER_RESULT) {
        // 根据返回结果处理function_call
    } else if (event == Constants.NuiEvent.EVENT_ASR_ERROR) {
        // 发生错误
    }
}

03 端云能力如何按需组合:KWS、AEC、VAD 与离线 TTS

端侧 AI 离用户最近,也最了解设备此刻的声音状态。它不一定负责完成复杂的语义理解,但需要先回答清楚“什么时候听、听什么、是否可信”这三个问题。

端侧第一原则  先把输入音频变成“可用的音频流”,再交给云端模型。端侧处理得越稳定,云端识别和对话链路越容易获得稳定的延迟与准确率。

  • KWS(关键词/命令词检测):除了唤醒词能力,还支持多命令词和自定义唤醒词,可把常用动作前置为本地命令入口,避免应用始终将全部音频上传云端,更好地保护用户隐私。
  • AEC(回声消除):利用扬声器播放的参考信号,抑制回声回灌,减少 AI“听见自己说话”的问题。
  • VAD(语音活动检测):在噪声环境下检出有效语音区间,辅助停说检测、断句、打断和功耗控制。
  • TTS(语音合成播报):离线 TTS 可以在无网时继续工作,适合作为导航提示、系统播报和关键指令的离线兜底。
  • 音频与设备控制:管理麦克风采集、播放器队列、音频分片、线程与跨平台差异,保证输入与输出能够连续工作。

这也是为什么移动端语音产品不能只看 ASR 或 TTS 的单项指标:识别模型再强,如果麦克风采进了回声、断句时机不稳定,或者用户说完后播放器仍在播旧音频,体验依然会显得迟钝、不自然。开发者可以按场景在 Qwen Audio 移动端 SDK 中配置启用端侧模块,让它们在真实音频链路里协同发力。

场景一:AEC / VAD + KWS + TTS,指令回馈

组合:麦克风 → AEC → VAD → KWS → 业务逻辑 → TTS

当设备正在播放音乐或 AI 回答时,扬声器声音可能被麦克风重新采集。AEC 以播放参考信号为依据,尽量消除扬声器回声;VAD 区分有效语音与静音/背景声;KWS 在更可靠的语音片段中检测唤醒词,命中后再切换到识别或对话任务。

// 唤醒的工作实例
NativeNui nui_instance = new NativeNui();
// 本地语音合成的工作实例
NativeNui tts_instance = new NativeNui(Constants.ModeType.MODE_TTS);
nui_instance.initialize(this, genInitParams(debugPath),
        Constants.LogLevel.LOG_LEVEL_DEBUG, true);
nui_instance.setParams(genParams());
nui_instance.startDialog(Constants.VadMode.TYPE_ONLY_KWS, genDialogParams());
// 根据唤醒词/命令词,经过业务逻辑,最终结果通过TTS播报
tts_instance.startTts("1", "", "好的");
private String genInitParams(String debug_path) {
    String str = "";
    try{
        JSONObject object = new JSONObject();
        object.put("workspace", workspace); // 必填, 传入模型资源所在目录
        object.put("upgrade_file", "用户自定义的KWS模型路径");
        object.put("device_id", "empty_device_id"); // 必填, 推荐填入具有唯一性的id, 方便定位问题
        object.put("url", "wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference");
        object.put("service_mode", Constants.ModeFullLocal); // 必填
        // 使用主动推送录音数据的方式, 自动启动AEC和VAD组合
        object.put("audio_update_manually", "true");
        object.put("aec_params", "更详细的AEC高级参数配置");
        object.put("vad_params", "更详细的VAD高级参数配置");
        str = object.toString();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return str;
}
private String genParams() {
    String params = "";
    try {
        // 纯唤醒模式无需传入参数
        JSONObject parameters = new JSONObject();
        parameters.put("service_type", Constants.kServiceTypeASR);
        // 默认false, 即开始循环唤醒模式
        //开启后为单轮模式, 单轮模式需要每次唤醒后再调用start接口才会启动
        parameters.put("single_round", "false");
        //可以通过以下方式设置自定义唤醒词或命令词
        JSONArray dynamic_wuw = new JSONArray();
        parameters.put("wuw", xxx);
        params = parameters.toString();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return params;
}

唤醒结果通过 onNuiEventCallback 返回。同时,开发者也可以通过 onNuiAssistEventCallback 获取唤醒瞬间的音频数据以及 AEC 回声消除后的音频数据,用于支持更复杂的交互逻辑和问题定位。

@Override
public void onNuiEventCallback(Constants.NuiEvent event, final int resultCode,
                                final int arg2, KwsResult kwsResult,
                                AsrResult asrResult) {
    if (event == Constants.NuiEvent.EVENT_WUW) {
        // 唤醒词触发
    } else if (event == Constants.NuiEvent.EVENT_WUW_TRUSTED) {
        // 触发的唤醒词确认
    } else if (event == Constants.NuiEvent.EVENT_WUW_START) {
        // 唤醒时的音频数据开始回传
    } else if (event == Constants.NuiEvent.EVENT_WUW_END) {
        // 唤醒时的音频数据回传结束
    } else if (event == Constants.NuiEvent.EVENT_ASR_ERROR) {
        // 发生错误
    }
}
@Override
public void onNuiAssistEventCallback(Constants.NuiEvent event, String info, int info_len,
                                        byte[ ] data) {
    if (event == Constants.NuiEvent.EVENT_WUW_DATA) {
        // 唤醒瞬间的音频数据
    } else if (event == Constants.NuiEvent.EVENT_AEC_DATA) {
        // 开启SDK内部AEC且aec_params.enable_aec_data_callback为true时, 回送AEC处理后的音频
    }
}

04 典型产品场景示例

Qwen Audio 移动端 SDK 不限定上层业务服务。开发者可以在识别结果与语音合成之间接入自己的业务系统、知识检索、意图理解或大模型服务,将端侧音频能力、百炼语音能力与产品界面连接起来。下面以三种典型产品形态为例,说明如何按需选择能力,构建不同的语音体验。。

场景一:语音唤醒后接入自有服务


该场景以唤醒词作为交互入口,适用于导航、车载、智能终端等需要“先唤醒、再服务”的产品。设备在播放导航或 AI 播报时,AEC 抑制播放声音回灌,帮助 KWS 和 ASR 更准确地接收用户指令;识别完成后,应用将结果交给自有业务服务处理,并将服务结果同时展示和播报。

工作流如下:

  1. 麦克风音频先进入 AEC,将扬声器播放的导航或播报声音作为参考信号,降低回声干扰,提升后续指令接收的准确性;
  2. KWS 在处理后的音频中检测唤醒词,将唤醒作为进入服务链路的入口;
  3. Qwen-Audio ASR 将用户语音实时转为文本;
  4. 文本进入自有业务服务,例如地点搜索、路线规划、订单查询或大模型问答;
  5. 自有业务服务将结果分别传给应用界面和 Qwen-Audio TTS,实现文字、卡片或地图结果展示与语音播报;
  6. 播放音频继续回送至 AEC,形成可持续工作的闭环。

场景二:一问一答的语音交互

该场景是一种一问一答的简洁交互模式,适用于应用内语音搜索、对话助手和指令反馈。用户通过按键或麦克风直接发起一次语音请求,无需唤醒环节;应用将识别文本送往自有服务,并把本轮返回结果同步用于页面展示和语音播报。

工作流如下:

  1. 用户的语音输入由 Qwen-Audio ASR 转为文本;
  2. 文本进入自有业务服务,完成问答、搜索、指令处理或内容生成;
  3. 自有业务服务将返回结果分别传给应用界面和 Qwen-Audio TTS
  4. 应用展示文本、卡片或对话消息,同时由 Qwen-Audio TTS 将结果流式合成为音频并播放,实现“看得到,也听得到”的反馈。

场景三:支持自定义工具的实时语音对话

在实时对话中,应用可以将天气查询、票务查询、搜索、订单处理等自有能力声明为工具。模型理解用户语义后,可在需要外部信息或业务执行时发起 function_call;服务返回调用结果后,模型结合结果继续生成实时文本与语音回复。

工作流如下:

  1. 麦克风音频经过 AEC 处理后进入 Qwen-Audio Realtime,降低播放回声对实时对话的干扰;
  2. 应用预先声明自定义工具及其调用参数,供模型在对话中按需选择;
  3. 模型理解语义并作出工具决策,需要执行外部能力时向自有服务发起 function_call
  4. 自有服务执行天气、票务、搜索或其他业务逻辑,并将调用结果返回模型;
  5. 模型将工具结果融入本轮回复,持续输出文本和语音;
  6. 实时语音回复送往扬声器播放,播放参考同时回送 AEC,支持连续自然的多轮对话。

这一模式的关键在于:自有服务不必被改造成独立的语音产品,只需以工具形式接入,即可成为实时语音对话可调用、可执行的业务能力。

三个场景的差异主要体现在交互入口和业务深度:场景一以唤醒为入口,并通过 AEC 帮助设备更准确接收指令,适应持续播放和免手操作的环境;场景二采用直接的一问一答模式,链路更轻量;场景三进一步把自有服务作为工具接入,让实时语音对话可以完成实际任务。它们都保留自有服务的业务决策权,开发者可按产品需求扩展模型、交互和展示方式。

结语

把复杂的语音工程转化为简单、可组合的产品能力,依赖的不只是单个模型。语音大模型让机器具备了更强的理解和生成能力,但完整的产品体验来自原子能力在设备端、云端与业务系统之间的协同:麦克风负责把用户声音带进系统,端侧 AI 负责过滤回声、判断时机和协同交互,云端模型负责理解与生成,扬声器再把结果带回用户身边。

Qwen Audio 移动端 SDK 面向 Android、iOS、HarmonyOS 提供一套可组合的移动端语音底座:以 C++ 封装端侧 KWS、VAD、AEC 和 TTS 等能力,以统一协议连接百炼云端 ASR、TTS、Realtime、翻译与转写能力,并通过统一 API 与能力路由,让开发者按参数选择所需能力、直接构建产品体验。无论目标是可被唤醒的语音助手、实时双语会议,还是能够沉淀内容的智能记录工具,都可以基于同一套 Qwen Audio 移动端 SDK 语音能力组件,组合出适配目标用户与设备环境的交互方案。

把语音能力交给 SDK,把体验交给产品——现在就动手接入百炼语音 AI 移动端 SDK,让你的应用真正"听得懂、说得出、答得准"。


接入说明

本文代码主要用于说明技术链路,workspace、临时 Token、模型路径、工具定义和错误处理等内容,仍需根据实际项目补充。实际接入时,请根据目标 SDK 版本核对地域连接地址及输入输出采样率,并避免在移动端硬编码长期 API Key。


延伸阅读

  1. 实时语音识别
  2. 非实时语音识别
  3. 提升语音识别准确率
  4. 实时语音合成
  5. Qwen-AudioChat 实时语音对话
  6. 移动端SDK选择与下载


目录
相关文章
|
21天前
|
自然语言处理 API 语音技术
技术实践|开箱即用调用Qwen-Audio-3.0 系列模型API
阿里云百炼Qwen-Audio-3.0示例库上线!一站式整合语音识别(ASR)、语音合成(TTS)与实时语音对话(Realtime)三大能力,开箱即用、配置一个环境变量即可运行。覆盖非流式/流式识别、声音复刻、多语言合成、低延迟实时交互等场景,助力快速构建智能客服、数字人、会议纪要等应用。
616 0
|
7天前
|
人工智能 安全 数据可视化
阿里云百炼 Agent Studio 产品手册全新发布:企业级 Agent 全栈服务平台
阿里云百炼正式发布《阿里云百炼 Agent Studio 产品手册》。手册围绕企业级 Agent“开发—运行—进化—商业化”全生命周期,系统呈现 Agent Studio 的可视化编排、托管运行、RAG/Memory/Parser X、MCP/Skill/Connector、硬件 Agent、安全治理与商业闭环等能力。新用户可获得限时免费体验额度,具体以官网活动页为准。
326 1
|
22天前
|
机器学习/深度学习 人工智能 缓存
阿里云百炼产品月报【2026年8月】
阿里云百炼本月重磅升级:Token Plan个人版取消5小时调用限制,新增Qwen3.8-Max/Flash、DeepSeek-V4-Pro等多款大模型;发布Wan3.0-Video全模态视频生成模型;应用广场上新15个行业模板,MCP广场新增42个数据服务;限时组合购68元起,多项后付费享折扣。
447 1
|
20天前
|
人工智能 数据挖掘 BI
千问办公QwenWork深度解析:基于Qwen3.8,六大核心能力重构企业全自动化工作流与计费选型指南
AI办公应用快速普及的今天,大量工具依旧停留在对话问答层面,只能输出文本草稿,很难直接产出可以投入业务使用的最终产物。企业日常办公当中,员工需要在多款软件之间来回切换,沟通协作、文档撰写、数据分析、网页制作分别对应不同平台,复制粘贴操作占用大量工作时间。即便借助普通大模型生成内容,也经常遇到格式错乱、表格缺少计算公式、生成网页还需要额外部署上线等各类问题,AI产出物需要大量二次加工才可以使用。除此之外,企业内部数据相互割裂,AI无法直接读取群聊记录、会议纪要、审批单据、内部知识库,业务需求需要人工重新复述;面对法务审核、电商数据分析、代码开发这类垂直任务,使用者需要编写复杂冗长提示词才能够得到
432 2
|
2月前
|
人工智能 监控 API
凌晨2点的PR谁来回?AgentTeams 给 LoongSuite 配了个 7×24h 社区管理员
基于多智能体治理与协作平台 AgentTeams,我们为 LoongSuite 开源项目搭建了一个 7×24 运转的 AI 数字员工,三周自动审查 108 个 PR、处理 48 个 Issue,本文记录了从架构设计到踩坑经验的全过程。
423 12
|
2月前
|
Web App开发 人工智能 缓存
自研 AOQ 协议,为多模态 AI 构建确定性传输底座
AOQ(AI Over QUIC)是专为多模态AI设计的自研传输协议,首创“实时+非实时”双模自适应机制,支持文本、音视频、文件全格式统一承载与强同步。基于QUIC深度优化,具备0-RTT建连、流级容错、智能带宽调度等能力,60%高丢包下仍保障流畅交互,突破弱网瓶颈,实现低延迟、高可靠、强同步三者兼得。
839 1
|
1月前
|
人工智能 自然语言处理 数据挖掘
阿里云百炼产品月报【2026年7月】
阿里云百炼本月重磅升级:发布企业级AGENT全栈平台,支持可视化编排与长程自主规划;上线Token Plan个人版,提供Qwen等多模态模型统一调用;推出Knowledge Studio知识库RAG方案,毫秒检索+多轮推理;新增39个MCP生态模板及11款应用模板,并优化Qwen-Audio、Qwen-Image等12个新模型。
653 0
|
2月前
|
存储 人工智能 Kubernetes
阿里云 AgentTeams 解读:当 Agent 开始真正在企业里干活
多 Agent 协作不只是任务并行,更是组织运转。从产品主创团队视角,聊聊 AgentTeams 在安全、协作、弹性、进化四个方向的设计思考。
1168 15
|
2月前
|
人工智能
从每天重复做重复工作,到拥有自己的AI助手:普通人构建AI工作系统的实践方法
本文探讨AI大模型时代如何从“工具使用者”升级为“系统构建者”。指出单纯调用AI效果有限,关键在于建立融合大模型、个人知识库、Prompt工程与工作流的AI生产力系统。强调知识沉淀、人机分工与持续迭代,助力普通人将AI转化为长期高效能伙伴。
|
2月前
|
SQL 自然语言处理 文字识别
阿里云百炼知识库(Knowledge Studio):迈入 Agentic RAG 4.0时代
阿里云百炼Knowledge Studio(RAG 4.0)推出独立 Rag Agent服务,提供 Agentic Search + Agentic Generation 闭环方案。面向企业全模态多知识库场景,真正做到复杂知识搜得到、答得好、引用看得见。
1173 2

热门文章

最新文章