API de REST de Texto a voz

El servicio de voz le permite convertir texto en voz sintetizada y obtener una lista de voces admitidas para una región con un conjunto de API de REST. En este artículo, obtendrá información sobre las opciones de autorización, las opciones de consulta, cómo estructurar una solicitud y cómo interpretar una respuesta.

Sugerencia

Los casos de uso para la API de REST de texto a voz son limitados. Úsese solo en los casos en los que no se pueda usar el SDK de Voz. Por ejemplo, con el SDK de Voz, puede suscribirse a eventos para obtener más información sobre el procesamiento de texto a voz y los resultados.

La API REST de texto a voz admite texto neuronal a voces de voz en muchas configuraciones regionales. Cada punto de conexión disponible se asocia con una región. Se requiere una clave de recurso de Voz para el punto de conexión o la región que tiene previsto usar. A continuación se incluyen vínculos a más información:

Importante

Los costos varían para las voces neuronales pregeneradas (denominadas neuronales en la página de precios) y las voces neuronales personalizadas (denominadas neuronales personalizadas en la página de precios). Para más información, consulte Precios del servicio de voz.

Antes de usar la API de REST de texto a voz, debe completar un intercambio de tokens como parte de la autenticación para acceder al servicio. Para más información, consulte Autenticación.

Obtener una lista de voces

Puede usar el punto de conexión tts.speech.microsoft.com/cognitiveservices/voices/list para obtener una lista completa de las voces de una región o un punto de conexión específicos. Use una región como prefijo del punto de conexión de lista de voces para obtener una lista de voces para esa región. Por ejemplo, para obtener una lista de voces para la región westus, use el punto de conexión https://westus.tts.speech.microsoft.com/cognitiveservices/voices/list. Para obtener una lista de todas las regiones admitidas, consulte la documentación de regiones.

Nota

La versión preliminar de Voces y estilos solo está disponible en tres regiones del servicio: Este de EE. UU., Oeste de Europa y Sudeste de Asia.

Encabezados de solicitud

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

Encabezado Descripción Obligatorio u opcional
Ocp-Apim-Subscription-Key Clave del recurso 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.

Cuerpo de la solicitud

No es necesario un cuerpo para las solicitudes GET a este punto de conexión.

Solicitud de ejemplo

Esta solicitud solo requiere un encabezado de autorización:

GET /cognitiveservices/voices/list HTTP/1.1

Host: westus.tts.speech.microsoft.com
Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY

Este es un comando curl de ejemplo:

curl --location --request GET 'https://YOUR_RESOURCE_REGION.tts.speech.microsoft.com/cognitiveservices/voices/list' \
--header 'Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY'

Respuesta de muestra

Debería recibir una respuesta con un cuerpo JSON que incluya todas las configuraciones regionales, voces, género, estilos y otros detalles admitidos. La propiedad WordsPerMinute de cada voz se puede usar para calcular la longitud de la voz de salida. En este ejemplo JSON se muestran resultados parciales para ilustrar la estructura de una respuesta:

[  
    // Redacted for brevity
    {
        "Name": "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
        "DisplayName": "Jenny",
        "LocalName": "Jenny",
        "ShortName": "en-US-JennyNeural",
        "Gender": "Female",
        "Locale": "en-US",
        "LocaleName": "English (United States)",
        "StyleList": [
          "assistant",
          "chat",
          "customerservice",
          "newscast",
          "angry",
          "cheerful",
          "sad",
          "excited",
          "friendly",
          "terrified",
          "shouting",
          "unfriendly",
          "whispering",
          "hopeful"
        ],
        "SampleRateHertz": "24000",
        "VoiceType": "Neural",
        "Status": "GA",
        "ExtendedPropertyMap": {
          "IsHighQuality48K": "True"
        },
        "WordsPerMinute": "152"
    },
    // Redacted for brevity
    {
        "Name": "Microsoft Server Speech Text to Speech Voice (en-US, JennyMultilingualNeural)",
        "DisplayName": "Jenny Multilingual",
        "LocalName": "Jenny Multilingual",
        "ShortName": "en-US-JennyMultilingualNeural",
        "Gender": "Female",
        "Locale": "en-US",
        "LocaleName": "English (United States)",
        "SecondaryLocaleList": [
          "de-DE",
          "en-AU",
          "en-CA",
          "en-GB",
          "es-ES",
          "es-MX",
          "fr-CA",
          "fr-FR",
          "it-IT",
          "ja-JP",
          "ko-KR",
          "pt-BR",
          "zh-CN"
        ],
        "SampleRateHertz": "24000",
        "VoiceType": "Neural",
        "Status": "GA",
        "WordsPerMinute": "190"
    },
    // Redacted for brevity
    {
        "Name": "Microsoft Server Speech Text to Speech Voice (ga-IE, OrlaNeural)",
        "DisplayName": "Orla",
        "LocalName": "Orla",
        "ShortName": "ga-IE-OrlaNeural",
        "Gender": "Female",
        "Locale": "ga-IE",
        "LocaleName": "Irish (Ireland)",
        "SampleRateHertz": "24000",
        "VoiceType": "Neural",
        "Status": "GA",
        "WordsPerMinute": "139"
    },
    // Redacted for brevity
    {
        "Name": "Microsoft Server Speech Text to Speech Voice (zh-CN, YunxiNeural)",
        "DisplayName": "Yunxi",
        "LocalName": "云希",
        "ShortName": "zh-CN-YunxiNeural",
        "Gender": "Male",
        "Locale": "zh-CN",
        "LocaleName": "Chinese (Mandarin, Simplified)",
        "StyleList": [
          "narration-relaxed",
          "embarrassed",
          "fearful",
          "cheerful",
          "disgruntled",
          "serious",
          "angry",
          "sad",
          "depressed",
          "chat",
          "assistant",
          "newscast"
        ],
        "SampleRateHertz": "24000",
        "VoiceType": "Neural",
        "Status": "GA",
        "RolePlayList": [
          "Narrator",
          "YoungAdultMale",
          "Boy"
        ],
        "WordsPerMinute": "293"
    },
    // Redacted for brevity
]

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
200 Aceptar La solicitud fue correcta.
400 Solicitud incorrecta Falta un parámetro requerido, está vacío o es nulo. O bien, el valor pasado a un parámetro obligatorio u opcional no es válido. Una razón común es un encabezado demasiado largo.
401 No autorizado La solicitud no está autorizada. Asegúrese de que la clave o el token de recurso sea válido y esté en la región correcta.
429 Demasiadas solicitudes Superó la cuota o tasa de solicitudes permitidas para el recurso.
502 Puerta de enlace incorrecta Hay un problema de red o del servidor. Este estado también puede indicar encabezados no válidos.

Conversión de texto en voz

El punto de conexión cognitiveservices/v1 le permite convertir texto a voz usando el lenguaje de marcado de síntesis de voz (SSML).

Regiones y puntos de conexión

Estas regiones son compatibles con la conversión de texto a voz mediante la API de REST. Asegúrese de que selecciona el punto de conexión que coincide con la región de su recurso de Voz.

Voces neuronales pregeneradas

Utilice esta tabla para determinar la disponibilidad de las voces neuronales por región o punto de conexión:

Region Punto de conexión
Este de Australia https://australiaeast.tts.speech.microsoft.com/cognitiveservices/v1
Sur de Brasil https://brazilsouth.tts.speech.microsoft.com/cognitiveservices/v1
Centro de Canadá https://canadacentral.tts.speech.microsoft.com/cognitiveservices/v1
Centro de EE. UU. https://centralus.tts.speech.microsoft.com/cognitiveservices/v1
Este de Asia https://eastasia.tts.speech.microsoft.com/cognitiveservices/v1
Este de EE. UU. https://eastus.tts.speech.microsoft.com/cognitiveservices/v1
Este de EE. UU. 2 https://eastus2.tts.speech.microsoft.com/cognitiveservices/v1
Centro de Francia https://francecentral.tts.speech.microsoft.com/cognitiveservices/v1
Centro-oeste de Alemania https://germanywestcentral.tts.speech.microsoft.com/cognitiveservices/v1
India central https://centralindia.tts.speech.microsoft.com/cognitiveservices/v1
Japón Oriental https://japaneast.tts.speech.microsoft.com/cognitiveservices/v1
Japón Occidental https://japanwest.tts.speech.microsoft.com/cognitiveservices/v1
JIO del Oeste de la India https://jioindiawest.tts.speech.microsoft.com/cognitiveservices/v1
Centro de Corea del Sur https://koreacentral.tts.speech.microsoft.com/cognitiveservices/v1
Centro-Norte de EE. UU https://northcentralus.tts.speech.microsoft.com/cognitiveservices/v1
Norte de Europa https://northeurope.tts.speech.microsoft.com/cognitiveservices/v1
Este de Noruega https://norwayeast.tts.speech.microsoft.com/cognitiveservices/v1
Centro-sur de EE. UU. https://southcentralus.tts.speech.microsoft.com/cognitiveservices/v1
Sudeste de Asia https://southeastasia.tts.speech.microsoft.com/cognitiveservices/v1
Centro de Suecia https://swedencentral.tts.speech.microsoft.com/cognitiveservices/v1
Norte de Suiza https://switzerlandnorth.tts.speech.microsoft.com/cognitiveservices/v1
Oeste de Suiza https://switzerlandwest.tts.speech.microsoft.com/cognitiveservices/v1
Norte de Emiratos Árabes Unidos https://uaenorth.tts.speech.microsoft.com/cognitiveservices/v1
US Gov: Arizona https://usgovarizona.tts.speech.azure.us/cognitiveservices/v1
US Gov - Virginia https://usgovvirginia.tts.speech.azure.us/cognitiveservices/v1
Sur de Reino Unido https://uksouth.tts.speech.microsoft.com/cognitiveservices/v1
Centro-Oeste de EE. UU. https://westcentralus.tts.speech.microsoft.com/cognitiveservices/v1
Oeste de Europa https://westeurope.tts.speech.microsoft.com/cognitiveservices/v1
Oeste de EE. UU. https://westus.tts.speech.microsoft.com/cognitiveservices/v1
Oeste de EE. UU. 2 https://westus2.tts.speech.microsoft.com/cognitiveservices/v1
Oeste de EE. UU. 3 https://westus3.tts.speech.microsoft.com/cognitiveservices/v1

Sugerencia

Las voces en versión preliminar solo están disponibles en estas tres regiones: Este de EE. UU., Oeste de Europa y Sudeste Asiático.

Voces neuronales personalizadas

Si ha creado una fuente de voz neuronal personalizada, use el punto de conexión que ha creado. También puede utilizar los puntos de conexión siguientes. Reemplace {deploymentId} por el id. de implementación de su modelo de voz neuronal.

Region Cursos Implementación Punto de conexión
Este de Australia https://australiaeast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Sur de Brasil No https://brazilsouth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Centro de Canadá No https://canadacentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Centro de EE. UU. No https://centralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Este de Asia No https://eastasia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Este de EE. UU. https://eastus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Este de EE. UU. 2 https://eastus2.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Centro de Francia No https://francecentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Centro-oeste de Alemania No https://germanywestcentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
India central https://centralindia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Japón Oriental https://japaneast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Japón Occidental No https://japanwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
JIO del Oeste de la India No https://jioindiawest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Centro de Corea del Sur https://koreacentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Centro-Norte de EE. UU No https://northcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Norte de Europa https://northeurope.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Este de Noruega No https://norwayeast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Norte de Sudáfrica No https://southafricanorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Centro-sur de EE. UU. https://southcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Sudeste de Asia https://southeastasia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Norte de Suiza No https://switzerlandnorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Oeste de Suiza No https://switzerlandwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Norte de Emiratos Árabes Unidos No https://uaenorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Sur de Reino Unido 2 https://uksouth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Centro-Oeste de EE. UU. No https://westcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Oeste de Europa https://westeurope.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Oeste de EE. UU. https://westus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Oeste de EE. UU. 2 https://westus2.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Oeste de EE. UU. 3 No https://westus3.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}

Nota

Las regiones anteriores están disponibles para el hospedaje del modelo de voz neuronal y la síntesis en tiempo real. El entrenamiento de voz neuronal personalizada solo está disponible en algunas regiones. Pero los usuarios pueden copiar fácilmente un modelo de voz neuronal de estas regiones a otras de la lista anterior.

Long Audio API

Long Audio API está disponible en varias regiones con puntos de conexión únicos:

Region Punto de conexión
Este de Australia https://australiaeast.customvoice.api.speech.microsoft.com
Este de EE. UU. https://eastus.customvoice.api.speech.microsoft.com
India central https://centralindia.customvoice.api.speech.microsoft.com
Centro-sur de EE. UU. https://southcentralus.customvoice.api.speech.microsoft.com
Sudeste de Asia https://southeastasia.customvoice.api.speech.microsoft.com
Sur de Reino Unido 2 https://uksouth.customvoice.api.speech.microsoft.com
Oeste de Europa https://westeurope.customvoice.api.speech.microsoft.com

Encabezados de solicitud

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

Encabezado Descripción Obligatorio u opcional
Authorization Un token de autorización precedido por la palabra Bearer. Para más información, consulte Autenticación. Obligatorio
Content-Type Especifica el tipo de contenido para el texto proporcionado. Valor aceptable: application/ssml+xml. Obligatorio
X-Microsoft-OutputFormat Especifica el formato de salida del audio. Para obtener una lista completa de los valores aceptados, consulte Salidas de audio. Obligatorio
User-Agent Nombre de la aplicación. El valor proporcionado debe tener menos de 255 caracteres. Obligatorio

Cuerpo de la solicitud

Si usa una voz neuronal personalizada, el cuerpo de una solicitud se puede enviar como texto sin formato (ASCII o UTF-8). De lo contrario, el cuerpo de cada solicitud POST se envía como SSML. SSML le permite elegir la voz y el idioma de la voz sintetizada que devuelve el servicio de texto a voz. Para obtener una lista completa de las voces admitidas, consulte Compatibilidad con idiomas y voces en el servicio de voz.

Solicitud de ejemplo

Esta solicitud HTTP utiliza SSML para especificar el idioma y la voz. Si la longitud del cuerpo es larga y el audio resultante supera los 10 minutos, se trunca a 10 minutos. En otras palabras, la longitud del audio no puede superar los 10 minutos.

POST /cognitiveservices/v1 HTTP/1.1

X-Microsoft-OutputFormat: riff-24khz-16bit-mono-pcm
Content-Type: application/ssml+xml
Host: westus.tts.speech.microsoft.com
Content-Length: <Length>
Authorization: Bearer [Base64 access_token]
User-Agent: <Your application name>

<speak version='1.0' xml:lang='en-US'><voice xml:lang='en-US' xml:gender='Male'
    name='en-US-ChristopherNeural'>
        I'm excited to try text to speech!
</voice></speak>

* Para Content-Length, debe usar sus propios valores de longitud de contenido. En la mayoría de los casos, este valor se calcula automáticamente.

Códigos de estado HTTP

El código de estado HTTP de cada respuesta indica estados de corrección o error comunes:

Código de estado HTTP Descripción Posible motivo
200 Aceptar La solicitud fue correcta. El cuerpo de la respuesta es un archivo de audio.
400 Solicitud incorrecta Falta un parámetro requerido, está vacío o es nulo. O bien, el valor pasado a un parámetro obligatorio u opcional no es válido. Una razón común es un encabezado demasiado largo.
401 No autorizado La solicitud no está autorizada. Asegúrese de que la clave o el token de recurso de Voz sea válido y de la región correcta.
415 Tipo de medio no compatible Es posible que se haya proporcionado un valor de Content-Type incorrecto. Content-Type se debe establecer en application/ssml+xml.
429 Demasiadas solicitudes Superó la cuota o tasa de solicitudes permitidas para el recurso.
502 Puerta de enlace incorrecta Hay un problema de red o del servidor. Este estado también puede indicar encabezados no válidos.

Si el estado HTTP es 200 OK, el cuerpo de la respuesta contiene un archivo de audio en el formato solicitado. Este archivo se puede reproducir mientras se transfiere o guardarse en un búfer o en un archivo.

Salidas de audio

Los formatos de audio de streaming y no streaming admitidos se envían en cada solicitud como X-Microsoft-OutputFormat encabezado. Cada formato incorpora una velocidad de bits y un tipo de codificación. El servicio de voz admite salidas de audio de 48 kHz, 24 kHz, 16 kHz y 8 kHz. Cada modelo de voz neuronal precompilado está disponible a 24 kHz y alta fidelidad de 48 kHz.

amr-wb-16000hz
audio-16khz-16bit-32kbps-mono-opus
audio-16khz-32kbitrate-mono-mp3
audio-16khz-64kbitrate-mono-mp3
audio-16khz-128kbitrate-mono-mp3
audio-24khz-16bit-24kbps-mono-opus
audio-24khz-16bit-48kbps-mono-opus
audio-24khz-48kbitrate-mono-mp3
audio-24khz-96kbitrate-mono-mp3
audio-24khz-160kbitrate-mono-mp3
audio-48khz-96kbitrate-mono-mp3
audio-48khz-192kbitrate-mono-mp3
ogg-16khz-16bit-mono-opus
ogg-24khz-16bit-mono-opus
ogg-48khz-16bit-mono-opus
raw-8khz-8bit-mono-alaw
raw-8khz-8bit-mono-mulaw
raw-8khz-16bit-mono-pcm
raw-16khz-16bit-mono-pcm
raw-16khz-16bit-mono-truesilk
raw-22050hz-16bit-mono-pcm
raw-24khz-16bit-mono-pcm
raw-24khz-16bit-mono-truesilk
raw-44100hz-16bit-mono-pcm
raw-48khz-16bit-mono-pcm
webm-16khz-16bit-mono-opus
webm-24khz-16bit-24kbps-mono-opus
webm-24khz-16bit-mono-opus

Nota:

Si selecciona el formato de salida de 48 kHz, se invocará el modelo de voz de alta fidelidad con 48 kHz. Las frecuencia de muestreo distintas de 24 kHz y 48 kHz se pueden obtener mediante el muestreo vertical o descendente al sintetizar, por ejemplo, 44,1 kHz se reduce a partir de 48 kHz.

Si la voz y el formato de salida seleccionados tienen velocidades de bits diferentes, se vuelve a muestrear el audio según sea necesario. Puede descodificar el formato ogg-24khz-16bit-mono-opus mediante el códec Opus.

Authentication

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

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

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

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

Cuando se usa el encabezado Authorization: Bearer, se le pide que realice una solicitud al punto de conexión issueToken. En esta solicitud, va a intercambiar la clave de recurso de un token de acceso que es válido durante 10 minutos.

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 recurso.

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 coincide con la región de la suscripción.

Use los siguientes 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 recurso para el 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: eastus.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 recurso para el 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://eastus.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 recurso para el 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://eastus.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 recurso 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://eastus.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://eastus.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 REST de conversión de voz en texto para audios de corta duración:

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...

Pasos siguientes