Skip to main content

Referencia de la API de reconocimiento de voz no en tiempo real (Qwen-ASR)

Parámetros de entrada y salida para el modelo Qwen-ASR. Llame a la API mediante el protocolo compatible con OpenAI o DashScope.

Tipos de conexión de modelos

Diferentes modelos admiten distintos tipos de conexión.

Modelo

Tipo de conexión

Qwen3-ASR-Flash-Filetrans

Solo se admite la invocación asíncrona de DashScope

Qwen3-ASR-Flash

Compatible con OpenAI y DashScope síncrono

Compatible con OpenAI

La región de EE. UU. no admite el modo compatible con OpenAI.

URL

  • Singapore
  • EE. UU. (Virginia)
  • China (Beijing)
Dirección de solicitud HTTP: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completionsbase_url para llamadas SDK: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1Reemplace {WorkspaceId} con su ID de espacio de trabajo real.Reemplace {WorkspaceId} con su ID de espacio de trabajo real.
Alibaba Cloud Model Studio ha lanzado dominios específicos del espacio de trabajo para las regiones China (Pekín) y Singapore. Los nuevos dominios dedicados ofrecen un rendimiento superior y una mayor estabilidad para las solicitudes de inferencia. Recomendamos migrar a los nuevos dominios:
  • China (Pekín): de dashscope.aliyuncs.com a {WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapur: de dashscope-intl.aliyuncs.com a {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com

Cuerpo de la solicitud

modelstring(Obligatorio)El nombre del modelo. Este parámetro solo aplica al modelo Qwen3-ASR-Flash.messagesarray(Obligatorio)La lista de mensajes.

Tipos de mensajes

Mensaje del sistema object (Opcional)Se utiliza para proporcionar contexto para el reconocimiento de voz, como texto de fondo y glosarios de entidades. No admite la configuración de roles de modelo u otras indicaciones tradicionales del sistema. Si usa un mensaje del sistema, debe ser el primer mensaje en la lista de messages.
rolestring(Obligatorio)Establecido en system.
Mensaje de usuario object(Obligatorio)El mensaje enviado por el usuario al modelo.
contentarray(Obligatorio)El contenido del mensaje del usuario. Solo se permite un mensaje en la matriz.

Propiedades

typestring(Obligatorio)Establecido en input_audio, lo que indica que la entrada es audio.input_audioobject(Obligatorio)El audio que se va a reconocer. Para obtener más información sobre cómo usar este parámetro, consulte Ejemplos de solicitud.input_audio.data acepta una URL de archivo de audio de acceso público o un URI de datos Base64. No se puede enviar directamente la ruta absoluta de un archivo local. Lea y codifique los archivos de audio locales como URI de datos antes de enviarlos.Cuando use un SDK, si el archivo de audio está almacenado en OSS, no se admiten las URL temporales que comienzan con oss://.Cuando use una API RESTful, si el archivo de audio está almacenado en OSS, se admiten las URL temporales que comienzan con oss://. Nota:
  • Las URL temporales son válidas durante 48 horas. Después de su vencimiento, no se pueden utilizar. No las utilice en entornos de producción.
  • La API de credenciales de carga de archivos tiene un límite de tasa de 100 QPS y no se puede escalar. No la utilice en escenarios de producción, alta concurrencia o pruebas de estrés.
  • Para entornos de producción, recomendamos utilizar servicios de almacenamiento estables como Alibaba Cloud OSS para garantizar la disponibilidad de archivos a largo plazo y evitar problemas de limitación de tasa.
rolestring(Obligatorio)El rol del mensaje de usuario. Configúrelo en user.
asr_optionsobject(Opcional)Especifica si se deben habilitar ciertas funciones.
asr_options no es un parámetro estándar de OpenAI. Con el SDK OpenAI para Python, páselo mediante extra_body. Con el SDK de Node.js, envíe asr_options como parámetro de nivel superior en el cuerpo de la solicitud.

Propiedades

language string (Opcional) Sin valor predeterminadoSi se conoce el idioma del audio, puede especificarlo mediante este parámetro para mejorar la precisión del reconocimiento.Solo puede especificar un idioma.Si el idioma del audio es incierto o incluye múltiples idiomas (como una mezcla de chino, inglés, japonés y coreano), no especifique este parámetro.
  • zh: Chino (Mandarín, Sichuanés, Minnan y Wu)
  • yue: Cantonés
  • en: Inglés
  • ja: Japonés
  • de: Alemán
  • ko: Coreano
  • ru: Ruso
  • fr: Francés
  • pt: Portugués
  • ar: Árabe
  • it: Italiano
  • es: Español
  • hi: Hindi
  • id: Indonesio
  • th: Tailandés
  • tr: Turco
  • uk: Ucraniano
  • vi: Vietnamita
  • cs: Checo
  • da: Danés
  • fil: Filipino
  • fi: Finés
  • is: Islandés
  • ms: Malayo
  • no: Noruego
  • pl: Polaco
  • sv: Sueco
enable_itnboolean (Opcional) Valor predeterminado: falseEspecifica si se debe habilitar la Normalización Inversa de Texto (ITN). Esta función solo aplica a audio en chino e inglés.
  • true
  • false (predeterminado)
streamboolean(Opcional) Valor predeterminado: falseEspecifica si se debe usar salida en streaming. Consulte Salida en streaming.Valores válidos:
  • false: El modelo devuelve el contenido completo después de la generación.
  • true: El modelo genera y emite contenido simultáneamente. Se devuelve un bloque de datos (chunk) cada vez que se genera una parte del contenido. Debe leer estos bloques en tiempo real para ensamblar la respuesta completa.
Configúrelo en true para reducir el riesgo de tiempos de espera de solicitud.stream_optionsobject(Opcional)Los elementos de configuración para la salida en streaming. Este parámetro solo tiene efecto cuando stream está establecido en true.

Propiedades

include_usageboolean(Opcional) Valor predeterminado: falseEspecifica si se debe incluir información de consumo de tokens en el último bloque de datos de la respuesta.Valores válidos:
  • true
  • false (predeterminado)
Durante la salida en streaming, la información de consumo de tokens aparece únicamente en el último bloque de datos de la respuesta.

Ejemplos de solicitud

Utilice el SDK OpenAI para Python versión 1.52.0 o posterior, o el SDK de Node.js versión 4.68.0 o posterior.
  • Entrada: URL del archivo de audio
  • Entrada: Archivo de audio codificado en Base64
  • SDK de Python
  • SDK de Node.js
  • cURL
from openai import OpenAI
import os

try:
    client = OpenAI(
        # The API Key differs between the Singapore/US regions and the Beijing region. Get an API Key: https://www.alibabacloud.com/help/model-studio/get-api-key
        # If you have not configured the environment variable, replace the following line with your Alibaba Cloud Model Studio API Key: api_key = "sk-xxx",
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # The following is the configuration for the Singapore region. When calling, replace "{WorkspaceId}" with your actual workspace ID. The configuration differs by region.
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
    )

    stream_enabled = False  # Whether to enable streaming output
    completion = client.chat.completions.create(
        model="qwen3-asr-flash",
        messages=[
            {
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ],
                "role": "user"
            }
        ],
        stream=stream_enabled,
        # When stream is set to False, the stream_options parameter cannot be set
        # stream_options={"include_usage": True},
        extra_body={
            "asr_options": {
                # "language": "zh",
                "enable_itn": False
            }
        }
    )
    if stream_enabled:
        full_content = ""
        print("The streaming output is:")
        for chunk in completion:
            # If stream_options.include_usage is True, the choices field of the last chunk is an empty list and needs to be skipped (you can get the Token usage via chunk.usage)
            print(chunk)
            if chunk.choices and chunk.choices[0].delta.content:
                full_content += chunk.choices[0].delta.content
        print(f"The complete content is: {full_content}")
    else:
        print(f"The non-streaming output is: {completion.choices[0].message.content}")
except Exception as e:
    print(f"Error message: {e}")

Cuerpo de respuesta

Qwen3-ASR-Flash no devuelve marcas de tiempo a través de la API compatible con OpenAI. Para obtener marcas de tiempo, utilice la serie Qwen-Audio-ASR-Filetrans. Para obtener detalles de integración, consulte la HTTP API.
Las etiquetas de emoción se devuelven en choices[].delta.annotations[].emotion para las respuestas con streaming y en choices[].message.annotations[].emotion para las respuestas sin streaming.idstringEl identificador único para esta llamada.choicesarrayLa información de salida del modelo.
finish_reasonstringValores válidos:
  • null: La salida aún se está generando.
  • stop: La salida finalizó naturalmente o fue terminada por una condición de parada.
  • length: La salida excedió el límite de longitud máxima.
indexintegerEl índice del objeto actual en el arreglo choices.messageobjectEl objeto de mensaje generado por el modelo.

Propiedades

rolestringEl rol del mensaje de salida. Configúrelo en assistant.contentstringEl resultado del reconocimiento de voz.annotationsarrayLa información de anotación de salida, como el idioma.

Propiedades

languagestringEl idioma del audio reconocido. Si se especifica el parámetro de solicitud language, este valor es el mismo que el parámetro especificado.
  • zh: Chino (Mandarín, Sichuanés, Minnan y Wu)
  • yue: Cantonés
  • en: Inglés
  • ja: Japonés
  • de: Alemán
  • ko: Coreano
  • ru: Ruso
  • fr: Francés
  • pt: Portugués
  • ar: Árabe
  • it: Italiano
  • es: Español
  • hi: Hindi
  • id: Indonesio
  • th: Tailandés
  • tr: Turco
  • uk: Ucraniano
  • vi: Vietnamita
  • cs: Checo
  • da: Danés
  • fil: Filipino
  • fi: Finés
  • is: Islandés
  • ms: Malayo
  • no: Noruego
  • pl: Polaco
  • sv: Sueco
typestringConfigúrelo en audio_info, que indica información de audio.emotionstringEl reconocimiento de emociones siempre está activado y no requiere configuración adicional. La emoción del audio reconocido. Se admiten las siguientes emociones:
  • surprised: sorprendido
  • neutral: neutro
  • happy: feliz
  • sad: triste
  • disgusted: asqueado
  • angry: enojado
  • fearful: temeroso
createdintegerLa marca de tiempo UNIX (en segundos) en la que se creó la solicitud.modelstringEl modelo utilizado para esta solicitud.objectstringSiempre chat.completion.usageobjectLa información de consumo de tokens para esta solicitud.

Propiedades

completion_tokens integerEl número de tokens en la salida del modelo.completion_tokens_details objectLos detalles detallados de los tokens en la salida del modelo.
text_tokens integerEl número de tokens en el texto de salida del modelo.
prompt_tokens objectEl número de tokens en la entrada.prompt_tokens_details objectLos detalles detallados de los tokens en la entrada.
audio_tokens integerLa longitud del audio de entrada en tokens. Regla de conversión de audio a token: Cada segundo de audio se convierte en 25 tokens. Las duraciones menores a 1 segundo se cuentan como 1 segundo.text_tokens integerPuede ignorar este parámetro.
seconds integerLa duración del audio en segundos.total_tokens integerEl número total de tokens de entrada y salida (total_tokens = completion_tokens + prompt_tokens).
{
    "choices": [
        {
            "finish_reason": "stop",
            "index": 0,
            "message": {
                "annotations": [
                    {
                        "emotion": "neutral",
                        "language": "zh",
                        "type": "audio_info"
                    }
                ],
                "content": "Welcome to Alibaba Cloud.",
                "role": "assistant"
            }
        }
    ],
    "created": 1767683986,
    "id": "chatcmpl-487abe5f-d4f2-9363-a877-xxxxxxx",
    "model": "qwen3-asr-flash",
    "object": "chat.completion",
    "usage": {
        "completion_tokens": 12,
        "completion_tokens_details": {
            "text_tokens": 12
        },
        "prompt_tokens": 42,
        "prompt_tokens_details": {
            "audio_tokens": 42,
            "text_tokens": 0
        },
        "seconds": 1,
        "total_tokens": 54
    }
}

DashScope síncrono

URL

  • Singapore
  • EE. UU. (Virginia)
  • China (Beijing)
Dirección de solicitud HTTP: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generationbase_url para llamadas SDK: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1Reemplace {WorkspaceId} con su ID de espacio de trabajo real.Reemplace {WorkspaceId} con su ID de espacio de trabajo real.
Alibaba Cloud Model Studio ha lanzado dominios específicos del espacio de trabajo para las regiones China (Pekín) y Singapore. Los nuevos dominios dedicados ofrecen un rendimiento superior y una mayor estabilidad para las solicitudes de inferencia. Recomendamos migrar a los nuevos dominios:
  • China (Pekín): de dashscope.aliyuncs.com a {WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapur: de dashscope-intl.aliyuncs.com a {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com

Cuerpo de la solicitud

modelstring(Obligatorio)El nombre del modelo. Este parámetro solo aplica al modelo Qwen3-ASR-Flash.messagesarray(Obligatorio)La lista de mensajes.
Cuando realice una llamada HTTP, coloque messages en el objeto input.

Tipos de mensajes

Mensaje del sistema object (Opcional)Se utiliza para proporcionar contexto para el reconocimiento de voz, como texto de fondo y glosarios de entidades. No admite la configuración de roles de modelo u otras indicaciones tradicionales del sistema. Si configura un mensaje del sistema, colóquelo al principio de la lista de mensajes.Solo Qwen3-ASR-Flash admite este parámetro.
rolestring(Obligatorio)Establecido en system.
Mensaje de usuario object(Obligatorio)El mensaje enviado por el usuario al modelo.
contentarray(Obligatorio)El contenido del mensaje del usuario. Solo se permite un mensaje en la matriz.

Propiedades

audiostring(Obligatorio)El audio que se va a reconocer. Para obtener más información sobre cómo usar este parámetro, consulte Ejemplos de solicitud.Cuando use DashScope, el modelo Qwen3-ASR-Flash admite tres formatos de entrada: archivos codificados en Base64, rutas absolutas de archivos locales y URL de archivos de audio accesibles a través de la red pública.Cuando use un SDK, si el archivo de audio está almacenado en OSS, no se admiten las URL temporales que comienzan con oss://.Cuando use una API RESTful, si el archivo de audio está almacenado en OSS, se admiten las URL temporales que comienzan con oss://. Nota:
  • Las URL temporales son válidas durante 48 horas. Después de su vencimiento, no se pueden utilizar. No las utilice en entornos de producción.
  • La API de credenciales de carga de archivos tiene un límite de tasa de 100 QPS y no se puede escalar. No la utilice en escenarios de producción, alta concurrencia o pruebas de estrés.
  • Para entornos de producción, recomendamos utilizar servicios de almacenamiento estables como Alibaba Cloud OSS para garantizar la disponibilidad de archivos a largo plazo y evitar problemas de limitación de tasa.
rolestring(Obligatorio)El rol del mensaje de usuario. Configúrelo en user.
asr_optionsobject(Opcional)Especifica si se deben habilitar ciertas funciones.Este parámetro solo es compatible con el modelo Qwen3-ASR-Flash.

Propiedades

language string (Opcional) Sin valor predeterminadoSi se conoce el idioma del audio, puede especificarlo mediante este parámetro para mejorar la precisión del reconocimiento.Solo puede especificar un idioma.Si el idioma del audio es incierto o incluye múltiples idiomas (como una mezcla de chino, inglés, japonés y coreano), no especifique este parámetro.
  • zh: Chino (Mandarín, Sichuanés, Minnan y Wu)
  • yue: Cantonés
  • en: Inglés
  • ja: Japonés
  • de: Alemán
  • ko: Coreano
  • ru: Ruso
  • fr: Francés
  • pt: Portugués
  • ar: Árabe
  • it: Italiano
  • es: Español
  • hi: Hindi
  • id: Indonesio
  • th: Tailandés
  • tr: Turco
  • uk: Ucraniano
  • vi: Vietnamita
  • cs: Checo
  • da: Danés
  • fil: Filipino
  • fi: Finés
  • is: Islandés
  • ms: Malayo
  • no: Noruego
  • pl: Polaco
  • sv: Sueco
enable_itnboolean (Opcional) Valor predeterminado: falseEspecifica si se debe habilitar la Normalización Inversa de Texto (ITN). Esta función solo aplica a audio en chino e inglés.
  • true
  • false (predeterminado)

Ejemplos de solicitud

Qwen3-ASR-Flash admite grabaciones de hasta 5 minutos de duración, acepta una URL de archivo de audio público o una carga de archivo local como entrada, y puede devolver resultados de reconocimiento en modo streaming.
  • Entrada: URL del archivo de audio
  • Entrada: Archivo de audio codificado en Base64
  • Entrada: ruta absoluta de un archivo de audio local
  • Salida de transmisión
curl -X POST "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3-asr-flash",
    "input": {
        "messages": [
            {
                "content": [
                    {
                        "audio": "{YOUR_AUDIO_URL}"
                    }
                ],
                "role": "user"
            }
        ]
    },
    "parameters": {
        "asr_options": {
            "enable_itn": false
        }
    }
}'

Cuerpo de respuesta

request_idstringEl identificador único para esta llamada.
El parámetro devuelto por el SDK de Java es requestId.
outputobjectLa información del resultado de la llamada.

Propiedades

choicesarrayLa salida del modelo. Se devuelve cuando result_format es message.
finish_reasonstringValores válidos:
  • null: La salida aún se está generando.
  • stop: La salida finalizó naturalmente o fue terminada por una condición de parada.
  • length: La salida excedió el límite de longitud máxima.
messageobjectEl objeto de mensaje generado por el modelo.

Propiedades

rolestringEl rol del mensaje de salida. Configúrelo en assistant.contentarrayEl contenido del mensaje de salida.

Propiedades

textstringEl resultado del reconocimiento de voz.
annotationsarrayLa información de anotación de salida, como el idioma.

Propiedades

languagestringEl idioma del audio reconocido. Si se especifica el parámetro de solicitud language, este valor es el mismo que el parámetro especificado.
  • zh: Chino (Mandarín, Sichuanés, Minnan y Wu)
  • yue: Cantonés
  • en: Inglés
  • ja: Japonés
  • de: Alemán
  • ko: Coreano
  • ru: Ruso
  • fr: Francés
  • pt: Portugués
  • ar: Árabe
  • it: Italiano
  • es: Español
  • hi: Hindi
  • id: Indonesio
  • th: Tailandés
  • tr: Turco
  • uk: Ucraniano
  • vi: Vietnamita
  • cs: Checo
  • da: Danés
  • fil: Filipino
  • fi: Finés
  • is: Islandés
  • ms: Malayo
  • no: Noruego
  • pl: Polaco
  • sv: Sueco
typestringConfigúrelo en audio_info, que indica información de audio.emotionstringEl reconocimiento de emociones siempre está activado y no requiere configuración adicional. La emoción del audio reconocido. Se admiten las siguientes emociones:
  • surprised: sorprendido
  • neutral: neutro
  • happy: feliz
  • sad: triste
  • disgusted: asqueado
  • angry: enojado
  • fearful: temeroso
usageobjectLa información de consumo de tokens para esta solicitud.

Propiedades

input_tokens_details objectLa longitud del contenido de entrada para Qwen3-ASR-Flash en tokens.
text_tokens integerPuede ignorar este parámetro.
output_tokens_details objectLa longitud del contenido de salida de Qwen3-ASR-Flash en tokens.
text_tokens integerLa longitud del texto reconocido generado por Qwen3-ASR-Flash en tokens.
seconds integerLa duración del audio para Qwen3-ASR-Flash en segundos.
{
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "annotations": [
                        {
                            "language": "zh",
                            "type": "audio_info",
                            "emotion": "neutral"
                        }
                    ],
                    "content": [
                        {
                            "text": "Welcome to Alibaba Cloud."
                        }
                    ],
                    "role": "assistant"
                }
            }
        ]
    },
    "usage": {
        "input_tokens_details": {
            "text_tokens": 0
        },
        "output_tokens_details": {
            "text_tokens": 6
        },
        "seconds": 1
    },
    "request_id": "568e2bf0-d6f2-97f8-9f15-a57b11dc6977"
}

Invocación asíncrona de DashScope

Descripción del proceso

La invocación asíncrona está diseñada para archivos de audio largos o tareas que consumen mucho tiempo. Utiliza un proceso de dos pasos "enviar-sondear" para evitar tiempos de espera en las solicitudes:
  1. Paso 1: Enviar una tarea
    • El cliente inicia una solicitud de procesamiento asíncrono.
    • Después de validar la solicitud, el servidor no ejecuta la tarea inmediatamente. En su lugar, devuelve un task_id único, lo que indica que la tarea se ha creado correctamente.
  2. Paso 2: Obtener el resultado
    • El cliente utiliza el task_id para sondear la API de consulta de resultados.
    • Cuando la tarea se completa, la API de consulta de resultados devuelve el resultado final de reconocimiento.
Puede optar por usar un SDK o llamar directamente a la API RESTful según su entorno de integración.
  • Use un SDK. Para código de ejemplo, consulte Ejemplos de solicitud. Para parámetros de solicitud, consulte el Cuerpo de la solicitud de la operación Enviar una tarea. Para información sobre la respuesta, consulte Descripción de los resultados de llamadas asíncronas. Los SDK manejan automáticamente los detalles subyacentes de la llamada a la API.
    1. Enviar una tarea: Llame al método async_call() (Python) o asyncCall() (Java) para enviar la tarea. Este método devuelve un objeto de tarea que contiene un task_id.
    2. Obtener el resultado: Use el objeto de tarea devuelto en el paso anterior o el task_id para llamar al método fetch() y recuperar el resultado. El SDK maneja automáticamente la lógica interna de sondeo hasta que la tarea se complete o expire.
  • Utilizar una API RESTful Llamar directamente a la API RESTful proporciona la máxima flexibilidad.
    1. Enviar la tarea. Si la solicitud es exitosa, el cuerpo de la respuesta contendrá un task_id.
    2. Use el task_id del paso anterior para recuperar el resultado de ejecución de la tarea.

Ejemplo completo

  • HTTP
  • SDK de Java
  • SDK de Python
  • Descargar el resultado de reconocimiento
Java
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
import okhttp3.*;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

public class Main {
    // The following is the configuration for the Singapore region. When calling, replace "{WorkspaceId}" with your actual workspace ID. The configuration differs by region.
    private static final String API_URL_SUBMIT = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcription";
    // The following is the configuration for the Singapore region. When calling, replace "{WorkspaceId}" with your actual workspace ID. The configuration differs by region.
    private static final String API_URL_QUERY = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/";
    private static final Gson gson = new Gson();

    public static void main(String[] args) {
        // The API Key differs between the Singapore and Beijing regions. Get an API Key: https://www.alibabacloud.com/help/model-studio/get-api-key
        // If you have not configured the environment variable, replace the following line with your Alibaba Cloud Model Studio API Key: String apiKey = "sk-xxx"
        String apiKey = System.getenv("DASHSCOPE_API_KEY");

        OkHttpClient client = new OkHttpClient();

        // 1. Submit the task
        /*String payloadJson = """
                {
                    "model": "qwen3-asr-flash-filetrans",
                    "input": {
                        "file_url": "{YOUR_AUDIO_URL}"
                    },
                    "parameters": {
                        "channel_id": [0],
                        "enable_itn": false,
                        "language": "zh"
                    }
                }
                """;*/
        String payloadJson = """
                {
                    "model": "qwen3-asr-flash-filetrans",
                    "input": {
                        "file_url": "{YOUR_AUDIO_URL}"
                    },
                    "parameters": {
                        "channel_id": [0],
                        "enable_itn": false,
                        "enable_words": true
                    }
                }
                """;

        RequestBody body = RequestBody.create(payloadJson, MediaType.get("application/json; charset=utf-8"));
        Request submitRequest = new Request.Builder()
                .url(API_URL_SUBMIT)
                .addHeader("Authorization", "Bearer " + apiKey)
                .addHeader("Content-Type", "application/json")
                .addHeader("X-DashScope-Async", "enable")
                .post(body)
                .build();

        String taskId = null;

        try (Response response = client.newCall(submitRequest).execute()) {
            if (response.isSuccessful() && response.body() != null) {
                String respBody = response.body().string();
                ApiResponse apiResp = gson.fromJson(respBody, ApiResponse.class);
                if (apiResp.output != null) {
                    taskId = apiResp.output.taskId;
                    System.out.println("Task submitted, task_id: " + taskId);
                } else {
                    System.out.println("Submission response content: " + respBody);
                    return;
                }
            } else {
                System.out.println("Task submission failed! HTTP code: " + response.code());
                if (response.body() != null) {
                    System.out.println(response.body().string());
                }
                return;
            }
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }

        // 2. Poll the task status
        boolean finished = false;
        while (!finished) {
            try {
                TimeUnit.SECONDS.sleep(2);  // Wait 2 seconds before querying again
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
                return;
            }

            String queryUrl = API_URL_QUERY + taskId;
            Request queryRequest = new Request.Builder()
                    .url(queryUrl)
                    .addHeader("Authorization", "Bearer " + apiKey)
                    .addHeader("Content-Type", "application/json")
                    .get()
                    .build();

            try (Response response = client.newCall(queryRequest).execute()) {
                if (response.body() != null) {
                    String queryResponse = response.body().string();
                    ApiResponse apiResp = gson.fromJson(queryResponse, ApiResponse.class);

                    if (apiResp.output != null && apiResp.output.taskStatus != null) {
                        String status = apiResp.output.taskStatus;
                        System.out.println("Current task status: " + status);
                        if ("SUCCEEDED".equalsIgnoreCase(status)
                                || "FAILED".equalsIgnoreCase(status)
                                || "UNKNOWN".equalsIgnoreCase(status)) {
                            finished = true;
                            System.out.println("Task completed, final result: ");
                            System.out.println(queryResponse);
                        }
                    } else {
                        System.out.println("Query response content: " + queryResponse);
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
                return;
            }
        }
    }

    static class ApiResponse {
        @SerializedName("request_id")
        String requestId;
        Output output;
    }

    static class Output {
        @SerializedName("task_id")
        String taskId;
        @SerializedName("task_status")
        String taskStatus;
    }
}

Enviar una tarea

URL

  • Singapore
  • China (Beijing)
Dirección de solicitud HTTP: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcriptionbase_url para llamadas SDK: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1Reemplace {WorkspaceId} con su ID de espacio de trabajo real.Reemplace {WorkspaceId} con su ID de espacio de trabajo real.
Alibaba Cloud Model Studio ha lanzado dominios específicos del espacio de trabajo para las regiones China (Pekín) y Singapore. Los nuevos dominios dedicados ofrecen un rendimiento superior y una mayor estabilidad para las solicitudes de inferencia. Recomendamos migrar a los nuevos dominios:
  • China (Pekín): de dashscope.aliyuncs.com a {WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapur: de dashscope-intl.aliyuncs.com a {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com

Cuerpo de la solicitud

modelstring(Obligatorio)El nombre del modelo. Este parámetro solo aplica al modelo Qwen3-ASR-Flash-Filetrans.inputobject(Obligatorio)

Propiedades

file_url string(Obligatorio)La URL del archivo de audio que se va a reconocer. La URL debe ser accesible a través de la red pública.Cuando use un SDK, si el archivo de audio está almacenado en OSS, no se admiten las URL temporales que comienzan con oss://.Cuando use una API RESTful, si el archivo de audio está almacenado en OSS, se admiten las URL temporales que comienzan con oss://. Nota:
  • Las URL temporales son válidas durante 48 horas. Después de su vencimiento, no se pueden utilizar. No las utilice en entornos de producción.
  • La API de credenciales de carga de archivos tiene un límite de tasa de 100 QPS y no se puede escalar. No la utilice en escenarios de producción, alta concurrencia o pruebas de estrés.
  • Para entornos de producción, recomendamos utilizar servicios de almacenamiento estables como Alibaba Cloud OSS para garantizar la disponibilidad de archivos a largo plazo y evitar problemas de limitación de tasa.
parametersobject(Opcional)

Propiedades

language string (Opcional) Sin valor predeterminadoSi se conoce el idioma del audio, puede especificarlo mediante este parámetro para mejorar la precisión del reconocimiento.Solo puede especificar un idioma.Si el idioma del audio es incierto o incluye múltiples idiomas (como una mezcla de chino, inglés, japonés y coreano), no especifique este parámetro.
  • zh: Chino (Mandarín, Sichuanés, Minnan y Wu)
  • yue: Cantonés
  • en: Inglés
  • ja: Japonés
  • de: Alemán
  • ko: Coreano
  • ru: Ruso
  • fr: Francés
  • pt: Portugués
  • ar: Árabe
  • it: Italiano
  • es: Español
  • hi: Hindi
  • id: Indonesio
  • th: Tailandés
  • tr: Turco
  • uk: Ucraniano
  • vi: Vietnamita
  • cs: Checo
  • da: Danés
  • fil: Filipino
  • fi: Finés
  • is: Islandés
  • ms: Malayo
  • no: Noruego
  • pl: Polaco
  • sv: Sueco
enable_itnboolean (Opcional) Valor predeterminado: falseEspecifica si se debe habilitar la Normalización Inversa de Texto (ITN). Esta función solo aplica a audio en chino e inglés.
  • true
  • false (predeterminado)
enable_wordsboolean(Opcional) Valor predeterminado: falseEspecifica si se deben devolver marcas de tiempo a nivel de palabra:
  • false: Devuelve marcas de tiempo a nivel de oración.
  • true: Devuelve marcas de tiempo a nivel de palabra. Las marcas de tiempo a nivel de palabra solo son compatibles con los siguientes idiomas: chino, inglés, japonés, coreano, alemán, francés, español, italiano, portugués y ruso. No se puede garantizar la precisión para otros idiomas.
Este parámetro también afecta las reglas de segmentación de oraciones:
  • false: La segmentación de oraciones se basa en la Detección de Actividad de Voz (VAD).
  • true: La segmentación de oraciones se basa en VAD y puntuación.
channel_idarray(Opcional) Valor predeterminado: [0]Especifica los índices de las pistas de audio que se van a reconocer en un archivo de audio multipista. El índice comienza en 0. Por ejemplo, [0] indica que se reconoce la primera pista de audio, y [0, 1] indica que la primera y la segunda pista de audio se reconocen simultáneamente. Si se omite este parámetro, la primera pista de audio se procesa de forma predeterminada.
Cada pista de audio especificada se factura por separado. Por ejemplo, solicitar [0, 1] para un solo archivo incurrirá en dos cargos separados.
  • cURL
  • Java
  • Python
# ======= Important =======
# The following configuration is for the Singapore region. Replace "{WorkspaceId}" with your actual workspace ID. The configuration varies by region.
# The API keys for the Singapore and Beijing regions are different. For more information about how to obtain an API key, see https://www.alibabacloud.com/help/model-studio/get-api-key
# === Delete this comment before running the command. ===

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/asr/transcription' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--header "X-DashScope-Async: enable" \
--data '{
    "model": "qwen3-asr-flash-filetrans",
    "input": {
        "file_url": "{YOUR_AUDIO_URL}"
    },
    "parameters": {
        "channel_id":[
            0
        ],
        "enable_itn": false
    }
}'

Cuerpo de respuesta

request_idstringEl identificador único para esta llamada.outputobjectLa información del resultado de la llamada.

Propiedades

task_idstringEl ID de la tarea. Este ID se pasa como parámetro de solicitud en la API para consultar tareas de reconocimiento de voz.task_statusstringEl estado de la tarea:
  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • UNKNOWN: La tarea no existe o se desconoce su estado.
{
    "request_id": "92e3decd-0c69-47a8-************",
    "output": {
        "task_id": "8fab76d0-0eed-4d20-************",
        "task_status": "PENDING"
    }
}

Obtener el resultado de ejecución de la tarea

URL

  • Singapore
  • China (Beijing)
Dirección de solicitud HTTP: GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}base_url para llamadas SDK: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1Reemplace {WorkspaceId} con su ID de espacio de trabajo real.Reemplace {WorkspaceId} con su ID de espacio de trabajo real.
Alibaba Cloud Model Studio ha lanzado dominios específicos del espacio de trabajo para las regiones China (Pekín) y Singapore. Los nuevos dominios dedicados ofrecen un rendimiento superior y una mayor estabilidad para las solicitudes de inferencia. Recomendamos migrar a los nuevos dominios:
  • China (Pekín): de dashscope.aliyuncs.com a {WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapur: de dashscope-intl.aliyuncs.com a {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com

Cuerpo de la solicitud

task_idstring(Obligatorio)El ID de la tarea. Pase el task_id de la respuesta de la operación Enviar una tarea para consultar el resultado de reconocimiento de voz.
  • cURL
  • Java
  • Python
# ======= Important =======
# The following configuration is for the Singapore region. Replace "{WorkspaceId}" with your actual workspace ID. The configuration varies by region.
# The API keys for the Singapore and Beijing regions are different. For more information about how to obtain an API key, see https://www.alibabacloud.com/help/model-studio/get-api-key
# === Delete this comment before running the command. ===

curl --location --request GET 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json"

Cuerpo de respuesta

request_idstringEl identificador único para esta llamada.outputobjectLa información del resultado de la llamada.

Propiedades

task_idstringEl ID de la tarea. Este ID se pasa como parámetro de solicitud en la API para consultar tareas de reconocimiento de voz.task_statusstringEl estado de la tarea:
  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • UNKNOWN: La tarea no existe o se desconoce su estado.
resultobjectEl resultado del reconocimiento de voz.
transcription_urlstringLa URL de descarga para el archivo de resultados de reconocimiento. El enlace es válido durante 24 horas. Una vez que el enlace caduca, no puede consultar la tarea ni descargar el resultado utilizando la URL anterior.
El resultado de reconocimiento se guarda como un archivo JSON. Puede descargar el archivo desde este enlace o leer el contenido del archivo directamente mediante una solicitud HTTP.
Para más información, consulte Descripción de los resultados de llamadas asíncronas.
submit_timestringLa hora en que se envió la tarea.schedule_timestringEl momento en que se programó la tarea, que corresponde a la hora de inicio de la ejecución.end_timestringLa hora en que finalizó la tarea.task_metricsobjectMétricas de la tarea, que incluyen estadísticas sobre el estado de las subtareas.
TOTALintegerEl número total de subtareas.SUCCEEDEDintegerEl número de subtareas exitosas.FAILEDintegerEl número de subtareas fallidas.
codestringEl código de error. Esto se devuelve solo cuando la tarea falla.messagestringEl mensaje de error. Esto se devuelve solo cuando la tarea falla.usageobjectLa información de consumo de tokens para esta solicitud.
seconds integerLa duración del audio para Qwen3-ASR-Flash en segundos.
{
    "request_id": "6769df07-2768-4fb0-ad59-************",
    "output": {
        "task_id": "9be1700a-0f8e-4778-be74-************",
        "task_status": "RUNNING",
        "submit_time": "2025-10-27 14:19:31.150",
        "scheduled_time": "2025-10-27 14:19:31.233",
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 0,
            "FAILED": 0
        }
    }
}

Descripción de los resultados de llamadas asíncronas

file_url stringLa URL del archivo de audio reconocido.audio_infoobjectInformación sobre el archivo de audio reconocido.

Propiedades

format stringEl formato de audio.sample_rate integerLa tasa de muestreo del audio.
transcriptsarrayUna lista de resultados de reconocimiento completos. Cada elemento corresponde al contenido reconocido de una pista de audio.

Propiedades

channel_idintegerEl índice de la pista de audio, comenzando desde 0.textstringEl texto reconocido.sentencesobjectUna lista de resultados de reconocimiento a nivel de oración.

Propiedades

begin_time integerLa marca de tiempo inicial de la oración en milisegundos.end_time integerLa marca de tiempo final de la oración en milisegundos.textstringEl texto reconocido.sentence_idintegerEl índice de la oración, comenzando desde 0.languagestringEl idioma del audio reconocido. Si se especifica el parámetro de solicitud language, este valor es el mismo que el parámetro especificado.
  • zh: Chino (Mandarín, Sichuanés, Minnan y Wu)
  • yue: Cantonés
  • en: Inglés
  • ja: Japonés
  • de: Alemán
  • ko: Coreano
  • ru: Ruso
  • fr: Francés
  • pt: Portugués
  • ar: Árabe
  • it: Italiano
  • es: Español
  • hi: Hindi
  • id: Indonesio
  • th: Tailandés
  • tr: Turco
  • uk: Ucraniano
  • vi: Vietnamita
  • cs: Checo
  • da: Danés
  • fil: Filipino
  • fi: Finés
  • is: Islandés
  • ms: Malayo
  • no: Noruego
  • pl: Polaco
  • sv: Sueco
emotionstringEl reconocimiento de emociones siempre está activado y no requiere configuración adicional. La emoción del audio reconocido. Se admiten las siguientes emociones:
  • surprised
  • neutral
  • happy
  • sad
  • disgusted
  • angry
  • fearful
wordsobjectUna lista de resultados de reconocimiento a nivel de palabra. Este resultado se muestra cuando el parámetro de solicitud enable_words se establece en true.

Propiedades

begin_time integerLa marca de tiempo inicial en milisegundos.end_time integerLa marca de tiempo final en milisegundos.textstringEl texto reconocido.punctuationstringEl signo de puntuación.
{
    "file_url": "https://***.wav",
    "audio_info": {
        "format": "wav",
        "sample_rate": 16000
    },
    "transcripts": [
        {
            "channel_id": 0,
            "text": "Senior staff, Principal Doris Jackson, Wakefield faculty, and of course my fellow classmates.I am honored to have been chosen to speak before my classmates along with the students across America today.",
            "sentences": [
                {
                    "sentence_id": 0,
                    "begin_time": 240,
                    "end_time": 6720,
                    "language": "en",
                    "emotion": "happy",
                    "text": "Senior staff, Principal Doris Jackson, Wakefield faculty, and of course my fellow classmates.",
                    "words": [
                        {
                            "begin_time": 240,
                            "end_time": 1120,
                            "text": "Senior ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 1120,
                            "end_time": 1200,
                            "text": "staff",
                            "punctuation": ","
                        },
                        {
                            "begin_time": 1680,
                            "end_time": 1920,
                            "text": " Principal ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 2000,
                            "end_time": 2320,
                            "text": "Doris ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 2320,
                            "end_time": 2960,
                            "text": "Jackson",
                            "punctuation": ","
                        },
                        {
                            "begin_time": 3360,
                            "end_time": 3840,
                            "text": " Wakefield ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 3840,
                            "end_time": 4480,
                            "text": "faculty",
                            "punctuation": ","
                        },
                        {
                            "begin_time": 4800,
                            "end_time": 4960,
                            "text": " and ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 4960,
                            "end_time": 5040,
                            "text": "of ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 5040,
                            "end_time": 5520,
                            "text": "course ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 5520,
                            "end_time": 5680,
                            "text": "my ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 5760,
                            "end_time": 6000,
                            "text": "fellow ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 6000,
                            "end_time": 6720,
                            "text": "classmates",
                            "punctuation": "."
                        }
                    ]
                },
                {
                    "sentence_id": 1,
                    "begin_time": 12268,
                    "end_time": 17388,
                    "language": "en",
                    "emotion": "neutral",
                    "text": "I am honored to have been chosen to speak before my classmates along with the students across America today.",
                    "words": [
                        {
                            "begin_time": 12268,
                            "end_time": 12428,
                            "text": "I ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 12428,
                            "end_time": 12508,
                            "text": "am ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 12588,
                            "end_time": 12828,
                            "text": "honored ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 12908,
                            "end_time": 12908,
                            "text": "to ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 12908,
                            "end_time": 13068,
                            "text": "have ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 13068,
                            "end_time": 13228,
                            "text": "been ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 13228,
                            "end_time": 13628,
                            "text": "chosen ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 13628,
                            "end_time": 13708,
                            "text": "to ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 13708,
                            "end_time": 14028,
                            "text": "speak ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 14028,
                            "end_time": 14268,
                            "text": "before ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 14268,
                            "end_time": 14428,
                            "text": "my ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 14428,
                            "end_time": 15148,
                            "text": "classmates ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15308,
                            "end_time": 15468,
                            "text": "as ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15468,
                            "end_time": 15628,
                            "text": "well ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15628,
                            "end_time": 15788,
                            "text": "as ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15788,
                            "end_time": 15788,
                            "text": "the ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 15788,
                            "end_time": 16188,
                            "text": "students ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 16188,
                            "end_time": 16588,
                            "text": "across ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 16588,
                            "end_time": 16988,
                            "text": "America ",
                            "punctuation": ""
                        },
                        {
                            "begin_time": 16988,
                            "end_time": 17388,
                            "text": "today",
                            "punctuation": "."
                        }
                    ]
                }
            ]
        }
    ]
}