Speech-to-text REST API

La conversión de texto a voz tiene dos API de REST diferentes. Cada API sirve a su propósito especial y usa conjuntos diferentes de puntos de conexión.

Las API de REST de conversión de voz en texto son:

API de REST de conversión de voz en texto v3.0

La API de REST de conversión de voz en texto v3.0 se usa para realizar transcripciones por lotes y para el Habla personalizada. Si necesita conectarse a la transcripción en línea a través de REST, use la API de REST de conversión de voz en texto para audios breves.

Use la API de REST v3.0 para:

  • Copiar modelos en otras suscripciones en caso de que quiera que sus compañeros tengan acceso a un modelo que haya compilado, o en los casos en los que quiera implementar un modelo en más de una región.
  • Transcribir los datos de un contenedor (transcripción masiva) y proporcionar varias direcciones URL de archivos de audio.
  • Cargar datos de cuentas de Azure Storage mediante el un URI de SAS.
  • Obtener registros por punto de conexión si se han solicitado registros para ese punto de conexión.
  • Solicitar el manifiesto de los modelos que cree, con el fin de configurar contenedores locales.

La API de REST v 3.0 incluye características como las siguientes:

  • Webhooks de notificacionesTodos los procesos en ejecución del servicio ahora admiten notificaciones de webhook. La API de REST v3.0 proporciona las llamadas que le permitirán registrar los webhooks donde se envíen las notificaciones.
  • Actualización de modelos de puntos de conexión
  • Adaptación de modelos con varios conjuntos de datosAdapte un modelo mediante varias combinaciones de conjuntos de datos acústicos, de idioma y de pronunciación.
  • Traiga su propio almacenamientoUse sus propias cuentas de almacenamiento para los registros, los archivos de transcripción y otros datos.

Consulte los ejemplos sobre el uso de la API de REST v3.0 con la transcripción por lotes en este artículo.

Si usa la API de REST de conversión de voz en texto v2.0, consulte cómo puede migrar a la versión 3.0 en esta guía.

Consulte la referencia completa de la API de REST de conversión de voz en texto v3.0 aquí.

API de REST de conversión de voz en texto para audios breves

Como alternativa al SDK de voz, el servicio de voz le permite convertir la voz en texto mediante una API de REST. La API de REST para audios breves es muy limitada y solo se debe usar en aquellos casos en que no pueda utilizarse el SDK de voz.

Antes de usar la API de REST de conversión de voz en texto, tenga en cuenta lo siguiente:

  • Las solicitudes que usan la API de REST para audios breves y transmiten audio directamente, solo pueden contener hasta 60 segundos de audio.
  • La API de REST de conversión de voz en texto solo devuelve resultados finales. No se proporcionan resultados parciales.

Si el envío de un audio más grande es necesario para la aplicación, considere la posibilidad de usar el SDK de voz o la API de REST de conversión de voz en texto v3.0.

Sugerencia

Consulte este artículo para puntos de conexión de Azure Government y Azure China.

Authentication

Cada solicitud requiere un encabezado de autorización. Esta tabla muestra qué encabezados son compatibles con cada servicio:

Encabezados de autorización compatibles Voz a texto Texto a voz
Ocp-Apim-Subscription-Key
Autorización: Portador

Cuando se usa el encabezado Ocp-Apim-Subscription-Key, solo se le pide que proporcione la clave de suscripción. Por ejemplo:

'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'

Cuando se usa el encabezado Authorization: Bearer, se le pide que haga una solicitud al punto de conexión issueToken. En esta solicitud, va a intercambiar la clave de suscripción de un token de acceso que es válido durante 10 minutos. En las secciones siguientes obtendrá información sobre cómo obtener un token y usar un token.

Obtención de un token de acceso

Para obtener un token de acceso, tiene que realizar una solicitud al punto de conexión issueToken mediante Ocp-Apim-Subscription-Key y su clave de suscripción.

El punto de conexión issueToken tiene el siguiente formato:

https://<REGION_IDENTIFIER>.api.cognitive.microsoft.com/sts/v1.0/issueToken

Reemplace <REGION_IDENTIFIER> por el identificador que coincida con la región de la suscripción en la siguiente tabla:

Geography Region Identificador de región
América Centro de EE. UU. centralus
América Este de EE. UU. eastus
América Este de EE. UU. 2 eastus2
América Centro-Norte de EE. UU northcentralus
América Centro-sur de EE. UU. southcentralus
América Centro-Oeste de EE. UU. westcentralus
América Oeste de EE. UU. westus
América Oeste de EE. UU. 2 westus2
América Centro de Canadá canadacentral
América Sur de Brasil brazilsouth
Asia Pacífico Este de Asia eastasia
Asia Pacífico Sudeste de Asia southeastasia
Asia Pacífico Este de Australia australiaeast
Asia Pacífico Centro de la India centralindia
Asia Pacífico Japón Oriental japaneast
Asia Pacífico Japón Occidental japanwest
Asia Pacífico Centro de Corea del Sur koreacentral
Europa Norte de Europa northeurope
Europa Oeste de Europa westeurope
Europa Centro de Francia francecentral
Europa Norte de Suiza switzerlandnorth
Europa Sur de Reino Unido 2 uksouth

Use estos ejemplos para crear la solicitud de token de acceso.

Ejemplo de HTTP

Este ejemplo es una solicitud HTTP para obtener un token. Reemplace YOUR_SUBSCRIPTION_KEY por la clave de suscripción del servicio Voz. Si la suscripción no está en la región Oeste de EE. UU., reemplace el encabezado Host por el nombre de host de la región.

POST /sts/v1.0/issueToken HTTP/1.1
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY
Host: westus.api.cognitive.microsoft.com
Content-type: application/x-www-form-urlencoded
Content-Length: 0

El cuerpo de la respuesta contiene el token de acceso en formato JSON Web Token (JWT).

Ejemplo de PowerShell

En este ejemplo se muestra un script sencillo de PowerShell para obtener un token de acceso. Reemplace YOUR_SUBSCRIPTION_KEY por la clave de suscripción del servicio Voz. Asegúrese de usar el punto de conexión correcto para la región que coincida con su suscripción. En este ejemplo la región es Oeste de EE. UU.

$FetchTokenHeader = @{
  'Content-type'='application/x-www-form-urlencoded';
  'Content-Length'= '0';
  'Ocp-Apim-Subscription-Key' = 'YOUR_SUBSCRIPTION_KEY'
}

$OAuthToken = Invoke-RestMethod -Method POST -Uri https://westus.api.cognitive.microsoft.com/sts/v1.0/issueToken
 -Headers $FetchTokenHeader

# show the token received
$OAuthToken

Ejemplo de cURL

cURL es una herramienta de la línea de comandos disponible en Linux (y en el subsistema Windows para Linux). Este comando cURL muestra cómo obtener un token de acceso. Reemplace YOUR_SUBSCRIPTION_KEY por la clave de suscripción del servicio Voz. Asegúrese de usar el punto de conexión correcto para la región que coincida con su suscripción. En este ejemplo la región es Oeste de EE. UU.

curl -v -X POST \
 "https://westus.api.cognitive.microsoft.com/sts/v1.0/issueToken" \
 -H "Content-type: application/x-www-form-urlencoded" \
 -H "Content-Length: 0" \
 -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY"

Ejemplo de C#

Esta clase de C# muestra cómo obtener un token de acceso. Pase la clave de suscripción del servicio Voz al crear una instancia de la clase. Si su suscripción no está en la región Oeste de EE. UU., cambie el valor de FetchTokenUri para que coincida con la región de su suscripción.

public class Authentication
{
    public static readonly string FetchTokenUri =
        "https://westus.api.cognitive.microsoft.com/sts/v1.0/issueToken";
    private string subscriptionKey;
    private string token;

    public Authentication(string subscriptionKey)
    {
        this.subscriptionKey = subscriptionKey;
        this.token = FetchTokenAsync(FetchTokenUri, subscriptionKey).Result;
    }

    public string GetAccessToken()
    {
        return this.token;
    }

    private async Task<string> FetchTokenAsync(string fetchUri, string subscriptionKey)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
            UriBuilder uriBuilder = new UriBuilder(fetchUri);

            var result = await client.PostAsync(uriBuilder.Uri.AbsoluteUri, null);
            Console.WriteLine("Token Uri: {0}", uriBuilder.Uri.AbsoluteUri);
            return await result.Content.ReadAsStringAsync();
        }
    }
}

Ejemplo de Python

# Request module must be installed.
# Run pip install requests if necessary.
import requests

subscription_key = 'REPLACE_WITH_YOUR_KEY'


def get_token(subscription_key):
    fetch_token_url = 'https://westus.api.cognitive.microsoft.com/sts/v1.0/issueToken'
    headers = {
        'Ocp-Apim-Subscription-Key': subscription_key
    }
    response = requests.post(fetch_token_url, headers=headers)
    access_token = str(response.text)
    print(access_token)

Uso de un token de acceso

Se debe enviar el token de acceso al servicio como encabezado Authorization: Bearer <TOKEN>. Cada token de acceso tiene una validez de 10 minutos. Puede obtener un nuevo token en cualquier momento. No obstante, para reducir el tráfico de red y la latencia, se recomienda usar el mismo token durante nueve minutos.

A continuación se muestra una solicitud HTTP de ejemplo a la API de REST de conversión de voz en texto para un audio corto:

POST /cognitiveservices/v1 HTTP/1.1
Authorization: Bearer YOUR_ACCESS_TOKEN
Host: westus.stt.speech.microsoft.com
Content-type: application/ssml+xml
Content-Length: 199
Connection: Keep-Alive

// Message body here...

Regiones y puntos de conexión

El punto de conexión de la API de REST para audios breves tiene este formato:

https://<REGION_IDENTIFIER>.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1

Reemplace <REGION_IDENTIFIER> por el identificador que coincida con la región de la suscripción en la siguiente tabla:

Geography Region Identificador de región
América Centro de EE. UU. centralus
América Este de EE. UU. eastus
América Este de EE. UU. 2 eastus2
América Centro-Norte de EE. UU northcentralus
América Centro-sur de EE. UU. southcentralus
América Centro-Oeste de EE. UU. westcentralus
América Oeste de EE. UU. westus
América Oeste de EE. UU. 2 westus2
América Centro de Canadá canadacentral
América Sur de Brasil brazilsouth
Asia Pacífico Este de Asia eastasia
Asia Pacífico Sudeste de Asia southeastasia
Asia Pacífico Este de Australia australiaeast
Asia Pacífico Centro de la India centralindia
Asia Pacífico Japón Oriental japaneast
Asia Pacífico Japón Occidental japanwest
Asia Pacífico Centro de Corea del Sur koreacentral
Europa Norte de Europa northeurope
Europa Oeste de Europa westeurope
Europa Centro de Francia francecentral
Europa Norte de Suiza switzerlandnorth
Europa Sur de Reino Unido 2 uksouth

Nota

El parámetro de idioma debe anexarse a la dirección URL para evitar la recepción de errores HTTP 4xx. Por ejemplo, el idioma definido a inglés de Estados Unidos con el punto de conexión del Oeste de EE. UU. es: https://westus.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US.

Parámetros de consulta

Estos parámetros podrían incluirse en la cadena de consulta de la solicitud de REST.

Parámetro Descripción Obligatorio u opcional
language Identifica el idioma hablado que se está reconociendo. Vea Idiomas admitidos. Obligatorio
format Especifica el formato del resultado. Los valores aceptados son: simple y detailed. Los resultados simples incluyen RecognitionStatus, DisplayText, Offset y Duration. Las respuestas detalladas incluyen cuatro representaciones diferentes del texto que se muestra. El valor predeterminado es simple. Opcional
profanity Especifica cómo controlar las palabras soeces en los resultados del reconocimiento. Los valores aceptados son masked, que reemplaza las palabras soeces con asteriscos, removed, que quita todas las palabras soeces del resultado o raw que incluye la palabra soez en el resultado. El valor predeterminado es masked. Opcional
cid Si se usa el portal del Custom Speech para crear modelos personalizados, puede usar modelos personalizados a través de su identificador de punto de conexión, que se encuentra en la página Implementación. Use el identificador del punto de conexión como argumento del parámetro de la cadena de consulta . Opcional

Encabezados de solicitud

Esta tabla enumera los encabezados obligatorios y opcionales para las solicitudes de conversión de voz en texto.

Header Descripción Obligatorio u opcional
Ocp-Apim-Subscription-Key Clave de suscripción del servicio de voz. Se necesita este encabezado, o bien Authorization.
Authorization Un token de autorización precedido por la palabra Bearer. Para más información, consulte Autenticación. Se necesita este encabezado, o bien Ocp-Apim-Subscription-Key.
Pronunciation-Assessment Especificar los parámetros para mostrar puntuaciones de pronunciación en los resultados de reconocimiento, que evalúan la calidad de la pronunciación de la entrada de voz, con indicadores de precisión, fluidez, integridad, etc. Este parámetro es un JSON codificado en Base64 que contiene varios parámetros detallados. Para saber cómo crear este encabezado, consulte el apartado Parámetros de evaluación de pronunciación. Opcional
Content-type Describe el formato y el códec de los datos de audio proporcionados. Los valores aceptados son: audio/wav; codecs=audio/pcm; samplerate=16000 y audio/ogg; codecs=opus. Obligatorio
Transfer-Encoding Especifica que se están enviando datos de audio fragmentados en lugar de un único archivo. Use este encabezado solo si hay fragmentación de los datos de audio. Opcional
Expect Si usa la transferencia fragmentada, envíe Expect: 100-continue. El servicio de voz confirma la solicitud inicial y espera datos adicionales. Obligatorio si se envían datos de audio fragmentados.
Accept Si se proporciona, debe ser application/json. El servicio de voz proporciona resultados en JSON. Algunos marcos de solicitud proporcionan un valor predeterminado no compatible. Se recomienda incluir siempre Accept. Opcional pero recomendable.

Formatos de audio

El audio se envía en el cuerpo de la solicitud HTTP POST. Debe estar en uno de los formatos de esta tabla:

Formato Códec Velocidad de bits Velocidad de muestreo
WAV PCM 256 kbps 16 kHz, mono
OGG OPUS 256 kbps 16 kHz, mono

Nota

Se admiten los formatos anteriores a través de la API de REST para audios breves y WebSocket en el servicio de voz. Actualmente, el SDK de Voz admite el formato WAV con el códec PCM así como otros formatos.

Parámetros de evaluación de pronunciación

En esta tabla se indican los parámetros obligatorios y opcionales para la evaluación de la pronunciación.

Parámetro Descripción ¿Necesario?
ReferenceText Texto con el que se va a evaluar la pronunciación. Obligatorio
GradingSystem Sistema de puntos para la calibración de la puntuación. El sistema FivePoint da una puntuación de número de punto flotante entre 0 y 5, mientras que HundredMark da una puntuación de número de punto flotante entre 0 y 100. Predeterminado: FivePoint. Opcional
Granularidad Granularidad de la evaluación. Los valores aceptados son Phoneme, que muestra la puntuación en el nivel de todo el texto, la palabra y el fonema, Word, que muestra la puntuación en el nivel de todo el texto y la palabra, FullText, que muestra la puntuación solo en el nivel de todo el texto. El valor predeterminado es Phoneme. Opcional
Dimensión Define los criterios de la salida. Los valores aceptados son Basic, que solo muestra la puntuación de precisión, Comprehensive muestra puntuaciones de más dimensiones (por ejemplo, puntuación de fluidez y puntuación de integridad en el nivel de todo el texto, tipo de error en el nivel de la palabra). Leer Parámetros de respuesta para ver las definiciones de las distintas dimensiones de puntuación y los tipos de error de palabra. El valor predeterminado es Basic. Opcional
EnableMiscue Habilita el cálculo de errores. Con esta opción habilitada, las palabras pronunciadas se comparan con el texto de referencia y se marcan con omisión/inserción en función de la comparación. Los valores aceptados son: False y True. El valor predeterminado es False. Opcional
ScenarioId GUID que indica un sistema de puntos personalizado. Opcional

A continuación se muestra un JSON de ejemplo que contiene los parámetros de evaluación de pronunciación:

{
  "ReferenceText": "Good morning.",
  "GradingSystem": "HundredMark",
  "Granularity": "FullText",
  "Dimension": "Comprehensive"
}

En el código de ejemplo siguiente se muestra cómo compilar los parámetros de evaluación de pronunciación en el encabezado Pronunciation-Assessment:

var pronAssessmentParamsJson = $"{{\"ReferenceText\":\"Good morning.\",\"GradingSystem\":\"HundredMark\",\"Granularity\":\"FullText\",\"Dimension\":\"Comprehensive\"}}";
var pronAssessmentParamsBytes = Encoding.UTF8.GetBytes(pronAssessmentParamsJson);
var pronAssessmentHeader = Convert.ToBase64String(pronAssessmentParamsBytes);

Se recomienda encarecidamente la carga en streaming (fragmentada) al publicar los datos de audio, ya que puede reducir considerablemente la latencia. Consulte el código de ejemplo en diferentes lenguajes de programación para saber cómo habilitar el streaming.

Nota

Actualmente, la característica de evaluación de pronunciación admite el idioma en-US, que está disponible en todas las en-US. La compatibilidad con los idiomas en-GB y zh-CN se encuentra en versión preliminar.

Solicitud de ejemplo

El ejemplo siguiente incluye el nombre de host y los encabezados necesarios. Es importante tener en cuenta que el servicio también espera datos de audio, que no están incluidos en este ejemplo. Como se ha mencionado anteriormente, la fragmentación es recomendable pero no obligatoria.

POST speech/recognition/conversation/cognitiveservices/v1?language=en-US&format=detailed HTTP/1.1
Accept: application/json;text/xml
Content-Type: audio/wav; codecs=audio/pcm; samplerate=16000
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY
Host: westus.stt.speech.microsoft.com
Transfer-Encoding: chunked
Expect: 100-continue

Para habilitar la valoración de la pronunciación, puede agregar el encabezado siguiente. Para saber cómo crear este encabezado, consulte el apartado Parámetros de evaluación de pronunciación.

Pronunciation-Assessment: eyJSZWZlcm...

Códigos de estado HTTP

El estado HTTP de cada respuesta indica estados de corrección o error comunes.

Código de estado HTTP Descripción Posible motivo
100 Continuar Se ha aceptado la solicitud inicial. Continúe con el envío del resto de los datos. (Se usa con la transferencia fragmentada)
200 Aceptar La solicitud es correcta; el cuerpo de la respuesta es un objeto JSON.
400 Solicitud incorrecta Código de idioma no proporcionado, idioma no compatible; archivo de audio no válido, etc.
401 No autorizado Clave de suscripción o token de autorización no válido en la región especificada, o punto de conexión no válido.
403 Prohibido Falta la clave de suscripción o el token de autorización.

Transferencia fragmentada

La transferencia fragmentada (Transfer-Encoding: chunked) puede ayudar a reducir la latencia de reconocimiento. Permite al servicio de voz empezar a procesar el archivo de audio mientras se transmite. La API de REST para audios breves no proporciona resultados parciales ni provisionales.

Este ejemplo de código muestra cómo enviar audio en fragmentos. Solo el primer fragmento debe contener el encabezado del archivo de audio. request es un objeto HttpWebRequest conectado al punto de conexión de REST adecuado. audioFile es la ruta de acceso a un archivo de audio en disco.

var request = (HttpWebRequest)HttpWebRequest.Create(requestUri);
request.SendChunked = true;
request.Accept = @"application/json;text/xml";
request.Method = "POST";
request.ProtocolVersion = HttpVersion.Version11;
request.Host = host;
request.ContentType = @"audio/wav; codecs=audio/pcm; samplerate=16000";
request.Headers["Ocp-Apim-Subscription-Key"] = "YOUR_SUBSCRIPTION_KEY";
request.AllowWriteStreamBuffering = false;

using (var fs = new FileStream(audioFile, FileMode.Open, FileAccess.Read))
{
    // Open a request stream and write 1024 byte chunks in the stream one at a time.
    byte[] buffer = null;
    int bytesRead = 0;
    using (var requestStream = request.GetRequestStream())
    {
        // Read 1024 raw bytes from the input audio file.
        buffer = new Byte[checked((uint)Math.Min(1024, (int)fs.Length))];
        while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
        {
            requestStream.Write(buffer, 0, bytesRead);
        }

        requestStream.Flush();
    }
}

Parámetros de respuesta

Los resultados se proporcionan como JSON. El formato simple incluye los siguientes campos de nivel superior.

Parámetro Descripción
RecognitionStatus Estado, como Success, para un reconocimiento correcto. Vea la tabla siguiente.
DisplayText Texto reconocido tras mayúsculas, puntuación, normalización inversa de texto (conversión de texto hablado en formularios más cortos, como 200 para "doscientos" o "Dr. Smith" para "doctor smith") y enmascaramiento de palabras soeces. Solo se presenta en caso de corrección.
Offset El tiempo (en unidades de 100 nanosegundos) en el que comienza la voz reconocida en la secuencia de audio.
Duration La duración (en unidades de 100 nanosegundos) de la voz reconocida en la secuencia de audio.

El campo RecognitionStatus puede contener estos valores:

Status Descripción
Success El reconocimiento es correcto y el campo DisplayText está presente.
NoMatch Se detectó voz en la secuencia de audio, pero no se encontraron coincidencias de palabras en el idioma de destino. Normalmente significa que el idioma de reconocimiento es un idioma distinto al que habla el usuario.
InitialSilenceTimeout El inicio de la secuencia de audio contiene solo silencio y el servicio ha agotado el tiempo de espera de la voz.
BabbleTimeout El inicio de la secuencia de audio contiene solo ruido y el servicio ha agotado el tiempo de espera de la voz.
Error El servicio de reconocimiento ha detectado un error interno y no ha podido continuar. Vuelva a intentarlo si es posible.

Nota

Si el audio consta solo de palabras soeces y el parámetro de consulta profanity está establecido en remove, el servicio no devuelve ningún resultado de voz.

El formato de detailed incluye formas adicionales de resultados reconocidos. Cuando se usa el formato detailed, se proporciona DisplayText como Display para cada resultado de la lista NBest.

El objeto de la lista NBest puede incluir:

Parámetro Descripción
Confidence La puntuación de confianza de la entrada de 0,0 (ninguna confianza) a 1,0 (plena confianza)
Lexical La forma léxica del texto reconocido: palabras reales reconocidas.
ITN El formato de normalización inversa de texto ("canónica") del texto reconocido, con números de teléfono, números, abreviaturas ("doctor smith" a "dr smith") y otras transformaciones aplicadas.
MaskedITN Formato ITN con enmascaramiento de palabras soeces aplicado, si se solicita.
Display Formato de presentación del texto reconocido, con adición de signos de puntuación y mayúsculas. Este parámetro es el mismo que DisplayText que se proporcionó cuando el formato se estableció en simple.
AccuracyScore Precisión de pronunciación de la voz. La precisión indica el grado de coincidencia de los fonemas con la pronunciación de un hablante nativo. La puntuación de precisión del nivel de texto completo y de las palabras individuales se agrega a partir de la puntuación de precisión del nivel de fonema.
FluencyScore Fluidez del fragmento hablado en cuestión. La fluidez indica el grado de coincidencia de la voz con el uso que hace un hablante nativo de los silencios entre palabras.
CompletenessScore Integridad de la voz, se determina mediante el cálculo de la proporción de palabras pronunciadas para hacer referencia a la entrada de texto.
PronScore Puntuación global que indica la calidad de la pronunciación del fragmento hablado en cuestión. Se agrega a partir de AccuracyScore, FluencyScore y CompletenessScore con ponderación.
ErrorType Este valor indica si se ha omitido, se ha insertado o se ha pronunciado incorrectamente una palabra en comparación con ReferenceText. Los valores posibles son None (que significa que no hay ningún error en esta palabra), Omission, Insertion y Mispronunciation.

Respuestas de ejemplo

La siguiente es una respuesta típica de reconocimiento de simple:

{
  "RecognitionStatus": "Success",
  "DisplayText": "Remind me to buy 5 pencils.",
  "Offset": "1236645672289",
  "Duration": "1236645672289"
}

La siguiente es una respuesta típica de reconocimiento de detailed:

{
  "RecognitionStatus": "Success",
  "Offset": "1236645672289",
  "Duration": "1236645672289",
  "NBest": [
    {
      "Confidence": 0.9052885,
      "Display": "What's the weather like?",
      "ITN": "what's the weather like",
      "Lexical": "what's the weather like",
      "MaskedITN": "what's the weather like"
    },
    {
      "Confidence": 0.92459863,
      "Display": "what is the weather like",
      "ITN": "what is the weather like",
      "Lexical": "what is the weather like",
      "MaskedITN": "what is the weather like"
    }
  ]
}

La siguiente es una respuesta típica de reconocimiento con evaluación de pronunciación:

{
  "RecognitionStatus": "Success",
  "Offset": "400000",
  "Duration": "11000000",
  "NBest": [
      {
        "Confidence" : "0.87",
        "Lexical" : "good morning",
        "ITN" : "good morning",
        "MaskedITN" : "good morning",
        "Display" : "Good morning.",
        "PronScore" : 84.4,
        "AccuracyScore" : 100.0,
        "FluencyScore" : 74.0,
        "CompletenessScore" : 100.0,
        "Words": [
            {
              "Word" : "Good",
              "AccuracyScore" : 100.0,
              "ErrorType" : "None",
              "Offset" : 500000,
              "Duration" : 2700000
            },
            {
              "Word" : "morning",
              "AccuracyScore" : 100.0,
              "ErrorType" : "None",
              "Offset" : 5300000,
              "Duration" : 900000
            }
        ]
      }
  ]
}

Pasos siguientes