非实时语音识别(Qwen-Audio-ASR)Android SDK

更新时间:
复制 MD 格式

Qwen-Audio-ASR非实时语音识别Android SDK可将语音转换为文本。

关于支持的音频格式、文件大小限制、时长限制等输入要求,请参见音频规格。

快速开始

  1. 获取API Key:获取API Key,为安全起见,推荐将API Key配置到环境变量。
  2. 下载SDK并运行示例代码:
    • 下载最新SDK整合包。
    • 解压 ZIP 包。在 app/libs 目录中获取 AAR 格式 SDK,并添加到项目依赖。 需要 Android CPP 接入时,使用 ZIP 包内的 android_libs 与 android_include 获取动态库和头文件。
    • 用 Android Studio 打开工程。示例代码位于DashFunAsrFlashFileTranscriberActivity.java,替换 API Key 后体验功能。

调用步骤

同步模式

  1. 初始化 SDK

  2. 按业务需求配置相关参数

  3. 调用 startFileTranscriber 发送非实时语音识别请求,并等待结果返回。

  4. 在onFileTransEventCallback接口中监听EVENT_FILE_TRANS_RESULT 事件,获取最终识别结果。

  5. 调用 release 释放 SDK 资源

请求参数

连接与控制参数

通过在initialize接口的parameters参数中传入一个JSON字符串来配置。

参数示例:以下为 JSON 字符串示例,参数未完整列出。请按实际需求在编码时补充:

{
    "url": "wss://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation",
    "apikey": "st-****",
    "device_id": "my_device_id",
    "service_mode": "1"
}
参数说明
参数类型是否必须说明

url

String

是

服务地址:

  • wss://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
  • 华北2(北京):wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

  • 新加坡:wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

调用时,请将 {WorkspaceId} 替换为真实的 Workspace ID。

apikey

String

是

API Key。

service_mode

String

是

运行模式。非实时语音识别固定为 "1"。

device_id

String

是

用于标识终端用户的唯一字符串,可设为应用内用户ID或客户端生成的设备唯一标识符。此ID主要用于日志追踪和问题排查。

debug_path

String

否

日志文件的存储路径。 此参数仅在调用initialize接口时将save_log设为true时生效。此时必须设置日志文件路径,否则将报错。 本地最多保留两个日志文件。

max_log_file_size

int

否

设定日志文件的最大字节数。 此参数仅在调用initialize接口时将save_log设为true时生效。 默认值:104857600(100 * 1024 * 1024 字节, 即 100MiB)。

log_track_level

int

否

控制通过日志回调(onFileTransLogTrackCallback)对外发送的日志内容的过滤级别。 默认值:2。 取值范围:

  • 0: LOG_LEVEL_VERBOSE
  • 1: LOG_LEVEL_DEBUG
  • 2: LOG_LEVEL_INFO
  • 3: LOG_LEVEL_WARNING
  • 4: LOG_LEVEL_ERROR
  • 5: LOG_LEVEL_NONE(表示关闭此功能)

说明log_track_level与level(通过initialize接口设置)共同决定最终回调的日志。一条日志的级别数值必须同时大于或等于log_track_level和level的值,才会被回调。例如,log_track_level设为2 (INFO),level设为3 (WARNING),则只有WARNING及以上级别(数值>=3)的日志才会被回调。

语音识别效果参数

通过startFileTranscriber接口配置所有语音识别效果参数。

参数示例:以下为 JSON 字符串示例,参数未完整列出。请按实际需求在编码时补充:

{
  "apikey": "st-****",
  "messages": [
    {
      "content": [
        {
          "input_audio": {
            "data": "{YOUR_AUDIO_URL}"
          },
          "type": "input_audio"
        }
      ],
      "role": "user"
    }
  ],
  "nls_config": {
    "format": "mp3",
    "model": "qwen-audio-3.0-asr-flash"
  }
}
参数说明
参数类型是否必须说明

apikey

string

否

如果连接与控制参数的apikey使用的是临时API Key,可在此处进行更新,以免超时失效。

nls_config

object

是

语音识别核心配置对象,包含模型选择、识别效果控制等关键参数。

nls_config.model

string

是

模型名称。

nls_config.format

string

是

音频格式。根据实际音频格式填写,支持wav、mp3、opus等。详情请参见音频规格。

nls_config.sample_rate

string

否

音频采样率,单位Hz。例如16000表示16kHz采样率。详情请参见音频规格。

nls_config.vocabulary_id

string

否

预编译热词列表 ID。 需预先调用创建热词列表接口生成,识别时传入该 ID 即可使用列表中的热词。 适用于词汇已知且相对稳定、需要跨请求复用同一词表的场景。 使用方法请参见预编译热词。

nls_config.instant_vocabulary

object

否

即时热词。

以键值对形式传入,键为热词文本(string),值为热词权重(integer),无需预先创建热词列表。权重取值范围为 [1, 5] 或 50:取 [1, 5] 时值越大模型越倾向输出该词;取 50 时为超级热词,召回率大幅提升,但超级热词数量最多不超过 50 个。

适用于临时性、会话级别的热词优化。

与预编译热词同时配置时,系统会合并两类热词;合并后超过 2000 个时,随机选择 2000 个使用。使用方法请参见即时热词。

{
  "张三": 5,
  "李四": 5
}

nls_config.language_hints

array[string]

否

设置待识别语言代码。如果无法提前确定语种,可不设置,模型会自动识别语种。最多支持设置 4 个值,超出时仅前 4 个生效。

指定语种代码可提升识别准确率。

支持的语言代码

  • zh: 中文
  • en: 英文
  • ja: 日语
  • ko: 韩语
  • vi: 越南语
  • th: 泰语
  • id: 印尼语
  • ms: 马来语
  • tl: 菲律宾语
  • hi: 印地语
  • ar: 阿拉伯语
  • fr: 法语
  • de: 德语
  • es: 西班牙语
  • pt: 葡萄牙语
  • ru: 俄语
  • it: 意大利语
  • nl: 荷兰语
  • sv: 瑞典语
  • da: 丹麦语
  • fi: 芬兰语
  • no: 挪威语
  • el: 希腊语
  • pl: 波兰语
  • cs: 捷克语
  • hu: 匈牙利语
  • ro: 罗马尼亚语
  • bg: 保加利亚语
  • hr: 克罗地亚语
  • sk: 斯洛伐克语

qwen-audio-3.1-asr-flash 还支持以下语言代码:

  • tr: 土耳其语
  • fa: 波斯语
  • mr: 马拉地语
  • ml: 马拉雅拉姆语
  • ne: 尼泊尔语
  • ky: 吉尔吉斯语
  • az: 阿塞拜疆语
  • ka: 格鲁吉亚语
  • hy: 亚美尼亚语
  • sl: 斯洛文尼亚语
  • sq: 阿尔巴尼亚语
  • et: 爱沙尼亚语
  • lv: 拉脱维亚语
  • lt: 立陶宛语
  • ca: 加泰罗尼亚语
  • eu: 巴斯克语
  • gl: 加利西亚语
  • or: 奥里亚语
  • dv: 迪维希语
  • as: 阿萨姆语
  • ku: 库尔德语
  • tig: 提格雷语
  • fy: 西弗里西亚语
  • ba: 巴什基尔语
  • be: 白俄罗斯语
  • tt: 鞑靼语
  • ia: 国际语
  • mhr: 东马里语
  • tok: 道本语

messages

array[object]

是

消息列表。包含当前待识别的音频,以及可选的对话上下文(用于提升识别效果)。

详见如下说明。
messages参数说明:

重要上下文功能用于提升专有词汇的识别准确率,使用方法详见上下文增强。

上下文消息(input_text 和 text 类型)各最多 5 条,超出时保留最近的 5 条。每轮上下文文本总长度(user 和 assistant 的 text 字段长度之和)不超过 400 个字符(按字符数计算,每个字符计为 1),超出部分从末尾截断。

重要携带上下文时,messages 中的消息顺序有要求:上下文消息必须按对话轮次排列,每轮中 user(input_text 类型)必须在对应的 assistant(text 类型)之前;包含 input_audio 的 user 消息必须放在 messages 数组的最后。

参数类型是否必须说明

role

string

是

消息角色。取值范围:

  • user(必选):用户消息。type为input_audio时表示当前待识别的音频;type为input_text时表示前几轮的识别结果或领域相关的词表(可选,上下文)。

  • assistant(可选,上下文):前几轮大语言模型的回复内容。

content

array[object]

是

消息内容列表。详细如下说明。

content参数说明:
参数类型是否必须说明

type

string

是

内容类型。每个请求至少需要一条input_audio类型的消息。取值范围:

  • input_audio(必选):当前待识别的音频输入(role为user),需同时传入input_audio对象。

  • input_text(可选,上下文):前几轮用户语音的识别结果或领域相关的词表(role为user),需同时传入text字段。

  • text(可选,上下文):前几轮大语言模型的回复内容(role为assistant),需同时传入text字段。

input_audio

object

否

当type为input_audio时必填。

input_audio.data

string

是

待识别音频数据。关于支持的音频格式、文件大小限制、时长限制等输入要求,请参见音频规格。支持以下两种方式:

  • 音频文件URL:直接传入可公开访问的音频文件地址。

  • Base64 Data URI:采用Data URI格式传入Base64编码的音频数据,值由data:{MIME_TYPE};base64,前缀与Base64编码的音频数据拼接而成。支持的MIME类型包括audio/wav、audio/mp3等。

示例(URL方式):https://example.com/audio/sample.wav

示例(Base64方式):data:audio/wav;base64,{BASE64_ENCODED_DATA}

text

string

否

当type为input_text时,填入前几轮用户语音的识别结果或领域相关的词表;当type为text时,填入前几轮大语言模型的回复内容。文本按字符数计算,每个字符计为 1。每轮上下文中所有消息的 text 字段长度之和不超过 400 个字符,超出部分从末尾截断。

关键接口

NativeNui

initialize

初始化语音识别SDK实例。SDK为单例模式,在调用release前禁止重复初始化。

此接口会引起阻塞,应在非UI线程调用。

方法签名
public synchronized int initialize(final INativeFileTransCallback callback,
                                   String parameters,
                                   final Constants.LogLevel level,
                                   final boolean save_log)
参数说明
参数类型说明

callback

INativeFileTransCallback

事件和数据回调接口的实现。

parameters

String

JSON字符串,包含鉴权、连接和调试参数。参见连接与控制参数。

level

Constants.LogLevel

控制SDK自身日志的打印级别。

save_log

boolean

是否保存本地日志。若为true,须在连接与控制参数中通过debug_path指定路径,并可通过max_log_file_size设置文件大小。

setParams

此接口用于独立设置或更新 nls_config 参数。如果所有参数都在startFileTranscriber中一次性提供,则无需调用此方法。

方法签名
public synchronized int setParams(String params);
参数说明
参数类型说明

params

String

语音识别效果参数中的nls_config和messages参数。

示例:

{
  "messages": [
    {
      "content": [
        {
          "input_audio": {
            "data": "{YOUR_AUDIO_URL}"
          },
          "type": "input_audio"
        }
      ],
      "role": "user"
    }
  ],
  "nls_config": {
    "format": "mp3",
    "model": "qwen-audio-3.0-asr-flash"
  }
}

startFileTranscriber

开始识别。

方法签名
public synchronized int startFileTranscriber(String params, byte[ ] task_id)
参数说明
参数类型说明

params

String

语音识别效果参数。 示例:

{
  "apikey": "st-****",
  "messages": [
    {
      "content": [
        {
          "input_audio": {
            "data": "{YOUR_AUDIO_URL}"
          },
          "type": "input_audio"
        }
      ],
      "role": "user"
    }
  ],
  "nls_config": {
    "format": "mp3",
    "model": "qwen-audio-3.0-asr-flash"
  }
}

task_id

byte[ ]

可不关注,可填null

queryFileTranscriber

此非实时语音识别功能仅支持同步请求,无需关注此接口。

cancelFileTranscriber

立即取消当前任务。

方法签名
public synchronized int cancelFileTranscriber(String task_id)
参数说明
参数类型说明

task_id

String

待取消的任务ID。通过EVENT_FILE_TRANS_UPLOADED获取。

release

释放SDK所有内部资源。此方法调用后,SDK实例将变为不可用状态,如需再次使用,必须重新调用initialize进行初始化。

方法签名
public synchronized int release();

GetVersion

获得当前SDK版本信息。

方法签名
public synchronized String GetVersion();
返回值说明

当前SDK版本信息。

INativeFileTransCallback:监听回调

onFileTransEventCallback:监听事件和语音识别结果

方法签名
void onFileTransEventCallback(NuiEvent event, final int resultCode, final int arg2, AsrResult asrResult, String taskId);
参数说明
参数类型说明

event

NuiEvent

回调事件。

resultCode

int

仅在出现 EVENT_ASR_ERROR 事件时有效。

asrResult

AsrResult

语音识别结果。

taskId

String

任务ID。

arg2

int

保留参数。

onFileTransLogTrackCallback:监听追踪日志

此回调用于接收 SDK 内部的详细日志,方便进行问题定位和调试。

default void onFileTransLogTrackCallback(Constants.LogLevel level, String log)

事件类型

事件说明

EVENT_FILE_TRANS_CONNECTED

连接服务成功。

EVENT_FILE_TRANS_UPLOADED

上传待识别音频文件成功,此时可获得当前任务的task_id。

EVENT_FILE_TRANS_RESULT

识别最终结果。

EVENT_ASR_ERROR

语音识别过程中出现错误。