Autenticação do Microsoft Entra com o SDK de Fala

Ao usar o SDK de Fala para acessar o serviço de Fala, há três métodos de autenticação disponíveis: chaves de serviço, um token baseado em chave e a ID do Microsoft Entra. Este artigo descreve como configurar um recurso de Fala e criar um objeto de configuração do SDK de Fala para usar a ID do Microsoft Entra para autenticação.

Este artigo mostra como usar a autenticação do Microsoft Entra com o SDK de Fala. Você aprenderá como:

  • Criar um recurso de Fala
  • Configurar o recurso de Fala para autenticação do Microsoft Entra
  • Obter um token de acesso do Microsoft Entra
  • Criar o objeto de configuração do SDK apropriado.

Para saber mais sobre os tokens de acesso do Microsoft Entra, incluindo o tempo de vida do token, visite tokens do Access na plataforma de identidade da Microsoft.

Criar um recurso de Fala

Para criar um recurso de Fala no portal do Azure, consulte este início rápido.

Configurar o recurso de Fala para autenticação do Microsoft Entra

Para configurar o recurso de Fala para autenticação do Microsoft Entra, crie um nome de domínio personalizado e atribua funções.

Criar um nome de domínio personalizado

Siga as etapas a seguir para criar um nome de subdomínio personalizado para os serviços de IA do Azure para seu recurso de Fala.

Cuidado

Quando você ativa um nome de domínio personalizado, a operação não é reversível. A única maneira de voltar para o nome regional é criar outro recurso de Fala.

Se o recurso de Fala tem muitos modelos e projetos personalizados associados criados por meio do Speech Studio, é altamente recomendável experimentar a configuração com um recurso de teste antes de modificar o recurso usado na produção.

Para criar um nome de domínio personalizado usando o portal do Azure, siga estas etapas:

  1. Vá para o portal do Azure e entre em sua conta do Azure.

  2. Selecione o recurso de Fala necessário.

  3. No grupo Gerenciamento de Recursos no painel esquerdo, selecione Rede.

  4. Na guia Firewalls e redes virtuais, selecione Gerar nome de domínio personalizado. Um novo painel é exibido à direita, com instruções para criar um subdomínio personalizado exclusivo para o recurso.

  5. No painel Gerar nome de domínio personalizado, insira um nome de domínio personalizado. O domínio personalizado completo terá a seguinte aparência: https://{your custom name}.cognitiveservices.azure.com.

    Lembre-se de que, após você criar um nome de domínio personalizado, ele não poderá ser alterado.

    Depois de inserir o nome de domínio personalizado, selecione Salvar.

  6. Após a conclusão da operação, no grupo Gerenciamento de recursos, selecione Chaves e ponto de extremidade. Confirme se o novo nome do ponto de extremidade do recurso é iniciado dessa maneira: https://{your custom name}.cognitiveservices.azure.com.

Atribuir funções

Para autenticação do Microsoft Entra com recursos de Fala, você precisa atribuir a função de Usuário de Fala dos Serviços Cognitivos ou de Usuário de Fala dos Serviços Cognitivos.

Você pode atribuir funções ao usuário ou ao aplicativo usando o portal do Azure ou o PowerShell.

Obter um token de acesso do Microsoft Entra

Para obter um token de acesso do Microsoft Entra em C#, use a Biblioteca de Clientes de Identidade do Azure.

Aqui está um exemplo de como usar a Identidade do Azure para obter um token de acesso do Microsoft Entra de um navegador interativo:

TokenRequestContext context = new Azure.Core.TokenRequestContext(new string[] { "https://cognitiveservices.azure.com/.default" });
InteractiveBrowserCredential browserCredential = new InteractiveBrowserCredential();
var browserToken = browserCredential.GetToken(context);
string aadToken = browserToken.Token;

Observação

O contexto do token deve ser definido como "https://cognitiveservices.azure.com/.default".

Para obter um token de acesso do Microsoft Entra no C++, use a Biblioteca de Clientes de Identidade do Azure.

Aqui está um exemplo de como usar a Identidade do Azure para obter um token de acesso do Microsoft Entra com a ID do locatário, a ID do cliente e as credenciais de segredo do cliente:

const std::string tokenContext = "https://cognitiveservices.azure.com/.default";

Azure::Identity::DefaultAzureCredential();

Azure::Core::Credentials::TokenRequestContext context;
context.Scopes.push_back(tokenContext);

auto token = cred.GetToken(context, Azure::Core::Context());

Observação

O contexto do token deve ser definido como "https://cognitiveservices.azure.com/.default".

Para obter um token de acesso do Microsoft Entra em Java, use a Biblioteca de Clientes de Identidade do Azure.

Veja um exemplo de como usar a Identidade do Azure para obter um token de acesso do Microsoft Entra de um navegador:

TokenRequestContext context = new TokenRequestContext();
context.addScopes("https://cognitiveservices.azure.com/.default");

InteractiveBrowserCredentialBuilder builder = new InteractiveBrowserCredentialBuilder();
InteractiveBrowserCredential browserCredential = builder.build();

AccessToken browserToken = browserCredential.getToken(context).block();
String token = browserToken.getToken();

Observação

O contexto do token deve ser definido como "https://cognitiveservices.azure.com/.default".

Para obter um token de acesso do Microsoft Entra em Java, use a Biblioteca de Clientes de Identidade do Azure.

Aqui está um exemplo de como usar a Identidade do Azure para obter um token de acesso do Microsoft Entra de um navegador interativo:

from azure.identity import  InteractiveBrowserCredential
ibc = InteractiveBrowserCredential()
aadToken = ibc.get_token("https://cognitiveservices.azure.com/.default")

Encontre exemplos que obtêm um token de acesso do Microsoft Entra em exemplos de código da plataforma de identidade da Microsoft.

Para linguagens de programação nas quais uma biblioteca de cliente da plataforma de identidade da Microsoft não está disponível, você pode solicitar um token de acesso diretamente.

Obter a ID do recurso de Fala

Você precisa da ID do recurso de Fala para fazer chamadas do SDK usando a autenticação do Microsoft Entra.

Observação

Para o Reconhecimento de intenção, use sua ID de recurso de Previsão LUIS.

Para obter a ID do recurso no portal do Azure:

  1. Vá para o portal do Azure e entre em sua conta do Azure.
  2. Selecionar um recurso de Fala.
  3. No grupo Gerenciamento de Recursos no painel esquerdo, selecione Propriedades.
  4. Copie a ID do recurso

Criar o objeto de configuração do SDK de Fala

Com um token de acesso do Microsoft Entra, agora você pode criar um objeto de configuração do SDK de Fala.

O método de fornecer o token e o método para construir o objeto Config do SDK de Fala correspondente varia de acordo com o objeto que você está usando.

SpeechRecognizer, SpeechSynthesizer, IntentRecognizer, ConversationTranscriber

Para os objetos SpeechRecognizer, SpeechSynthesizer, IntentRecognizer, ConversationTranscriber, crie o token de autorização a partir da ID do recurso e do token de acesso do Microsoft Entra e, em seguida, use-o para criar um objeto SpeechConfig.

string resourceId = "Your Resource ID";
string aadToken = "Your Microsoft Entra access token";
string region =  "Your Speech Region";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and Microsoft Entra access token.
var authorizationToken = $"aad#{resourceId}#{aadToken}";
var speechConfig = SpeechConfig.FromAuthorizationToken(authorizationToken, region);
std::string resourceId = "Your Resource ID";
std::string aadToken = "Your Microsoft Entra access token";
std::string region = "Your Speech Region";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and Microsoft Entra access token.
auto authorizationToken = "aad#" + resourceId + "#" + aadToken;
auto speechConfig = SpeechConfig::FromAuthorizationToken(authorizationToken, region);
String resourceId = "Your Resource ID";
String region = "Your Region";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and Microsoft Entra access token.
String authorizationToken = "aad#" + resourceId + "#" + token;
SpeechConfig speechConfig = SpeechConfig.fromAuthorizationToken(authorizationToken, region);
resourceId = "Your Resource ID"
region = "Your Region"
# You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and Microsoft Entra access token.
authorizationToken = "aad#" + resourceId + "#" + aadToken.token
speechConfig = SpeechConfig(auth_token=authorizationToken, region=region)

TranslationRecognizer

Para o TranslationRecognizer, crie o token de autorização com base na ID do recurso e no token de acesso do Microsoft Entra e, em seguida, use-o para criar um objeto SpeechTranslationConfig.

string resourceId = "Your Resource ID";
string aadToken = "Your Microsoft Entra access token";
string region =  "Your Speech Region";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and Microsoft Entra access token.
var authorizationToken = $"aad#{resourceId}#{aadToken}";
var speechConfig = SpeechTranslationConfig.FromAuthorizationToken(authorizationToken, region);
std::string resourceId = "Your Resource ID";
std::string aadToken = "Your Microsoft Entra access token";
std::string region = "Your Speech Region";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and Microsoft Entra access token.
auto authorizationToken = "aad#" + resourceId + "#" + aadToken;
auto speechConfig = SpeechTranslationConfig::FromAuthorizationToken(authorizationToken, region);
String resourceId = "Your Resource ID";
String region = "Your Region";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and Microsoft Entra access token.
String authorizationToken = "aad#" + resourceId + "#" + token;
SpeechTranslationConfig translationConfig = SpeechTranslationConfig.fromAuthorizationToken(authorizationToken, region);
resourceId = "Your Resource ID"
region = "Your Region"

# You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and Microsoft Entra access token.
authorizationToken = "aad#" + resourceId + "#" + aadToken.token
translationConfig = SpeechTranslationConfig(auth_token=authorizationToken, region=region)

VoiceProfileClient

Para usar o VoiceProfileClient com a autenticação do Microsoft Entra, use o nome de domínio personalizado criado acima.

string customDomainName = "Your Custom Name";
string hostName = $"https://{customDomainName}.cognitiveservices.azure.com/";
string token = "Your Microsoft Entra access token";

var config =  SpeechConfig.FromHost(new Uri(hostName));

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and Microsoft Entra access token.
var authorizationToken = $"aad#{resourceId}#{aadToken}";
config.AuthorizationToken = authorizationToken;
std::string customDomainName = "Your Custom Name";
std::string aadToken = "Your Microsoft Entra access token";

auto speechConfig = SpeechConfig::FromHost("https://" + customDomainName + ".cognitiveservices.azure.com/");

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and Microsoft Entra access token.
auto authorizationToken = "aad#" + resourceId + "#" + aadToken;
speechConfig->SetAuthorizationToken(authorizationToken);
String aadToken = "Your Microsoft Entra access token";
String customDomainName = "Your Custom Name";
String hostName = "https://" + customDomainName + ".cognitiveservices.azure.com/";
SpeechConfig speechConfig = SpeechConfig.fromHost(new URI(hostName));

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and Microsoft Entra access token.
String authorizationToken = "aad#" + resourceId + "#" + token;

speechConfig.setAuthorizationToken(authorizationToken);

O VoiceProfileClient não está disponível com o SDK de Fala para Python.

Observação

O ConversationTranslator não é compatível com a autenticação Microsoft Entra.