Todos los productos
Search
Centro de documentos

Alibaba Cloud Model Studio:API HTTP de reconocimiento de voz no en tiempo real (Qwen-Audio-3.x-ASR-Flash/Fun-ASR-Flash)

Última actualización: Oct 12, 2026

Este tema describe los parámetros y detalles de la interfaz de la API HTTP de reconocimiento de voz no en tiempo real de Qwen-Audio-3.x-ASR-Flash/Fun-ASR-Flash.

Guía del usuario: Reconocimiento de voz no en tiempo real. Para los requisitos de entrada, como formatos de audio compatibles, límites de tamaño de archivo y límites de duración, consulte Especificaciones de audio.

Endpoints de servicio

Singapore

POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

Reemplace {WorkspaceId} con su ID de espacio de trabajo real.

China (Beijing)

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

Reemplace {WorkspaceId} con su ID de espacio de trabajo real.

ImportanteAlibaba 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

Reemplace {WorkspaceId} con su ID de espacio de trabajo real. Los dominios existentes permanecen totalmente funcionales.

Encabezados de solicitud

Parámetro

Tipo

Obligatorio

Descripción

Authorization

string

Sí

El token de autenticación, en el formato Bearer <your_api_key>. Reemplace "<your_api_key>" con su clave API real.

Content-Type

string

Sí

El tipo de medio del cuerpo de la solicitud. Fijado en application/json.

X-DashScope-SSE

string

Sí

Controla si los resultados se devuelven como un flujo SSE. Establezca en enable para activar el flujo SSE. El servidor devuelve resultados de reconocimiento intermedios y finales en múltiples mensajes solo para audio que tenga al menos 1 minuto de duración. Establezca en disable u omita el parámetro para devolver únicamente el resultado final.

Cuerpo de la solicitud

modelstring(Obligatorio)

El nombre del modelo. Se admiten las series de modelos Qwen-Audio-3.x-ASR-Flash y Fun-ASR-Flash. Para más detalles, consulte Modelos y regiones admitidos.

inputobject(Obligatorio)

La información de entrada.

Propiedades

messagesarray(object)(Obligatorio)

La lista de mensajes. Contiene el audio a reconocer y, opcionalmente, el contexto de conversación que mejora la precisión del reconocimiento.

ImportanteLa función de contexto mejora la precisión del reconocimiento de términos específicos del dominio. Para su uso, consulte Mejora de contexto.

Restricciones: Una solicitud puede incluir como máximo 5 mensajes de contexto de cada tipo (input_text y text). Si excede este límite, solo se conservan los 5 mensajes más recientes. El texto de contexto total por turno (la longitud combinada de los campos text en los mensajes user y assistant) no puede exceder 400 caracteres, donde cada carácter cuenta como 1. Cualquier exceso se trunca desde el final.

ImportanteCuando incluye contexto, el orden de los mensajes en messages es importante: los mensajes de contexto deben organizarse por turno de conversación. Dentro de cada turno, el mensaje user (de tipo input_text) debe aparecer antes del mensaje assistant correspondiente (de tipo text). El mensaje user que contiene input_audio debe ser el último elemento en el arreglo messages.

Propiedades

rolestring(Obligatorio)

El rol del mensaje. Valores válidos:

  • user (Obligatorio): Un mensaje de usuario. Cuando el tipo es input_audio, contiene el audio a reconocer. Cuando el tipo es input_text, contiene resultados de reconocimiento de turnos anteriores o una lista de palabras específicas del dominio (opcional, utilizada como contexto).
  • assistant (Opcional, contexto): Respuestas del modelo de lenguaje grande en turnos anteriores.

contentarray(object)(Obligatorio)

La lista de contenido del mensaje.

Propiedades

typestring(Obligatorio)

El tipo de contenido. Cada solicitud necesita al menos un mensaje de tipo input_audio. Valores válidos:

  • input_audio (Obligatorio): La entrada de audio a reconocer (el rol es usuario). También debe pasar el objeto input_audio.
  • input_text (Opcional, contexto): Resultados de reconocimiento del habla del usuario de turnos anteriores, o una lista de palabras específicas del dominio (el rol es usuario). También debe pasar el campo text.
  • text (Opcional, contexto): Respuestas del modelo de lenguaje grande en turnos anteriores (el rol es asistente). También debe pasar el campo text.

input_audioobject(Condicionalmente obligatorio)

Requerido cuando type es input_audio.

Propiedades

datastring(Obligatorio)

Los datos de audio a reconocer. Para los requisitos de entrada, como formatos de audio compatibles, límites de tamaño de archivo y límites de duración, consulte Especificaciones de audio. Se admiten dos métodos:

  • URL del archivo de audio: Pase una URL de acceso público al archivo de audio.
  • URI de datos Base64: Pase los datos de audio codificados en Base64 como un URI de datos. El valor es el prefijo data:{MIME_TYPE};base64, concatenado con los datos de audio codificados en Base64. Los tipos MIME admitidos incluyen audio/wav y audio/mp3.

Ejemplo (URL): https://example.com/audio/sample.wav

Ejemplo (Base64): data:audio/wav;base64,{BASE64_ENCODED_DATA}

textstring(Condicionalmente obligatorio)

Cuando type es input_text, ingrese los resultados de reconocimiento del habla del usuario de turnos anteriores o una lista de palabras específicas del dominio. Cuando type es text, ingrese las respuestas del modelo de lenguaje grande de turnos anteriores. La longitud del texto se mide en caracteres, donde cada carácter cuenta como 1. La longitud combinada de los campos text en todos los mensajes de un solo turno de contexto no puede exceder 400 caracteres. Cualquier exceso se trunca desde el final.

parametersobject(Obligatorio)

Los parámetros del modelo.

NotaLa corrección de texto está deshabilitada de forma predeterminada y aún no está disponible para Qwen-Audio-3.0-ASR-Flash y Fun-ASR-Flash. Qwen-Audio-3.1-ASR-Flash admite la corrección nativa de texto.

Pulido de texto: Mientras transcribe el habla, el modelo elimina automáticamente palabras de relleno sin significado y repeticiones tartamudeadas, maneja las autocorrecciones realizadas durante el habla, suaviza las expresiones coloquiales y estandariza la puntuación y el formato del texto. Esto da como resultado una salida más concisa, fluida y legible, preservando al mismo tiempo la intención original del usuario y la información clave tanto como sea posible.

Propiedades

speaker_diarization_enabled boolean (Opcional)

Compatible solo con qwen-audio-3.1-asr-flash. Especifica si se debe habilitar la diarización de hablantes. Valor predeterminado: false. Cuando se establece en true, la respuesta utiliza speaker_id para distinguir a los hablantes e incluye output.sentences. Cuando la diarización está habilitada, keep_dialect y language_hints se ignoran.

keep_dialect boolean (Opcional)

Compatible solo con qwen-audio-3.1-asr-flash. Especifica si se deben conservar las expresiones dialectales. Valor predeterminado: false. Establezca en false para transcribir el habla dialectal como texto en mandarín estándar, o en true para conservar las expresiones dialectales.

formatstring(Obligatorio)

El formato de audio. Configure esto para que coincida con su formato de audio real. Los valores admitidos incluyen wav, mp3 y opus. Para más detalles, consulte Especificaciones de audio.

sample_ratestring(Opcional)

La tasa de muestreo del audio, en Hz. Por ejemplo, 16000 significa una tasa de muestreo de 16 kHz. Para más detalles, consulte Especificaciones de audio.

vocabulary_idstring(Opcional)

El ID de una lista de palabras clave precompilada.

Genere este ID con antelación llamando a la API de creación de lista de palabras clave. Pase el ID durante el reconocimiento para usar las palabras clave de la lista.

Adecuado para escenarios donde el vocabulario es conocido y relativamente estable, y donde necesita reutilizar la misma lista de palabras en distintas solicitudes.

Para obtener detalles sobre el uso, consulte Palabras clave precompiladas.

vocabularyobject(Opcional)

Palabras clave instantáneas.

Se pasan como pares clave-valor, donde la clave es el texto de la palabra clave (string) y el valor es el peso de la palabra clave (integer). No es necesario crear una lista de palabras clave con antelación. El peso oscila entre [1, 5] o se establece en 50: un valor en [1, 5] hace que el modelo tenga más probabilidades de generar la palabra a medida que aumenta el valor; un valor de 50 designa una súper palabra clave, lo que mejora enormemente la recuperación, pero el número de súper palabras clave no puede exceder 50.

Adecuado para la optimización temporal de palabras clave a nivel de sesión.

Cuando las palabras clave instantáneas y precompiladas se configuran juntas, el sistema fusiona ambos conjuntos. Si el conjunto fusionado contiene más de 2000 palabras clave, el sistema selecciona aleatoriamente 2000 para usar. Para detalles de uso, consulte Palabras clave instantáneas.

ImportanteSolo qwen-audio-3.1-asr-flash y qwen-audio-3.0-asr-flash admiten palabras clave en línea.

language_hints array[string](Opcional)

Los códigos de idioma a reconocer. Si no puede determinar el idioma con antelación, deje esto sin configurar y el modelo detectará el idioma automáticamente.

Para los modelos de la serie Qwen-Audio-3.x-ASR-Flash, puede configurar hasta 4 valores; si configura más de 4, solo los primeros 4 surten efecto. Para los modelos de la serie Fun-ASR-Flash, solo puede configurar 1 valor; si configura más de uno, solo el primero surte efecto.

Haga clic para ver los códigos de idioma admitidos

  • qwen-audio-3.1-asr-flash, qwen-audio-3.0-asr-flash, fun-asr-flash-2026-06-15:

    • zh: Chino
    • en: Inglés
    • ja: Japonés
    • ko: Coreano
    • vi: Vietnamita
    • th: Tailandés
    • id: Indonesio
    • ms: Malayo
    • tl: Filipino
    • hi: Hindi
    • ar: Árabe
    • fr: Francés
    • de: Alemán
    • es: Español
    • pt: Portugués
    • ru: Ruso
    • it: Italiano
    • nl: Neerlandés
    • sv: Sueco
    • da: Danés
    • fi: Finés
    • no: Noruego
    • el: Griego
    • pl: Polaco
    • cs: Checo
    • hu: Húngaro
    • ro: Rumano
    • bg: Búlgaro
    • hr: Croata
    • sk: Eslovaco

Los siguientes ejemplos utilizan la configuración para la región de Singapore. Reemplace "{WorkspaceId}" con su ID de espacio de trabajo real. La configuración difiere entre regiones, y la clave API para la región de Singapore es diferente a la de la región de Pekín.

Sin streaming

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
     --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
     --header "Content-Type: application/json" \
     --header "X-DashScope-SSE: disable" \
     --data '{
    "model": "qwen-audio-3.1-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

Transmisión

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
     --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
     --header "Content-Type: application/json" \
     --header "X-DashScope-SSE: enable" \
     --data '{
    "model": "qwen-audio-3.1-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

Con contexto - sin transmisión

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
     --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
     --header "Content-Type: application/json" \
     --header "X-DashScope-SSE: disable" \
     --data '{
    "model": "qwen-audio-3.1-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_text",
                        "text": "Hello"
                    }
                ]
            },
            {
                "role": "assistant",
                "content": [
                    {
                        "type": "text",
                        "text": "Hello, I'm Qwen. How can I help you?"
                    }
                ]
            },
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

Con contexto - transmisión

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
     --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
     --header "Content-Type: application/json" \
     --header "X-DashScope-SSE: enable" \
     --data '{
    "model": "qwen-audio-3.1-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_text",
                        "text": "Hello"
                    }
                ]
            },
            {
                "role": "assistant",
                "content": [
                    {
                        "type": "text",
                        "text": "Hello, I'm Qwen. How can I help you?"
                    }
                ]
            },
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

Base64

Puede pasar datos codificados en Base64 (URL de datos) en el formato data:<mediatype>;base64,<data>.

  • <mediatype>: El tipo MIME.

    El valor depende del formato de audio. Por ejemplo:

    • WAV: audio/wav
    • MP3: audio/mpeg
  • <data>: La cadena codificada en Base64 del audio.

    La codificación Base64 aumenta el tamaño de los datos. Controle el tamaño del archivo original para que los datos codificados aún cumplan con el límite de tamaño de audio de entrada (10 MB).

  • Ejemplo: data:audio/wav;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA//PAxABQ/BXRbMPe4IQAhl9

    Haga clic para ver código de ejemplo

    import base64, pathlib
    
    # Replace with the path to your own audio file and make sure it meets the audio requirements
    file_path = pathlib.Path("{YOUR_AUDIO_FILE}")
    base64_str = base64.b64encode(file_path.read_bytes()).decode()
    data_uri = f"data:audio/mpeg;base64,{base64_str}"
    
    import java.nio.file.*;
          import java.util.Base64;
    
          public class Main {
              /**
               * Replace with the path to your own audio file and make sure it meets the audio requirements
               */
              public static String toDataUrl(String filePath) throws Exception {
                  byte[] bytes = Files.readAllBytes(Paths.get(filePath));
                  String encoded = Base64.getEncoder().encodeToString(bytes);
                  return "data:audio/mpeg;base64," + encoded;
              }
    
              public static void main(String[] args) throws Exception {
                  System.out.println(toDataUrl("{YOUR_AUDIO_FILE}"));
              }
          }
    
import base64, pathlib
import os
import requests

# Replace with the path to your own audio file and make sure it meets the audio requirements
file_path = pathlib.Path("{YOUR_AUDIO_FILE}")
base64_str = base64.b64encode(file_path.read_bytes()).decode()
data_uri = f"data:audio/wav;base64,{base64_str}"

# Replace "{WorkspaceId}" with your actual workspace ID
url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation"

headers = {
    "Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}",
    "Content-Type": "application/json",
    "X-DashScope-SSE": "disable",
}

payload = {
    "model": "qwen-audio-3.1-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": data_uri,
                        },
                    }
                ],
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000",
    },
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())

Palabras clave en línea

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
     --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
     --header "Content-Type: application/json" \
     --header "X-DashScope-SSE: disable" \
     --data '{
    "model": "qwen-audio-3.1-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000",
        "vocabulary": {"John Smith": 5, "Jane Doe": 5}
    }
}'

Cuerpo de respuesta

request_idstring

El identificador único de esta solicitud.

outputobject

El resultado de salida.

Propiedades

textstring

El texto reconocido completo acumulado hasta ahora.

sentences array[object]

Se devuelve solo cuando la diarización de hablantes está habilitada para qwen-audio-3.1-asr-flash. Contiene resultados de reconocimiento para las oraciones actuales y anteriores. Cada elemento tiene la misma estructura que sentence.

sentenceobject

Los detalles de la oración actual.

Propiedades

speaker_id integer | null

El ID del hablante, utilizado para distinguir hablantes. Para qwen-audio-3.1-asr-flash, esto contiene un ID cuando la diarización de hablantes está habilitada, y es null en caso contrario.

sentence_idinteger

El número de oración, comenzando desde 1.

sentence_endboolean

Indica si este es el resultado final para la oración. true indica que el reconocimiento de la oración está completo.

begin_timeinteger

El tiempo de inicio de la oración, en milisegundos.

end_timeinteger

El tiempo de finalización de la oración, en milisegundos. Se devuelve solo cuando sentence_end es true.

textstring

El texto reconocido de la oración actual.

channel_idinteger

El número de canal, comenzando desde 0.

wordsarray

La lista de marcas de tiempo a nivel de palabra.

Propiedades

speaker_id integer | null

El ID del hablante para esta palabra. Para qwen-audio-3.1-asr-flash, esto contiene un ID cuando la diarización de hablantes está habilitada, y es null en caso contrario.

textstring

El texto de la palabra.

begin_timeinteger

El tiempo de inicio de la palabra, en milisegundos.

end_timeinteger

El tiempo de finalización de la palabra, en milisegundos.

punctuationstring

El signo de puntuación después de la palabra. Una cadena vacía cuando no hay puntuación.

fixedboolean

Indica si la palabra está estabilizada. false indica que la marca de tiempo de la palabra puede ajustarse en eventos posteriores.

usageobject

La información de uso. Se devuelve solo cuando sentence_end es true.

Propiedades

durationinteger

La duración del audio procesado, en segundos.

input_tokensinteger

El número de tokens de entrada consumidos por esta solicitud. Aplica solo a qwen-audio-3.1-asr-flash.

output_tokensinteger

El número de tokens de salida consumidos por esta solicitud. Aplica solo a qwen-audio-3.1-asr-flash.

total_tokensinteger

El número total de tokens consumidos por esta solicitud, igual a la suma de input_tokens y output_tokens. Aplica solo a qwen-audio-3.1-asr-flash.

Sin streaming

{
    "output": {
        "sentence": {
            "begin_time": 760,
            "channel_id": 0,
            "end_time": 3800,
            "sentence_end": true,
            "sentence_id": 1,
            "text": "Hello World, this is Alibaba Speech Lab.",
            "words": [
                {"begin_time": 760, "end_time": 1040, "fixed": true, "punctuation": "", "text": "Hello"},
                {"begin_time": 1040, "end_time": 1240, "fixed": true, "punctuation": ",", "text": " World"},
                {"begin_time": 1360, "end_time": 1880, "fixed": true, "punctuation": "", "text": "this is"},
                {"begin_time": 1880, "end_time": 2520, "fixed": true, "punctuation": "", "text": "Alibaba"},
                {"begin_time": 2520, "end_time": 2840, "fixed": true, "punctuation": "", "text": "Speech"},
                {"begin_time": 2840, "end_time": 3800, "fixed": true, "punctuation": ".", "text": "Lab"}
            ]
        },
        "text": "Hello World, this is Alibaba Speech Lab."
    },
    "usage": {
        "duration": 4
    },
    "request_id": "40e0734d-096f-9ae3-86c1-a8c013287561"
}

Transmisión

Cuando se establece X-DashScope-SSE: enable, el servidor devuelve resultados de reconocimiento utilizando el protocolo Server-Sent Events solo para audio que tenga al menos 1 minuto de duración. El formato del evento SSE es el siguiente:

id:{sequence_number}
      event:result
      :HTTP_STATUS/200
      data:{JSON_data}

Respuesta de ejemplo:

id:1
event:result
:HTTP_STATUS/200
data:{"output":{"sentence":{"sentence_id":1,"sentence_end":true,"end_time":3800,"words":[{"end_time":1040,"punctuation":"","begin_time":760,"fixed":true,"text":"Hello"},{"end_time":1240,"punctuation":",","begin_time":1040,"fixed":true,"text":" World"},{"end_time":1880,"punctuation":"","begin_time":1360,"fixed":true,"text":"this is"},{"end_time":2520,"punctuation":"","begin_time":1880,"fixed":true,"text":"Alibaba"},{"end_time":2840,"punctuation":"","begin_time":2520,"fixed":true,"text":"Speech"},{"end_time":3800,"punctuation":".","begin_time":2840,"fixed":true,"text":"Lab"}],"begin_time":760,"text":"Hello World, this is Alibaba Speech Lab.","channel_id":0},"text":"Hello World, this is Alibaba Speech Lab."},"usage":{"duration":4},"request_id":"fc1582e4-935c-9fc2-a482-a98bf43daa69"}

Lógica de procesamiento de resultados de transmisión SSE

En el modo de transmisión, el cliente necesita manejar lo siguiente:

  1. Para cada evento SSE recibido, analice el JSON en el campo data.
  2. Para Qwen-Audio-3.0-ASR-Flash y Fun-ASR-Flash, utilice output.sentence.sentence_end para determinar si la oración actual ha terminado. Cuando este valor es true, el reconocimiento de la oración está completo, las marcas de tiempo a nivel de palabra se han estabilizado y el resultado puede utilizarse como definitivo. Cuando este valor es false, el reconocimiento aún está en curso, y el texto y las marcas de tiempo pueden actualizarse en eventos posteriores.
  3. La información de usage se devuelve únicamente en el evento de fin de oración e incluye la duración del audio procesado. Para qwen-audio-3.1-asr-flash, también incluye los recuentos de tokens de entrada, salida y totales de la solicitud. Este modelo se factura por uso de tokens.

Para qwen-audio-3.1-asr-flash sin diarización de hablantes, una marca de tiempo de palabra se vuelve definitiva solo cuando output.sentence.words[i].fixed es true. Hasta entonces, las marcas de tiempo pueden cambiar. Cuando la diarización de hablantes está habilitada, lea los resultados de la oración actual y anterior desde output.sentences.