API REST de texto para fala

O serviço de Fala permite converter texto em fala sintetizada e obter uma lista de vozes suportadas para uma região usando uma API REST. Neste artigo, você aprenderá sobre opções de autorização, opções de consulta, como estruturar uma solicitação e como interpretar uma resposta.

Gorjeta

Os casos de uso da API REST de texto para fala são limitados. Use-o somente nos casos em que você não pode usar o SDK de fala. Por exemplo, com o SDK de Fala, você pode se inscrever em eventos para obter mais informações sobre o processamento e os resultados de texto para fala.

A API REST de texto para fala suporta vozes neurais de texto para fala em muitas localidades. Cada ponto de extremidade disponível está associado a uma região. É necessária uma chave de recurso de Fala para o ponto de extremidade ou região que você planeja usar. Aqui estão os links para mais informações:

Importante

Os custos variam para vozes neurais pré-construídas (chamadas de Neural na página de preços) e vozes neurais personalizadas (chamadas de Neural personalizadas na página de preços). Para obter mais informações, consulte Preços do serviço de fala.

Antes de usar a API REST de texto para fala, entenda que você precisa concluir uma troca de token como parte da autenticação para acessar o serviço. Para obter mais informações, veja Autenticação.

Obter uma lista de vozes

Você pode usar o tts.speech.microsoft.com/cognitiveservices/voices/list ponto de extremidade para obter uma lista completa de vozes para uma região ou ponto de extremidade específico. Prefira o ponto de extremidade da lista de vozes com uma região para obter uma lista de vozes para essa região. Por exemplo, para obter uma lista de vozes para a westus região, use o https://westus.tts.speech.microsoft.com/cognitiveservices/voices/list ponto de extremidade. Para obter uma lista de todas as regiões suportadas, consulte a documentação das regiões .

Nota

As vozes e estilos na pré-visualização só estão disponíveis em três regiões de serviço: Leste dos EUA, Europa Ocidental e Sudeste Asiático.

Cabeçalhos do pedido

Esta tabela lista cabeçalhos obrigatórios e opcionais para solicitações de texto para fala:

Cabeçalho Description Obrigatório ou opcional
Ocp-Apim-Subscription-Key Sua chave de recurso de fala. Este cabeçalho ou Authorization é obrigatório.
Authorization Um token de autorização precedido pela palavra Bearer. Para obter mais informações, veja Autenticação. Este cabeçalho ou Ocp-Apim-Subscription-Key é obrigatório.

Corpo do pedido

Um corpo não é necessário para solicitações para GET esse ponto de extremidade.

Pedido de amostra

Esta solicitação requer apenas um cabeçalho de autorização:

GET /cognitiveservices/voices/list HTTP/1.1

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

Aqui está um exemplo de comando curl:

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

Resposta da amostra

Você deve receber uma resposta com um corpo JSON que inclua todas as localidades, vozes, gênero, estilos e outros detalhes suportados. A WordsPerMinute propriedade de cada voz pode ser usada para estimar o comprimento da fala de saída. Este exemplo JSON mostra resultados parciais para ilustrar a estrutura de uma resposta:

[  
    // 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

O código de status HTTP para cada resposta indica sucesso ou erros comuns.

Código de estado de HTTP Description Motivo possível
200 OK O pedido foi bem-sucedido.
400 Mau pedido Um parâmetro necessário está ausente, vazio ou nulo. Ou, o valor passado para um parâmetro obrigatório ou opcional é inválido. Um motivo comum é um cabeçalho muito longo.
401 Não autorizado O pedido não está autorizado. Verifique se sua chave de recurso ou token está válido e na região correta.
429 Demasiados pedidos Você excedeu a cota ou a taxa de solicitações permitidas para seu recurso.
502 Gateway ruim Há um problema de rede ou do lado do servidor. Esse status também pode indicar cabeçalhos inválidos.

Converter texto em fala

O cognitiveservices/v1 ponto de extremidade permite converter texto em fala usando SSML (Speech Synthesis Markup Language).

Regiões e parâmetros de avaliação

Essas regiões são suportadas para conversão de texto em fala por meio da API REST. Certifique-se de selecionar o ponto de extremidade que corresponde à sua região de recurso de fala.

Vozes neurais pré-construídas

Use esta tabela para determinar a disponibilidade de vozes neurais por região ou ponto de extremidade:

País/Região Ponto final
Leste da Austrália https://australiaeast.tts.speech.microsoft.com/cognitiveservices/v1
Sul do Brasil https://brazilsouth.tts.speech.microsoft.com/cognitiveservices/v1
Canadá Central https://canadacentral.tts.speech.microsoft.com/cognitiveservices/v1
E.U.A. Central https://centralus.tts.speech.microsoft.com/cognitiveservices/v1
Ásia Leste https://eastasia.tts.speech.microsoft.com/cognitiveservices/v1
E.U.A. Leste https://eastus.tts.speech.microsoft.com/cognitiveservices/v1
E.U.A. Leste 2 https://eastus2.tts.speech.microsoft.com/cognitiveservices/v1
França Central https://francecentral.tts.speech.microsoft.com/cognitiveservices/v1
Alemanha Centro-Oeste https://germanywestcentral.tts.speech.microsoft.com/cognitiveservices/v1
Índia Central https://centralindia.tts.speech.microsoft.com/cognitiveservices/v1
Leste do Japão https://japaneast.tts.speech.microsoft.com/cognitiveservices/v1
Oeste do Japão https://japanwest.tts.speech.microsoft.com/cognitiveservices/v1
Jio, Oeste da Índia https://jioindiawest.tts.speech.microsoft.com/cognitiveservices/v1
Coreia do Sul Central https://koreacentral.tts.speech.microsoft.com/cognitiveservices/v1
E.U.A. Centro-Norte https://northcentralus.tts.speech.microsoft.com/cognitiveservices/v1
Europa do Norte https://northeurope.tts.speech.microsoft.com/cognitiveservices/v1
Leste da Noruega https://norwayeast.tts.speech.microsoft.com/cognitiveservices/v1
E.U.A. Centro-Sul https://southcentralus.tts.speech.microsoft.com/cognitiveservices/v1
Sudeste Asiático https://southeastasia.tts.speech.microsoft.com/cognitiveservices/v1
Suécia Central https://swedencentral.tts.speech.microsoft.com/cognitiveservices/v1
Norte da Suíça https://switzerlandnorth.tts.speech.microsoft.com/cognitiveservices/v1
Oeste da Suíça https://switzerlandwest.tts.speech.microsoft.com/cognitiveservices/v1
Norte dos E.A.U. 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
Sul do Reino Unido https://uksouth.tts.speech.microsoft.com/cognitiveservices/v1
E.U.A. Centro-Oeste https://westcentralus.tts.speech.microsoft.com/cognitiveservices/v1
Europa Ocidental https://westeurope.tts.speech.microsoft.com/cognitiveservices/v1
E.U.A. Oeste https://westus.tts.speech.microsoft.com/cognitiveservices/v1
E.U.A. Oeste 2 https://westus2.tts.speech.microsoft.com/cognitiveservices/v1
EUA Oeste 3 https://westus3.tts.speech.microsoft.com/cognitiveservices/v1

Gorjeta

As vozes em pré-visualização estão disponíveis apenas nestas três regiões: Leste dos EUA, Europa Ocidental e Sudeste Asiático.

Vozes neurais personalizadas

Se você criou uma fonte de voz neural personalizada, use o ponto de extremidade que você criou. Você também pode usar os seguintes pontos de extremidade. Substitua {deploymentId} pelo ID de implantação do seu modelo de voz neural.

País/Região Formação Implementação Ponto final
Leste da Austrália Sim Sim https://australiaeast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Sul do Brasil Não Sim https://brazilsouth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Canadá Central Não Sim https://canadacentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
E.U.A. Central Não Sim https://centralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Ásia Leste Não Sim https://eastasia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
E.U.A. Leste Sim Sim https://eastus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
E.U.A. Leste 2 Sim Sim https://eastus2.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
França Central Não Sim https://francecentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Alemanha Centro-Oeste Não Sim https://germanywestcentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Índia Central Sim Sim https://centralindia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Leste do Japão Sim Sim https://japaneast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Oeste do Japão Não Sim https://japanwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Jio, Oeste da Índia Não Sim https://jioindiawest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Coreia do Sul Central Sim Sim https://koreacentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
E.U.A. Centro-Norte Não Sim https://northcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Europa do Norte Sim Sim https://northeurope.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Leste da Noruega Não Sim https://norwayeast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Norte da África do Sul Não Sim https://southafricanorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
E.U.A. Centro-Sul Sim Sim https://southcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Sudeste Asiático Sim Sim https://southeastasia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Norte da Suíça Não Sim https://switzerlandnorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Oeste da Suíça Não Sim https://switzerlandwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Norte dos E.A.U. Não Sim https://uaenorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Sul do Reino Unido Sim Sim https://uksouth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
E.U.A. Centro-Oeste Não Sim https://westcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Europa Ocidental Sim Sim https://westeurope.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
E.U.A. Oeste Sim Sim https://westus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
E.U.A. Oeste 2 Sim Sim https://westus2.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
EUA Oeste 3 Não Sim https://westus3.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}

Nota

As regiões anteriores estão disponíveis para hospedagem de modelo de voz neural e síntese em tempo real. O treinamento de voz neural personalizado só está disponível em algumas regiões. Mas os usuários podem copiar facilmente um modelo de voz neural dessas regiões para outras regiões na lista anterior.

API de Áudio Longo

A API de áudio longo está disponível em várias regiões com pontos de extremidade exclusivos:

País/Região Ponto final
Leste da Austrália https://australiaeast.customvoice.api.speech.microsoft.com
E.U.A. Leste https://eastus.customvoice.api.speech.microsoft.com
Índia Central https://centralindia.customvoice.api.speech.microsoft.com
E.U.A. Centro-Sul https://southcentralus.customvoice.api.speech.microsoft.com
Sudeste Asiático https://southeastasia.customvoice.api.speech.microsoft.com
Sul do Reino Unido https://uksouth.customvoice.api.speech.microsoft.com
Europa Ocidental https://westeurope.customvoice.api.speech.microsoft.com

Cabeçalhos do pedido

Esta tabela lista cabeçalhos obrigatórios e opcionais para solicitações de texto para fala:

Cabeçalho Description Obrigatório ou opcional
Authorization Um token de autorização precedido pela palavra Bearer. Para obter mais informações, veja Autenticação. Obrigatório
Content-Type Especifica o tipo de conteúdo para o texto fornecido. Valor aceite: application/ssml+xml. Obrigatório
X-Microsoft-OutputFormat Especifica o formato de saída de áudio. Para obter uma lista completa dos valores aceitos, consulte Saídas de áudio. Obrigatório
User-Agent O nome do aplicativo. O valor fornecido deve ter menos de 255 caracteres. Obrigatório

Corpo do pedido

Se você estiver usando uma voz neural personalizada, o corpo de uma solicitação pode ser enviado como texto sem formatação (ASCII ou UTF-8). Caso contrário, o corpo de cada POST solicitação será enviado como SSML. O SSML permite que você escolha a voz e o idioma da fala sintetizada que o recurso de conversão de texto em fala retorna. Para obter uma lista completa das vozes suportadas, consulte Suporte de idioma e voz para o serviço de fala.

Pedido de amostra

Essa solicitação HTTP usa SSML para especificar a voz e o idioma. Se o comprimento do corpo for longo e o áudio resultante exceder 10 minutos, ele será truncado para 10 minutos. Em outras palavras, a duração do áudio não pode exceder 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 o Content-Length, você deve usar seu próprio comprimento de conteúdo. Na maioria dos casos, este valor é calculado automaticamente.

Códigos de estado HTTP

O código de status HTTP para cada resposta indica sucesso ou erros comuns:

Código de estado de HTTP Description Motivo possível
200 OK O pedido foi bem-sucedido. O corpo da resposta é um arquivo de áudio.
400 Mau pedido Um parâmetro necessário está ausente, vazio ou nulo. Ou, o valor passado para um parâmetro obrigatório ou opcional é inválido. Um motivo comum é um cabeçalho muito longo.
401 Não autorizado O pedido não está autorizado. Verifique se a chave de recurso ou token de fala está válido e na região correta.
415 Tipo de mídia não suportado É possível que o valor errado Content-Type tenha sido fornecido. Content-Type deve ser definido como application/ssml+xml.
429 Demasiados pedidos Você excedeu a cota ou a taxa de solicitações permitidas para seu recurso.
502 Gateway ruim Há um problema de rede ou do lado do servidor. Esse status também pode indicar cabeçalhos inválidos.

Se o status HTTP for 200 OK, o corpo da resposta conterá um arquivo de áudio no formato solicitado. Este ficheiro pode ser reproduzido à medida que é transferido, guardado numa memória intermédia ou guardado num ficheiro.

Saídas de áudio

Os formatos de streaming e não streaming de áudio suportados são enviados em cada solicitação como cabeçalho X-Microsoft-OutputFormat . Cada formato incorpora uma taxa de bits e um tipo de codificação. O serviço de Voz suporta saídas de áudio de 48 kHz, 24 kHz, 16 kHz e 8 kHz. Cada modelo de voz neural pré-construído está disponível em 24kHz e 48kHz de alta fidelidade.

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

Se selecionar o formato de saída de 48 kHz, o modelo de voz de alta fidelidade com 48 kHz será invocado em conformidade. As taxas de amostragem diferentes de 24kHz e 48kHz podem ser obtidas através de upsampling ou downsampling ao sintetizar, por exemplo, 44,1kHz é downsampled de 48kHz.

Se o formato de voz e saída selecionado tiver taxas de bits diferentes, o áudio será reamostrado conforme necessário. Você pode decodificar o formato usando o ogg-24khz-16bit-mono-opuscodec Opus.

Autenticação

Cada solicitação requer um cabeçalho de autorização. Esta tabela ilustra quais cabeçalhos são suportados para cada recurso:

Cabeçalho de autorização suportado Voz em texto Conversão de texto em voz
Ocp-Apim-Subscription-Key Sim Sim
Authorization: Bearer Sim Sim

Quando estiver a utilizar o cabeçalho, apenas é necessário fornecer a Ocp-Apim-Subscription-Key chave de recurso. Por exemplo:

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

Quando você estiver usando o cabeçalho, será necessário fazer uma solicitação para o Authorization: BearerissueToken ponto de extremidade. Nessa solicitação, você troca sua chave de recurso por um token de acesso válido por 10 minutos.

Como obter um token de acesso

Para obter um token de acesso, você precisa fazer uma solicitação ao issueToken ponto de extremidade usando Ocp-Apim-Subscription-Key e sua chave de recurso.

O issueToken ponto de extremidade tem este formato:

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

Substitua <REGION_IDENTIFIER> pelo identificador que corresponde à região da sua assinatura.

Use os exemplos a seguir para criar sua solicitação de token de acesso.

Exemplo HTTP

Este exemplo é uma solicitação HTTP simples para obter um token. Substitua YOUR_SUBSCRIPTION_KEY pela chave de recurso do serviço de Fala. Se a sua subscrição não estiver na região Oeste dos EUA, substitua o Host cabeçalho pelo nome de anfitrião da sua região.

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

O corpo da resposta contém o token de acesso no formato JSON Web Token (JWT).

Exemplo do PowerShell

Este exemplo é um script simples do PowerShell para obter um token de acesso. Substitua YOUR_SUBSCRIPTION_KEY pela chave de recurso do serviço de Fala. Certifique-se de usar o ponto de extremidade correto para a região que corresponde à sua assinatura. Este exemplo está atualmente definido como Oeste dos EUA.

$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

Exemplo de cURL

cURL é uma ferramenta de linha de comando disponível no Linux (e no Subsistema Windows para Linux). Este comando cURL ilustra como obter um token de acesso. Substitua YOUR_SUBSCRIPTION_KEY pela chave de recurso do serviço de Fala. Certifique-se de usar o ponto de extremidade correto para a região que corresponde à sua assinatura. Este exemplo está atualmente definido como Oeste dos EUA.

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"

Exemplo C#

Esta classe C# ilustra como obter um token de acesso. Passe sua chave de recurso para o serviço de Fala quando você instanciar a classe. Se a sua subscrição não estiver na região Oeste dos EUA, altere o valor de para corresponder à região da FetchTokenUri sua subscrição.

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();
        }
    }
}

Exemplo 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)

Como usar um token de acesso

O token de acesso deve ser enviado para o serviço como cabeçalho Authorization: Bearer <TOKEN> . Cada token de acesso é válido por 10 minutos. Você pode obter um novo token a qualquer momento, mas para minimizar o tráfego e a latência da rede, recomendamos usar o mesmo token por nove minutos.

Aqui está um exemplo de solicitação HTTP para a API REST de fala para texto para áudio curto:

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

Próximos passos