Skip to main content

HTTP API de reconocimiento de voz no en tiempo real (Fun-ASR-Flash)

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

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
  • China (Beijing)
POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generationReemplace {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

Encabezados de solicitud

ParámetroTipoObligatorioDescripción
AuthorizationstringSíEl token de autenticación, en el formato Bearer <your_api_key>. Reemplace "<your_api_key>" con su clave API real.
Content-TypestringSíEl tipo de medio del cuerpo de la solicitud. Fijado en application/json.
X-DashScope-SSEstringNoControla 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.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.
La función de contexto mejora la precisión del reconocimiento de términos específicos del dominio. Para su uso, consulte Mejora de contexto.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.
Cuando 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.wavEjemplo (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.
El pulido de texto está deshabilitado de forma predeterminada y aún no está disponible.Pulido de texto: Mientras transcribe, el modelo elimina muletillas sin significado y repeticiones por tartamudeo, procesa las autocorrecciones, mejora las expresiones coloquiales y normaliza la puntuación y el formato. El resultado es más conciso, fluido y legible, y conserva en la medida de lo posible la intención final y la información clave del hablante.

Propiedades

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.language_hints array[string](Opcional)Los códigos de idioma que se reconocerán. Si desconoce el idioma, omita este parámetro para que el modelo lo detecte automáticamente. Puede especificar hasta 1 valor. Si especifica más, solo los primeros 1 tendrán efecto.
  • 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
  • Transmisión
  • Con contexto - sin transmisión
  • Con contexto - transmisión
  • Base64
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": "fun-asr-flash-2026-06-15",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "input_audio",
                        "input_audio": {
                            "data": "{YOUR_AUDIO_URL}"
                        }
                    }
                ]
            }
        ]
    },
    "parameters": {
        "format": "wav",
        "sample_rate": "16000"
    }
}'

Cuerpo de respuesta

request_idstringEl identificador único de esta solicitud.outputobjectEl resultado de salida.

Propiedades

textstringEl texto reconocido completo acumulado hasta ahora.sentenceobjectLos detalles de la oración actual.

Propiedades

sentence_idintegerEl número de oración, comenzando desde 1.sentence_endbooleanIndica si este es el resultado final para la oración. true indica que el reconocimiento de la oración está completo.begin_timeintegerEl tiempo de inicio de la oración, en milisegundos.end_timeintegerEl tiempo de finalización de la oración, en milisegundos. Se devuelve solo cuando sentence_end es true.textstringEl texto reconocido de la oración actual.channel_idintegerEl número de canal, comenzando desde 0.wordsarrayLa lista de marcas de tiempo a nivel de palabra.
textstringEl texto de la palabra.begin_timeintegerEl tiempo de inicio de la palabra, en milisegundos.end_timeintegerEl tiempo de finalización de la palabra, en milisegundos.punctuationstringEl signo de puntuación después de la palabra. Una cadena vacía cuando no hay puntuación.fixedbooleanIndica si la palabra está estabilizada. false indica que la marca de tiempo de la palabra puede ajustarse en eventos posteriores.
usageobjectLa información de uso. Se devuelve solo cuando sentence_end es true.
durationintegerLa duración del audio procesado, en segundos.
  • Sin streaming
  • Transmisión
{
    "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"
}

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. Use output.sentence.sentence_end para determinar si la oración actual terminó. Si es true, el reconocimiento ha finalizado y las marcas de tiempo de las palabras son estables, por lo que el resultado puede usarse como definitivo. Si es false, el reconocimiento continúa y el texto y las marcas de tiempo pueden actualizarse en eventos posteriores.
  3. La información de usage se devuelve solo en los eventos de fin de oración e incluye la duración del audio procesado.