Uso de speech to text REST API para audio corto

Usa la API REST de conversión de voz a texto únicamente para audios cortos cuando no puedas usar el SDK de Voz ni la API de transcripción rápida.

Antes de usar speech to text REST API para audio corto, tenga en cuenta las siguientes limitaciones:

  • Las solicitudes que usan la API REST para audio corto y transmitir audio directamente no pueden contener más de 60 segundos de audio. Para la evaluación de la pronunciación, la duración del audio no debe ser superior a 30 segundos. Los formatos de audio de entrada son más limitados en comparación con el SDK de Voz.
  • La API REST para audio corto devuelve solo los resultados finales. No proporciona resultados parciales.
  • La traducción de voz no se admite a través de la API REST para audio corto. Necesita usar el Speech SDK.
  • La transcripción por lotes y la voz personalizada no se admiten a través de la API REST para audio corto. Siempre debe usar la API REST de conversión de voz a texto para la transcripción por lotes y personalización del habla.

Antes de usar speech to text REST API para audio corto, comprenda que debe completar un intercambio de tokens como parte de la autenticación para acceder al servicio. Para obtener más información, consulte Autenticación.

Regiones y puntos de conexión

El punto de conexión de la API REST para audio corto tiene este formato:

https://YourResourceName.cognitiveservices.azure.com/stt/speech/recognition/conversation/cognitiveservices/v1

Reemplace YourResourceName por el nombre del recurso de voz.

Nota

Para los puntos de conexión de Azure Government y Microsoft Azure operados por 21Vianet, consulte este artículo sobre nubes soberanas.

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 Frecuencia de muestreo
WAV PCM 256 kbps 16 kHz, mono
OGG OPUS 256 kbps 16 kHz, mono

Nota

Los formatos anteriores se admiten a través de la API REST para audio corto y WebSockets en el servicio voz. El SDK de Voz admite el formato WAV con el códec PCM, así como otros formatos.

Encabezados de solicitud

En esta tabla se enumeran los encabezados obligatorios y opcionales para las solicitudes de voz a texto:

Encabezado Descripción Obligatorio o opcional
Ocp-Apim-Subscription-Key Su clave de recurso para el servicio Speech. Se requiere este encabezado o Authorization.
Authorization Un token de autorización precedido por la palabra Bearer. Para obtener más información, consulte Autenticación. Se requiere este encabezado o Ocp-Apim-Subscription-Key.
Pronunciation-Assessment Especifica los parámetros para mostrar las puntuaciones de pronunciación en los resultados del reconocimiento. Estas puntuaciones evalúan la calidad de pronunciación de la entrada de voz, con indicadores como la precisión, la fluidez y la integridad.

Este parámetro es un JSON codificado en Base64 que contiene varios parámetros detallados. Para obtener información sobre cómo crear este encabezado, consulte 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 envían datos de audio fragmentados, en lugar de un solo archivo. Use este encabezado solo si está fragmentando datos de audio. Opcional
Expect Si usa la transferencia fragmentada, envíe Expect: 100-continue. El servicio de voz reconoce la solicitud inicial y espera más datos. Obligatorio si va a enviar datos de audio fragmentados.
Accept Si se proporciona, debe ser application/json. El servicio voz proporciona resultados en JSON. Algunos marcos de solicitud proporcionan un valor predeterminado incompatible. Se recomienda incluir Acceptsiempre . Opcional, pero recomendado.

Parámetros de consulta

Estos parámetros se pueden incluir en la cadena de consulta de la solicitud REST.

Nota

Debe anexar el parámetro de lenguaje a la dirección URL para evitar recibir un error HTTP 4xx. Por ejemplo, el idioma configurado como inglés de EE. UU. es: https://YourResourceName.cognitiveservices.azure.com/stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US.

Parámetro Descripción Obligatorio o opcional
language Identifica el idioma hablado que está siendo reconocido. Consulte Idiomas admitidos. Obligatorio
format Especifica el formato de resultado. Los valores aceptados son simple y detailed. Los resultados simples incluyen RecognitionStatus, DisplayText, Offsety Duration. Las respuestas detalladas incluyen cuatro representaciones diferentes del texto para mostrar. La configuración predeterminada es simple. Opcional
profanity Especifica cómo gestionar el uso de blasfemias en los resultados de reconocimiento de voz. Los valores aceptados son:

masked, que reemplaza los términos o palabras ofensivas por asteriscos.
removed, que elimina todas las profanidades del resultado.
raw, que incluye blasfemias en el resultado.

La configuración predeterminada es masked.
Opcional

Parámetros de evaluación de pronunciación

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

Parámetro Descripción Obligatorio o opcional
ReferenceText Texto con el que se evalúa la pronunciación. Obligatorio
GradingSystem Sistema de puntos para la calibración de puntuación. El FivePoint sistema proporciona una puntuación de punto flotante de 0 a 5 y HundredMark proporciona una puntuación de punto flotante de 0 a 100. Valor predeterminado: FivePoint. Opcional
Granularity La granularidad de la evaluación. Los valores aceptados son:

Phoneme, que muestra la puntuación en los niveles de texto completo, palabra y fonema.
Word, que muestra la puntuación en los niveles de texto completo y palabra.
FullText, que muestra la puntuación solo en el nivel de texto completo.

La configuración predeterminada es Phoneme.
Opcional
Dimension Define los criterios de salida. Los valores aceptados son:

Basic, que muestra solo la puntuación de precisión.
Comprehensive, que muestra puntuaciones en más dimensiones (por ejemplo, puntuación de fluidez e puntuación de integridad en el nivel de texto completo y tipo de error en el nivel de palabra).

Para ver las definiciones de diferentes dimensiones de puntuación y tipos de error de palabra, consulte Propiedades de respuesta. La configuración predeterminada es Basic.
Opcional
EnableMiscue Habilita el cálculo de errores. Con este parámetro habilitado, las palabras pronunciadas se comparan con el texto de referencia. Se marcan con omisión o inserción en función de la comparación. Los valores aceptados son False y True. La configuración predeterminada es False. Opcional
EnableProsodyAssessment Permite la evaluación de la prosodia en el análisis de pronunciación. Esta característica evalúa aspectos como el estrés, la entonación, la velocidad del habla y el ritmo. Esta característica proporciona información sobre la naturalidad y la expresividad de su voz.

Si esta propiedad se establece en True, se devuelve el valor de resultado ProsodyScore.
Opcional
ScenarioId Un GUID que indica un sistema de puntos personalizado. Opcional

Este es el ejemplo JSON que contiene los parámetros de evaluación de pronunciación:

{
  "ReferenceText": "Good morning.",
  "GradingSystem": "HundredMark",
  "Granularity": "Word",
  "Dimension": "Comprehensive",
  "EnableProsodyAssessment": "True"
}

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

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

Se recomienda encarecidamente la carga mediante transmisión (transferencia fragmentada) mientras se están subiendo los datos de audio, lo que puede reducir significativamente la latencia. Para obtener información sobre cómo habilitar el streaming, consulte el código sample en varios lenguajes de programación.

Nota

Para obtener más información, consulte evaluación de pronunciación.

Solicitud de ejemplo

En el ejemplo siguiente se incluyen el nombre de host y los encabezados necesarios. Es importante tener en cuenta que el servicio también espera datos de audio, que no se incluyen en este ejemplo. Como se mencionó anteriormente, se recomienda la fragmentación, pero no es necesaria.

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_RESOURCE_KEY
Host: YourResourceName.cognitiveservices.azure.com
Transfer-Encoding: chunked
Expect: 100-continue

Para habilitar la evaluación de pronunciación, puede agregar el siguiente encabezado. Para obtener información sobre cómo crear este encabezado, consulte Parámetros de evaluación de pronunciación.

Pronunciation-Assessment: eyJSZWZlcm...

Códigos de estado HTTP

El código de estado HTTP de cada respuesta indica éxito o errores comunes.

Código de estado HTTP Descripción Posibles razones
100 Continuar Se acepta la solicitud inicial. Continúe con el envío del resto de los datos. (Este código se usa con transferencia fragmentada).
200 De acuerdo La solicitud fue exitosa. El cuerpo de la respuesta es un objeto JSON.
400 Solicitud incorrecta No se proporcionó el código de idioma, no se admite el idioma o el archivo de audio no es válido (por ejemplo).
401 No autorizado Una clave de recurso o un token de autorización no es válido en la región especificada o un punto de conexión no es válido.
403 Prohibido Falta una clave de recurso o un token de autorización.

Respuestas de ejemplo

Esta es una respuesta típica para el simple reconocimiento:

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

Esta es una respuesta típica para el detailed reconocimiento:

{
  "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"
    }
  ]
}

Esta es una respuesta típica para reconocimiento con evaluación de pronunciación.

{
  "RecognitionStatus": "Success",
  "Offset": 700000,
  "Duration": 8400000,
  "DisplayText": "Good morning.",
  "SNR": 38.76819,
  "NBest": [
    {
      "Confidence": 0.98503506,
      "Lexical": "good morning",
      "ITN": "good morning",
      "MaskedITN": "good morning",
      "Display": "Good morning.",
      "AccuracyScore": 100.0,
      "FluencyScore": 100.0,
      "ProsodyScore": 87.8,
      "CompletenessScore": 100.0,
      "PronScore": 95.1,
      "Words": [
        {
          "Word": "good",
          "Offset": 700000,
          "Duration": 2600000,
          "Confidence": 0.0,
          "AccuracyScore": 100.0,
          "ErrorType": "None",
          "Feedback": {
            "Prosody": {
              "Break": {
                "ErrorTypes": [
                  "None"
                ],
                "BreakLength": 0
              },
              "Intonation": {
                "ErrorTypes": [],
                "Monotone": {
                  "Confidence": 0.0,
                  "WordPitchSlopeConfidence": 0.0,
                  "SyllablePitchDeltaConfidence": 0.91385907
                }
              }
            }
          }
        },
        {
          "Word": "morning",
          "Offset": 3400000,
          "Duration": 5700000,
          "Confidence": 0.0,
          "AccuracyScore": 100.0,
          "ErrorType": "None",
          "Feedback": {
            "Prosody": {
              "Break": {
                "ErrorTypes": [
                  "None"
                ],
                "UnexpectedBreak": {
                  "Confidence": 3.5294118e-08
                },
                "MissingBreak": {
                  "Confidence": 1.0
                },
                "BreakLength": 0
              },
              "Intonation": {
                "ErrorTypes": [],
                "Monotone": {
                  "Confidence": 0.0,
                  "WordPitchSlopeConfidence": 0.0,
                  "SyllablePitchDeltaConfidence": 0.91385907
                }
              }
            }
          }
        }
      ]
    }
  ]
}

Propiedades de respuesta

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

Propiedad Descripción
RecognitionStatus Estado, como Success, para un reconocimiento correcto. Consulte la tabla siguiente.
DisplayText Texto reconocido después de la capitalización, puntuación, normalización inversa de texto y enmascaramiento de palabras soeces. Solo se presenta en caso de corrección. La normalización inversa de texto consiste en la conversión de texto hablado en formularios más cortos, como 200 para "doscientos" o "Dr.Smith" para "Doctor Smith".
Offset Hora (en unidades de 100 nanosegundos) en la que comienza la voz reconocida en la secuencia de audio.
Duration Duración (en unidades de 100 nanosegundos) de la voz reconocida en la secuencia de audio.
SNR Relación de señal a ruido (SNR) de la voz reconocida en la secuencia de audio.

El RecognitionStatus campo puede contener estos valores:

Estado Descripción
Success El reconocimiento se realizó correctamente y el DisplayText campo está presente.
NoMatch La voz se detectó en la secuencia de audio, pero no se encontraron coincidencias con palabras del idioma de destino. Este estado suele significar que el idioma de reconocimiento es diferente del idioma 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 encontró un error interno y no pudo continuar. Inténtelo de nuevo si es posible.

Nota

Si el audio solo consta de palabras soeces y el parámetro de consulta profanity se establece en remove, el servicio no devuelve un resultado de voz.

El detailed formato incluye más formas 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 NBest lista puede incluir:

Propiedad Descripción
Confidence Puntuación de confianza de la entrada, de 0,0 (sin confianza) a 1,0 (plena confianza).
Lexical Forma léxica del texto reconocido: las palabras reales reconocidas.
ITN El formato de normalización inversa de texto (ITN) o 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 Forma de presentación del texto reconocido, con signos de puntuación y mayúsculas agregados. Este parámetro es el mismo que proporciona DisplayText cuando el formato se establece en simple.
AccuracyScore Precisión de pronunciación de la voz. La precisión indica el grado de coincidencia de los phonemes con la pronunciación de un hablante nativo. La puntuación de precisión en los niveles de palabra y texto completo se compone a partir de la puntuación de precisión en el nivel de fonema.
FluencyScore Fluidez del discurso proporcionado. La fluidez indica el grado de coincidencia de la voz con el uso que hace un hablante nativo de los silencios entre palabras.
ProsodyScore Prosodia del discurso dado. La prosodia indica cómo es natural la voz en cuestión, incluyendo el acento, la entonación, la velocidad del habla y el ritmo.

Para ver las definiciones de los resultados de la evaluación de prosodia en detalle, consulte parámetros de resultados.
CompletenessScore Integridad de la voz, determinada mediante el cálculo de la proporción de palabras pronunciadas para hacer referencia a la entrada de texto.
PronScore Puntuación general que indica la calidad de pronunciación de la voz proporcionada. Esta puntuación se agrega a partir de AccuracyScore, FluencyScore y CompletenessScore con ponderación.
ErrorType Valor que indica si se omite, inserta o se pronuncia mal una palabra, en comparación con ReferenceText. Los valores posibles son None (lo que significa que no hay ningún error en esta palabra), Omission, Insertiony Mispronunciation.

Transferencia fragmentada

La transferencia fragmentada (Transfer-Encoding: chunked) puede ayudar a reducir la latencia de reconocimiento. Permite que el servicio de voz empiece a procesar el archivo de audio mientras se está transmitiendo. La API REST para audio corto no proporciona resultados parciales o provisionales.

En el ejemplo de código siguiente se muestra cómo enviar audio en fragmentos. Solo el primer fragmento debe contener el encabezado del archivo de audio. request es un HttpWebRequest objeto que está conectado al punto de conexión REST adecuado. audioFile es la ruta de acceso a un archivo de audio en el 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_RESOURCE_KEY";
request.AllowWriteStreamBuffering = false;

using (var fs = new FileStream(audioFile, FileMode.Open, FileAccess.Read))
{
    // Open a request stream and write 1,024-byte chunks in the stream one at a time.
    byte[] buffer = null;
    int bytesRead = 0;
    using (var requestStream = request.GetRequestStream())
    {
        // Read 1,024 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();
    }
}

Autenticación

Cada solicitud requiere un encabezado de autorización. En esta tabla se muestran los encabezados que se admiten para cada característica:

Encabezado de autorización admitido Conversión de voz en texto Texto a voz
Ocp-Apim-Subscription-Key
Authorization: Bearer

Cuando estés usando el encabezado Ocp-Apim-Subscription-Key, solo debes proporcionar la clave de recurso. Por ejemplo:

'Ocp-Apim-Subscription-Key': 'YourSpeechResourceKey'

Si usa el flujo de token bearer de STS con Authorization: Bearer, primero haga una solicitud al endpoint issueToken. En esta solicitud, intercambiará la clave del recurso por un token de acceso válido durante 10 minutos.

Otra opción es usar Microsoft Entra autenticación que también usa el encabezado Authorization: Bearer, pero con un token emitido a través de Microsoft Entra ID. Consulte Usar la autenticación de Microsoft Entra.

Obtención de un token de acceso STS

Para obtener un token de acceso STS, realice una solicitud al punto de conexión issueToken usando Ocp-Apim-Subscription-Key y su clave de recurso.

El issueToken punto de conexión tiene este formato:

https://YourResourceName.cognitiveservices.azure.com/sts/v1.0/issueToken

Reemplace YourResourceName por el nombre del recurso de voz.

Nota

Este punto de conexión requiere que el recurso tenga configurado un subdominio personalizado . En el caso de los recursos sin un dominio personalizado, use el punto de conexión regional en su lugar: https://<region>.api.cognitive.microsoft.com/sts/v1.0/issueToken. Reemplace <region> por la región Azure del recurso (por ejemplo, eastus).

Use los ejemplos siguientes para crear la solicitud de token de acceso.

Ejemplo HTTP

Este ejemplo es una solicitud HTTP sencilla para obtener un token. Reemplace YourSpeechResourceKey por la clave de recurso para el servicio Voz. Reemplace YourResourceName por el nombre del recurso de voz.

POST /sts/v1.0/issueToken HTTP/1.1
Ocp-Apim-Subscription-Key: YourSpeechResourceKey
Host: YourResourceName.cognitiveservices.azure.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

Este ejemplo es un script de PowerShell simple para obtener un token de acceso. Reemplace YourSpeechResourceKey por la clave de recurso para el servicio Voz. Reemplace YourResourceName por el nombre del recurso de voz.

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

$OAuthToken = Invoke-RestMethod -Method POST `
    -Uri https://YourResourceName.cognitiveservices.azure.com/sts/v1.0/issueToken `
    -Headers $FetchTokenHeader

# show the token received
$OAuthToken

Ejemplo de cURL

cURL es una herramienta de línea de comandos disponible en Linux (y en el Subsistema de Windows para Linux). Este comando cURL muestra cómo obtener un token de acceso. Reemplace YourSpeechResourceKey por la clave de recurso para el servicio Voz. Reemplace YourResourceName por el nombre del recurso de voz.

curl -v -X POST \
 "https://YourResourceName.cognitiveservices.azure.com/sts/v1.0/issueToken" \
 -H "Content-type: application/x-www-form-urlencoded" \
 -H "Content-Length: 0" \
 -H "Ocp-Apim-Subscription-Key: YourSpeechResourceKey"

Ejemplo de C#

Esta clase de C# muestra cómo obtener un token de acceso. Pase la clave de recurso del servicio Voz al crear una instancia de la clase. Reemplace YourResourceName por el nombre del recurso de voz.

public class Authentication
{
    public static readonly string FetchTokenUri =
        "https://YourResourceName.cognitiveservices.azure.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://YourResourceName.cognitiveservices.azure.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

El token de acceso debe enviarse al servicio como encabezado Authorization: Bearer <TOKEN>. Cada token de acceso es válido durante 10 minutos. Puede obtener un nuevo token en cualquier momento, pero para minimizar el tráfico de red y la latencia, se recomienda usar el mismo token durante nueve minutos.

Importante

Los tokens de portador se limitan al punto de conexión que los emitió. Un token obtenido de YourResourceName.cognitiveservices.azure.com solo funciona para las solicitudes a ese mismo host. Un token de <region>.api.cognitive.microsoft.com solo funciona con puntos de conexión regionales de Speech. Si recibe un error 401 al usar un token de portador, use Ocp-Apim-Subscription-Key con la clave de recurso en su lugar, que funciona con todos los formatos de punto de conexión.

Esta es una solicitud HTTP de ejemplo a la API REST de conversión de voz en texto para audio corto:

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

// Message body here...

Uso de la autenticación de Microsoft Entra

Para usar la autenticación de Microsoft Entra con la API REST de conversión de voz a texto para audios cortos, debe crear un token de acceso. Los pasos para obtener el token de acceso que consta del identificador de recurso y el token de acceso de Microsoft Entra son los mismos que al usar el SDK de Voz. Siga estos pasos Use la autenticación Microsoft Entra

  • Creación de un recurso de Foundry para Voz
  • Configuración del recurso de voz para la autenticación de Microsoft Entra
  • Obtención de un token de acceso de Microsoft Entra
  • Obtención del identificador de recurso de voz

Después de obtener el identificador de recurso y el token de acceso Microsoft Entra, el token de acceso real se puede construir siguiendo este formato:

aad#YOUR_RESOURCE_ID#YOUR_MICROSOFT_ENTRA_ACCESS_TOKEN

Debe incluir el prefijo "aad#" y el separador "#" (hash) entre el identificador de recurso y el token de acceso.

Esta es una solicitud HTTP de ejemplo a la API REST de conversión de voz en texto para audio corto:

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

// Message body here...

Para obtener más información sobre los tokens de acceso de Microsoft Entra, incluida la duración del token, visite Tokens de acceso en la plataforma de identidad de Microsoft.