Аутентификация Microsoft Entra с помощью Speech SDK

При использовании пакета SDK службы "Речь" для доступа к службе "Речь" доступны три метода проверки подлинности: ключи службы, маркер на основе ключей и идентификатор Microsoft Entra. В этой статье описывается, как настроить ресурс Foundry и создать объект конфигурации SDK для использования идентификатора Microsoft Entra в целях аутентификации.

В этой статье показано, как использовать аутентификацию Microsoft Entra с Speech SDK. Вы научитесь:

  • Создание ресурса Foundry
  • Настройка ресурса распознавания речи для аутентификации Microsoft Entra
  • Получите токен доступа Microsoft Entra
  • создавать соответствующий объект конфигурации пакета SDK.

Чтобы узнать больше о токенах доступа Microsoft Entra, включая время существования токенов, посетите Токены доступа в Платформе удостоверений Майкрософт.

Создание ресурса Foundry

Сведения о создании ресурса Foundry на портале Azure см. в этом кратком руководстве.

Настройка ресурса распознавания речи для аутентификации Microsoft Entra

Чтобы настроить речевой ресурс для проверки подлинности Microsoft Entra, создайте пользовательское доменное имя и назначьте роли.

Создание пользовательского доменного имени

Выполните следующие действия, чтобы создать пользовательское имя поддомена для Foundry Tools в вашем ресурсе "Речь".

Внимание

Операция включения имени личного домена необратима. Единственный способ вернуться к региональному имени — создать новый ресурс "Речь".

Если у вашего ресурса речи много связанных пользовательских моделей и проектов, созданных с помощью Speech Studio, настоятельно рекомендуется выполнить настройку с помощью тестового ресурса, прежде чем изменять ресурс, используемый в производственной среде.

Чтобы создать имя личного домена на портале Azure, выполните следующие действия:

  1. Откройте портал Azure и войдите в свою учетную запись Azure.

  2. Выберите необходимый ресурс Speech.

  3. В группе Управление ресурсами на левой панели выберите Сеть.

  4. На вкладке Брандмауэры и виртуальные сети выберите Создать пользовательское доменное имя. Справа появится новая панель с инструкциями по созданию уникального пользовательского поддомена для ресурса.

  5. На панели Создание пользовательского доменного имени введите пользовательское доменное имя. Полное имя вашего личного домена будет выглядеть так: https://{your custom name}.cognitiveservices.azure.com.

    Помните, что после создания пользовательского доменного имени его нельзя изменить.

    Указав пользовательское доменное имя, нажмите кнопку Сохранить.

  6. После завершения операции в группе Управление ресурсами выберите Ключи и конечная точка. Убедитесь, что имя новой конечной точки ресурса начинается так: https://{your custom name}.cognitiveservices.azure.com.

Назначьте роли

Для проверки подлинности Microsoft Entra с ресурсами службы распознавания речи необходимо назначить роль "Участник службы распознавания речи Cognitive Services" или "Пользователь службы распознавания речи Cognitive Services".

Роли можно назначить пользователю или приложению с помощью портала Azure или PowerShell.

Получите токен доступа Microsoft Entra

Чтобы получить токен доступа Microsoft Entra в C#, используйте библиотеку Azure Identity Client.

Приведён пример использования Azure Identity для получения токена доступа Microsoft Entra через интерактивный браузер.

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;

Примечание.

Для контекста маркера необходимо задать значение https://cognitiveservices.azure.com/.default".

Чтобы получить маркер доступа Microsoft Entra в C++, используйте клиентскую библиотеку удостоверений Azure.

Ниже приведен пример использования удостоверения Azure для получения маркера доступа Microsoft Entra, используя идентификатор арендатора, идентификатор клиента и данные секрета клиента.

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

Примечание.

Для контекста маркера необходимо задать значение https://cognitiveservices.azure.com/.default".

Чтобы получить токен доступа Microsoft Entra на Java, используйте библиотеку клиентов удостоверений Azure.

Пример использования удостоверения Azure для получения токена доступа Microsoft Entra из браузера:

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

Примечание.

Для контекста маркера необходимо задать значение https://cognitiveservices.azure.com/.default".

Чтобы получить токен доступа Microsoft Entra в Python, используйте Azure Identity Client Library.

Приведён пример использования Azure Identity для получения токена доступа Microsoft Entra через интерактивный браузер.

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

Другие примеры

Найдите примеры, которые получают токен доступа Microsoft Entra в примерах кода платформы идентификации Microsoft.

Для языков программирования, для которых клиентская библиотека платформы удостоверений Майкрософт недоступна, можно запрашивать маркер доступа напрямую.

Получите идентификатор ресурса "Речь"

Вам нужен идентификатор ресурса службы "Речь", чтобы совершать вызовы SDK с помощью проверки подлинности Microsoft Entra в сценариях, которые пока не поддерживают Entra ID напрямую.

Чтобы получить идентификатор ресурса на портале Azure, выполните следующие действия.

  1. Откройте портал Azure и войдите в свою учетную запись Azure.
  2. Выберите ресурс Foundry.
  3. В группе Управление ресурсами на левой панели выберите Свойства.
  4. Скопируйте Идентификатор ресурса.

Создать объект конфигурации SDK для службы речевых технологий

С помощью токена доступа Microsoft Entra вы можете создать объект конфигурации SDK для речевой службы.

Метод предоставления токена и метод создания соответствующего объекта SDK Config службы "Речь" зависят от используемого вами объекта.

Распознаватель речи, Определитель языка источника, Транскриптор беседы

Для объектов SpeechRecognizer, SourceLanguageRecognizer, ConversationTranscriber используйте соответствующий экземпляр TokenCredential для аутентификации, а также конечную точку, включающую ваш пользовательский домен, чтобы создать объект 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);

Распознаватель перевода

Для TranslationRecognizer объекта используйте соответствующий экземпляр TokenCredential для проверки подлинности, а также конечную точку, включающую личный домен, для создания 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);

Синтезатор речи

Для SpeechSynthesizer объектов используйте соответствующий экземпляр TokenCredential для проверки подлинности. Вместе с конечной точкой, содержащей ваш пользовательский домен, используйте эти учетные данные, чтобы создать объект 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);

Распознаватель речи (SpeechRecognizer), Синтезатор речи (SpeechSynthesizer), Транскрибатор разговора (ConversationTranscriber)

Для объектов SpeechRecognizer, SpeechSynthesizer и ConversationTranscriber используйте соответствующий экземпляр TokenCredential для аутентификации. Вместе с конечной точкой, содержащей ваш пользовательский домен, используйте эти учетные данные, чтобы создать объект SpeechConfig.

auto browserCredential = std::make_shared<Azure::Identity::InteractiveBrowserCredential>();

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

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

Распознаватель перевода

Для TranslationRecognizer используйте подходящий экземпляр TokenCredential для аутентификации. Вместе с конечной точкой, содержащей ваш пользовательский домен, используйте эти учетные данные, чтобы создать объект SpeechTranslationConfig.

auto browserCredential = std::make_shared<Azure::Identity::InteractiveBrowserCredential>();

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

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

Распознаватель речи, Транскриптор разговоров

Для SpeechRecognizerConversationTranscriber объектов используйте соответствующий экземпляр TokenCredential для проверки подлинности, а также конечную точку, включающую ваш пользовательский домен, для создания SpeechConfig объекта.

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

Распознаватель перевода

Для TranslationRecognizer объекта используйте соответствующий экземпляр TokenCredential для проверки подлинности, а также конечную точку, включающую личный домен, для создания 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);

Синтезатор речи

Для SpeechSynthesizer объекта используйте соответствующий экземпляр TokenCredential для проверки подлинности. Вместе с конечной точкой, содержащей ваш пользовательский домен, используйте эти учетные данные, чтобы создать объект SpeechConfig.

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

Распознаватель речи, Транскриптор разговоров

Для SpeechRecognizerConversationTranscriber объектов используйте соответствующий экземпляр TokenCredential для проверки подлинности, а также конечную точку, включающую ваш пользовательский домен, для создания 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=browserCredential, endpoint=custom_endpoint)

Распознаватель перевода

Для TranslationRecognizer объекта используйте соответствующий экземпляр TokenCredential для проверки подлинности, а также конечную точку, включающую личный домен, для создания 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=browserCredential, endpoint=custom_endpoint)

Синтезатор речи

SpeechSynthesizer Для объекта используйте соответствующий экземпляр TokenCredential для проверки подлинности. Наряду с конечной точкой, включающей личный домен, используйте эти элементы для создания 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=browserCredential, endpoint=custom_endpoint)

Примечание.

Аутентификация Microsoft Entra не поддерживается ConversationTranslator.