Udostępnij za pośrednictwem


Uwierzytelnianie Entra firmy Microsoft przy użyciu Speech SDK

W przypadku uzyskiwania dostępu do usługi Speech SDK dostępne są trzy metody uwierzytelniania: klucze usługi, token oparty na kluczach i identyfikator Entra firmy Microsoft. W tym artykule opisano, jak skonfigurować zasób usługi AI Foundry dla usługi Mowa i utworzyć obiekt konfiguracji zestawu Speech SDK w celu użycia identyfikatora Entra firmy Microsoft do uwierzytelniania.

W tym artykule pokazano, jak używać uwierzytelniania Microsoft Entra z zestawem SDK dla mowy. Dowiesz się, jak:

  • Tworzenie zasobu usługi AI Foundry dla mowy
  • Skonfiguruj zasób usługi Mowa do uwierzytelniania Microsoft Entra
  • Uzyskiwanie tokenu dostępu Microsoft Entra
  • Utwórz odpowiedni obiekt konfiguracji zestawu SDK.

Aby dowiedzieć się więcej na temat tokenów dostępu Microsoft Entra, w tym czasu życia tokenu, odwiedź stronę Tokeny dostępu na platformie tożsamości Microsoft.

Tworzenie zasobu usługi AI Foundry dla mowy

Aby utworzyć zasób AI Foundry dla usługi Mowa w witrynie Azure Portal, zobacz ten przewodnik szybkiego startu.

Skonfiguruj zasób usługi Mowa do uwierzytelniania Microsoft Entra

Aby skonfigurować zasób usługi Mowa na potrzeby uwierzytelniania w usłudze Microsoft Entra, utwórz niestandardową nazwę domeny i przypisz role.

Tworzenie niestandardowej nazwy domeny

Wykonaj następujące kroki, aby utworzyć niestandardową nazwę poddomeny dla usług Azure AI dla zasobu usługi Mowa.

Uwaga

Po włączeniu niestandardowej nazwy domeny operacja nie jest odwracalna. Jedynym sposobem powrotu do regionalnej nazwy jest utworzenie nowego zasobu Mowy.

Jeśli zasób usługi Mowa zawiera wiele skojarzonych modeli niestandardowych i projektów utworzonych za pośrednictwem usługi Speech Studio, zdecydowanie zalecamy wypróbowanie konfiguracji z zasobem testowym przed zmodyfikowaniem zasobu używanego w środowisku produkcyjnym.

Aby utworzyć niestandardową nazwę domeny przy użyciu witryny Azure Portal, wykonaj następujące kroki:

  1. Przejdź do witryny Azure Portal i zaloguj się na swoje konto platformy Azure.

  2. Wybierz wymagany zasób Mowy.

  3. W grupie Zarządzanie zasobami w okienku po lewej stronie wybierz pozycję Sieć.

  4. Na karcie Zapory i sieci wirtualne wybierz pozycję Generuj niestandardową nazwę domeny. Zostanie wyświetlony nowy panel po prawej stronie z instrukcjami tworzenia unikatowej niestandardowej poddomeny dla zasobu.

  5. W panelu Generuj niestandardową nazwę domeny wprowadź niestandardową nazwę domeny. Pełna domena niestandardowa będzie wyglądać następująco: https://{your custom name}.cognitiveservices.azure.com.

    Pamiętaj, że po utworzeniu niestandardowej nazwy domeny nie można jej zmienić.

    Po wprowadzeniu niestandardowej nazwy domeny wybierz pozycję Zapisz.

  6. Po zakończeniu operacji w grupie Zarządzanie zasobami wybierz pozycję Klucze i punkt końcowy. Upewnij się, że nowa nazwa punktu końcowego zasobu rozpoczyna się w następujący sposób: https://{your custom name}.cognitiveservices.azure.com.

Przypisywanie ról

W przypadku uwierzytelniania z Microsoft Entra z zasobami usługi Mowa Entra należy przypisać albo rolę Cognitive Services Speech Contributor, albo Cognitive Services Speech User.

Role można przypisać do użytkownika lub aplikacji przy użyciu witryny Azure Portal lub programu PowerShell.

Uzyskiwanie tokenu dostępu Microsoft Entra

Aby uzyskać token dostępu Microsoft Entra, użyj biblioteki klienta Azure Identity w C#.

Oto przykład użycia tożsamości platformy Azure do uzyskania tokenu dostępu firmy Microsoft Entra z przeglądarki interaktywnej:

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;

Uwaga

Kontekst tokenu musi być ustawiony na "https://cognitiveservices.azure.com/.default".

Aby uzyskać token dostępu Microsoft Entra w języku C++, użyj Azure Identity Client Library.

Oto przykład użycia Azure Identity w celu uzyskania tokenu dostępu Microsoft Entra z identyfikatorem dzierżawy, identyfikatorem klienta i tajnym kluczem klienta.

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

Uwaga

Kontekst tokenu musi być ustawiony na "https://cognitiveservices.azure.com/.default".

Aby uzyskać token dostępu firmy Microsoft Entra w języku Java, użyj biblioteki klienta tożsamości platformy Azure.

Oto przykład użycia tożsamości platformy Azure do uzyskania tokenu dostępu firmy Microsoft Entra z przeglądarki:

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

Uwaga

Kontekst tokenu musi być ustawiony na "https://cognitiveservices.azure.com/.default".

Aby uzyskać token dostępu firmy Microsoft Entra w języku programowania Python, użyj Biblioteki klienta Microsoft Identity dla platformy Azure.

Oto przykład użycia tożsamości platformy Azure do uzyskania tokenu dostępu firmy Microsoft Entra z przeglądarki interaktywnej:

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

Więcej przykładów

Znajdź przykłady, które uzyskują token dostępu Microsoft Entra w przykładach kodu platformy tożsamości Microsoft.

W przypadku języków programowania, w których biblioteka klienta Platforma tożsamości Microsoft jest niedostępna, można bezpośrednio zażądać tokenu dostępu.

Pobierz identyfikator zasobu Mowy

Identyfikator zasobu usługi Mowa jest potrzebny do wykonywania wywołań zestawu SDK przy użyciu uwierzytelniania Microsoft Entra w scenariuszach, które jeszcze nie obsługują bezpośrednio Entra ID.

Aby uzyskać identyfikator zasobu w witrynie Azure Portal:

  1. Przejdź do witryny Azure Portal i zaloguj się na swoje konto platformy Azure.
  2. Wybierz zasób usługi AI Foundry dla usługi Mowa.
  3. W grupie Zarządzanie zasobami w okienku po lewej stronie wybierz pozycję Właściwości.
  4. Kopiowanie identyfikatora zasobu

Tworzenie obiektu konfiguracji zestawu SPEECH SDK

Za pomocą tokenu dostępu firmy Microsoft Entra można teraz utworzyć obiekt konfiguracji zestawu Speech SDK.

Metoda podawania tokenu i metoda konstruowania odpowiedniego obiektu zestawu SPEECH SDK Config różni się w zależności od używanego obiektu.

Rozpoznawanie Mowy (SpeechRecognizer), Rozpoznawanie Języka Źródłowego (SourceLanguageRecognizer), Transkrybent Rozmów (ConversationTranscriber)

W przypadku obiektów SpeechRecognizer, SourceLanguageRecognizer, ConversationTranscriber użyj odpowiedniego wystąpienia TokenCredential do uwierzytelniania wraz z punktem końcowym obejmującym domenę niestandardową, aby utworzyć obiekt SpeechConfig.

TokenCredential browserCredential = new InteractiveBrowserCredential();

// Define the custom domain endpoint for your Speech resource.
var endpoint = "https://{your custom name}.cognitiveservices.azure.com/";

// Create the SpeechConfig object using the custom domain endpoint and TokenCredential.
var speechConfig = SpeechConfig.FromEndpoint(new Uri(endpoint), browserCredential);

Rozpoznawanie tłumaczeń

W przypadku obiektu TranslationRecognizer użyj odpowiedniego wystąpienia TokenCredential do uwierzytelniania przy użyciu punktu końcowego zawierającego domenę niestandardową, aby utworzyć obiekt SpeechTranslationConfig.

TokenCredential browserCredential = new InteractiveBrowserCredential();

// Define the custom domain endpoint for your Speech resource
var endpoint = "https://{your custom name}.cognitiveservices.azure.com/";

// Create the SpeechTranslationConfig object using the custom domain endpoint and TokenCredential.
var speechConfig = SpeechTranslationConfig.FromEndpoint(new Uri(endpoint), browserCredential);

Syntezator Mowy, Rozpoznawanie Intencji

Dla SpeechSynthesizer obiektów, utwórz token autoryzacji z identyfikatora zasobu i tokenu dostępu Microsoft Entra, a następnie użyj go do utworzenia obiektu IntentRecognizer.

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

Rozpoznawanie Mowy, Syntezator Mowy, Rozpoznawanie Intencji, Transkrypcja Rozmów

W przypadku obiektów SpeechRecognizer, SpeechSynthesizer, IntentRecognizer, ConversationTranscriber zbuduj token autoryzacji na podstawie identyfikatora zasobu i tokenu dostępu Microsoft Entra, a następnie użyj go do utworzenia obiektu SpeechConfig.

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

Rozpoznawanie tłumaczeń

W przypadku elementu TranslationRecognizerutwórz token autoryzacji na podstawie identyfikatora zasobu i tokenu dostępu Firmy Microsoft Entra, a następnie użyj go do utworzenia SpeechTranslationConfig obiektu.

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

Rozpoznawacz mowy, Transkrybator rozmowy

ConversationTranscriber W przypadku SpeechRecognizerobiektów użyj odpowiedniego wystąpienia tokenuCredential do uwierzytelniania wraz z punktem końcowym obejmującym domenę niestandardowąSpeechConfig, aby utworzyć obiekt.

TokenCredential browserCredential = new InteractiveBrowserCredentialBuilder().build();

// Define the custom domain endpoint for your Speech resource.
String endpoint = "https://{your custom name}.cognitiveservices.azure.com/";

// Create the SpeechConfig object using the custom domain endpoint and TokenCredential.
SpeechConfig speechConfig = SpeechConfig.fromEndpoint(new java.net.URI(endpoint), browserCredential);

Rozpoznawanie tłumaczeń

W przypadku obiektu TranslationRecognizer użyj odpowiedniego wystąpienia TokenCredential do uwierzytelniania przy użyciu punktu końcowego zawierającego domenę niestandardową, aby utworzyć obiekt SpeechTranslationConfig.

TokenCredential browserCredential = new InteractiveBrowserCredentialBuilder().build();

// Define the custom domain endpoint for your Speech resource
String endpoint = "https://{your custom name}.cognitiveservices.azure.com/";

// Create the SpeechTranslationConfig object using the custom domain endpoint and TokenCredential.
SpeechConfig speechConfig = SpeechTranslationConfig.fromEndpoint(new java.net.URI(endpoint), browserCredential);

Syntezator Mowy, Rozpoznawanie Intencji

Dla SpeechSynthesizer obiektów, utwórz token autoryzacji z identyfikatora zasobu i tokenu dostępu Microsoft Entra, a następnie użyj go do utworzenia obiektu IntentRecognizer.

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

Rozpoznawanie Mowy, Transkrypcja Rozmów

W przypadku obiektów SpeechRecognizer, użyj odpowiedniego wystąpienia TokenCredential do uwierzytelniania razem z punktem końcowym obejmującym domenę niestandardową, aby utworzyć obiekt SpeechConfig.

browserCredential = InteractiveBrowserCredential()

// Define the custom domain endpoint for your Speech resource.
custom_endpoint = "https://{your custom name}.cognitiveservices.azure.com/"

// Create the SpeechConfig object using the custom domain endpoint and TokenCredential.
speechConfig = SpeechConfig(token_credential=credential, endpoint=custom_endpoint)

Rozpoznawanie tłumaczeń

W przypadku obiektu TranslationRecognizer użyj odpowiedniego wystąpienia TokenCredential do uwierzytelniania przy użyciu punktu końcowego zawierającego domenę niestandardową, aby utworzyć obiekt SpeechTranslationConfig.

browserCredential = InteractiveBrowserCredential()

// Define the custom domain endpoint for your Speech resource
custom_endpoint = "https://{your custom name}.cognitiveservices.azure.com/"

// Create the SpeechTranslationConfig object using the custom domain endpoint and TokenCredential.
speechTranslationConfig = SpeechTranslationConfig(token_credential=credential, endpoint=custom_endpoint)

Syntezator Mowy, Rozpoznawanie Intencji

Dla SpeechSynthesizer obiektów, utwórz token autoryzacji z identyfikatora zasobu i tokenu dostępu Microsoft Entra, a następnie użyj go do utworzenia obiektu IntentRecognizer.

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)

VoiceProfileClient

Aby użyć VoiceProfileClient w uwierzytelnianiu Microsoft Entra, użyj utworzonej powyżej niestandardowej nazwy domeny.

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

Zestaw VoiceProfileClient SPEECH SDK dla języka Python nie jest dostępny.

Uwaga

Element ConversationTranslator nie obsługuje uwierzytelniania Microsoft Entra.