Share via


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 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. Sabe como:

  • Criar um recurso de Fala
  • Configurar o recurso de Fala para autenticação do Microsoft Entra
  • Obter um de acesso do Microsoft Entra
  • Crie o objeto de configuração 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 Obter as chaves para o seu recurso

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

Para configurar seu 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 estas etapas para criar um nome de subdomínio personalizado para os serviços de IA do Azure para seu recurso de Fala.

Atenção

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

Se o recurso de Fala tiver muitos modelos personalizados associados e projetos criados por meio do Speech Studio, é altamente recomendável tentar 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. Aceda ao portal do Azure e inicie sessão com a 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 direito é exibido com instruções para criar um subdomínio personalizado exclusivo para seu recurso.

  5. No painel Gerar nome de domínio personalizado, insira um nome de domínio personalizado. Seu domínio personalizado completo será parecido com: https://{your custom name}.cognitiveservices.azure.com.

    Lembre-se de que, depois de criar um nome de domínio personalizado, ele não pode ser alterado.

    Depois de inserir seu 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 seu recurso começa desta forma: 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 Colaborador de Fala dos Serviços Cognitivos ou Usuário de Fala dos Serviços Cognitivos.

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

Obter um de acesso do Microsoft Entra

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

Veja 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;

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

Para obter um token de acesso do Microsoft Entra em C++, use a Biblioteca de Cliente do Azure Identity.

Eis um exemplo de utilização da Identidade do Azure para obter um token de acesso do Microsoft Entra com o seu ID de inquilino, ID de cliente e credenciais de segredo do cliente:

const std::string tenantId = "Your Tenant ID";
const std::string clientId = "Your Client ID";
const std::string clientSecret = "Your Client Secret";
const std::string tokenContext = "https://cognitiveservices.azure.com/.default";

Azure::Identity::ClientSecretCredential cred(tenantId,
    clientId,
    clientSecret,
    Azure::Identity::ClientSecretCredentialOptions());

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

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

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 Cliente do Azure Identity.

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

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 Cliente do Azure Identity.

Veja 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 em que uma biblioteca de cliente da plataforma de identidade da Microsoft não está disponível, você pode solicitar diretamente um token de acesso.

Obter o ID do recurso de Fala

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

Nota

Para reconhecimento de intenção, use seu ID de recurso de previsão LUIS.

Para obter a ID do recurso no portal do Azure:

  1. Aceda ao portal do Azure e inicie sessão com a sua conta do Azure.
  2. Selecione um recurso de fala.
  3. No grupo Gerenciamento de Recursos no painel esquerdo, selecione Propriedades.
  4. Copie o 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 fornecimento do token e o método para construir o objeto Speech SDK Config correspondente varia de acordo com o objeto que você está usando.

SpeechRecognizer, SpeechSynthesizer, IntentRecognizer, ConversationTranscriber

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

string resourceId = "Your Resource ID";
string aadToken = "Your Azure AD access token";
string region =  "Your Speech Region";

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

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD 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 AAD 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 AAD access token.
authorizationToken = "aad#" + resourceId + "#" + aadToken.token
speechConfig = SpeechConfig(auth_token=authorizationToken, region=region)

TraduçãoRecognizer

Para o , crie o token de autorização a partir da ID do recurso e do token de acesso do Microsoft Entra e use-o TranslationRecognizerpara criar um SpeechTranslationConfig objeto.

string resourceId = "Your Resource ID";
string aadToken = "Your Azure AD access token";
string region =  "Your Speech Region";

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

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD 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 AAD 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 AAD access token.
authorizationToken = "aad#" + resourceId + "#" + aadToken.token
translationConfig = SpeechTranslationConfig(auth_token=authorizationToken, region=region)

DialogServiceConnector

Para o objeto, crie o token de autorização a partir da ID do recurso e do token de acesso do Microsoft Entra e use-o DialogServiceConnection para criar um ou um CustomCommandsConfigBotFrameworkConfig objeto.

string resourceId = "Your Resource ID";
string aadToken = "Your Azure AD access token";
string region =  "Your Speech Region";
string appId = "Your app ID";

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
var authorizationToken = $"aad#{resourceId}#{aadToken}";
var customCommandsConfig = CustomCommandsConfig.FromAuthorizationToken(appId, authorizationToken, region);
std::string resourceId = "Your Resource ID";
std::string aadToken = "Your Azure AD access token";
std::string region = "Your Speech Region";
std::string appId = "Your app Id";

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

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
String authorizationToken = "aad#" + resourceId + "#" + token;
CustomCommandsConfig dialogServiceConfig = CustomCommandsConfig.fromAuthorizationToken(appId, authorizationToken, region);

O DialogServiceConnector não é suportado atualmente em Python

VoiceProfileClient

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

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

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

// You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and AAD access token.
var authorizationToken = $"aad#{resourceId}#{aadToken}";
config.AuthorizationToken = authorizationToken;
std::string customDomainName = "Your Custom Name";
std::string aadToken = "Your Azure AD 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 AAD access token.
auto authorizationToken = "aad#" + resourceId + "#" + aadToken;
speechConfig->SetAuthorizationToken(authorizationToken);
String aadToken = "Your Azure AD 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 AAD access token.
String authorizationToken = "aad#" + resourceId + "#" + token;

speechConfig.setAuthorizationToken(authorizationToken);

O VoiceProfileClient não está disponível com o Speech SDK for Python.

Nota

O ConversationTranslator não suporta a autenticação do Microsoft Entra.