Использование службы распознавания речи через частный конечный пункт

Приватный канал Azure позволяет подключаться к службам в Azure с помощью частной конечной точки. Частная конечная точка — это частный IP-адрес, доступный только в определенной виртуальной сети и подсети.

В этой статье объясняется, как настроить и использовать Приватный канал и частные конечные точки со службой "Речь". Затем описывается, как удалить частные конечные точки позже, но продолжать использовать ресурс «Речь».

Общие сведения о шагах

задачи Команда CLI Оценка времени
Создание личного домена az cognitiveservices account update --custom-domain <name> 1 мин.
Проверка доступности домена az rest --method post --url ".../checkDomainAvailability" 30 с
Создание частной конечной точки az network private-endpoint create ... 2–3 мин
Настройка частного DNS az network private-dns zone create ... 2–3 мин
Проверка разрешения DNS nslookup <custom-name>.cognitiveservices.azure.com 30 с

Необходимые компоненты

Прежде чем продолжить, ознакомьтесь с тем, как использовать виртуальные сети с помощью средств Foundry.

  • Подписка Azure. Создайте бесплатную учетную запись , если у вас нет учетной записи. Проверьте с помощью az account show.
  • Azure CLI (последняя версия). Установка или обновление с помощью az upgrade. Проверьте с помощью az --version.
  • Ресурс "Речь" (уровень S0). Создайте с помощью az cognitiveservices account create --kind SpeechServices --sku S0 .... Проверьте с помощью az cognitiveservices account show --name <name> --resource-group <rg>.
  • Виртуальная сеть с подсетью. Создайте с помощью az network vnet create .... Проверьте с помощью az network vnet show --name <vnet> --resource-group <rg>.

Примечание.

Если вы используете PowerShell вместо Azure CLI, вам потребуется PowerShell 7.x или более поздней версии с модулем Azure PowerShell 5.1.0 или более поздней версии. Проверка с помощью $PSVersionTable и Get-Module -ListAvailable Az.

Для настройки ресурса "Речь" для сценариев приватной конечной точки требуются следующие задачи:

  1. Создание имени личного домена
  2. Включите частные конечные точки
  3. Настройка существующих приложений и решений

Частные конечные точки и конечные точки службы виртуальной сети

Azure предоставляет частные конечные точки и конечные точки службы виртуальной сети для трафика, который туннелируется через частную магистральную сеть Azure. Назначение и базовые технологии, используемые для этих типов конечных точек, похожи. Однако между ними есть и различия. Перед проектированием сети рекомендуется ознакомиться с преимуществами и недостатками обоих вариантов.

При выборе технологии необходимо учитывать следующие моменты.

  • Обе технологии гарантируют, что трафик между виртуальной сетью и ресурсом службы "Речь" не передается через общедоступный Интернет.
  • Частная конечная точка предоставляет выделенный частный IP-адрес для вашего ресурса службы "Речь". Этот IP-адрес доступен только внутри конкретной виртуальной сети и подсети. Вы полностью контролируете доступ к нему в своей сетевой инфраструктуре.
  • Конечные точки службы виртуальной сети не предоставляют выделенный частный IP-адрес для ресурса службы "Речь". Вместо этого они инкапсулируют все пакеты, отправленные в ресурс службы "Речь", и доставляют их непосредственно через магистральную сеть Azure.
  • Обе технологии поддерживают локальное размещение. По умолчанию при использовании конечных точек службы виртуальной сети нельзя получить доступ к ресурсам служб Azure, защищенным в виртуальных сетях, из локальных сетей. Однако можно изменить это поведение.
  • Конечные точки службы виртуальной сети часто используются для ограничения доступа к ресурсу Foundry для службы "Речь" на основе виртуальных сетей, из которых происходит трафик.
  • Для средств Foundry, включение конечной точки службы виртуальной сети заставляет трафик для всех ресурсов Microsoft Foundry проходить через частную магистральную сеть. Для этого требуется явно настроить доступ к сети. (Дополнительные сведения см. в разделе Настройка виртуальных сетей и параметры сетевых ресурсов службы "Речь"). Частные конечные точки не предполагают такого ограничения и дают больше гибких возможностей для настройки сети. Вы можете получить доступ к одному ресурсу через частную магистраль, а к другому — через общедоступный Интернет, используя одну и ту же подсеть одной и той же виртуальной сети.
  • Использование частных конечных точек требует дополнительных затрат. Конечные точки служб для виртуальной сети не требуют дополнительных затрат.
  • Для частных конечных точек нужна дополнительная настройка DNS.
  • Один ресурс службы "Речь" может одновременно работать и с частными конечными точками, и с конечными точками службы виртуальной сети.

Перед тем как принимать решение на этапе проектирования для рабочей среды, мы рекомендуем опробовать оба типа конечных точек.

Дополнительные сведения см. в следующих ресурсах:

В этой статье описывается использование частных конечных точек со службой "Речь". Использование конечных точек службы виртуальной сети описано в разделе "Использование службы "Речь" через конечную точку службы виртуальной сети.

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

Внимание

Ресурс распознавания речи с включенным пользовательским доменом использует иной способ взаимодействия с сервисом распознавания речи. Вам может потребоваться настроить код приложения для обоих сценариев: с закрытой конечной точкой и без закрытой конечной точки.

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

Внимание

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

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

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

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

  2. Выберите необходимый ресурс для распознавания речи.

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

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

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

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

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

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

Включите частные конечные точки

Используйте частную зону DNS , подключенную к виртуальной сети, с необходимыми обновлениями для частных конечных точек. Частную зону DNS можно создать в процессе подготовки к работе. Если вы используете собственный DNS-сервер, может потребоваться также изменить конфигурацию DNS.

Прежде чем подготовить частные конечные точки для ресурса речевой технологии в производственной среде, выберите стратегию DNS. Проверьте изменения DNS, особенно если вы используете собственный DNS-сервер.

Создание частной конечной точки

Выполните следующие действия, чтобы создать частную конечную точку для вашего речевого ресурса. Замените значения заполнителей фактическими значениями:

Шаг 1. Убедитесь, что в подсети отключены политики сети частной конечной точки:

az network vnet subnet update \
  --name <your-subnet-name> \
  --resource-group <your-resource-group-name> \
  --vnet-name <your-vnet-name> \
  --private-endpoint-network-policies Disabled

Шаг 2. Создайте частную конечную точку. Используйте account в качестве целевого подресурса для средств Foundry:

az network private-endpoint create \
  --name <your-private-endpoint-name> \
  --resource-group <your-resource-group-name> \
  --vnet-name <your-vnet-name> \
  --subnet <your-subnet-name> \
  --private-connection-resource-id $(az cognitiveservices account show \
    --name <your-speech-resource-name> \
    --resource-group <your-resource-group-name> \
    --query "id" -o tsv) \
  --group-id account \
  --connection-name <your-connection-name> \
  --location <your-location>
Параметр Значение
Тип ресурса Microsoft.CognitiveServices/accounts
Ресурс <your-speech-resource-name>
Целевой подресурс account

Проверки: Убедитесь, что была создана частная конечная точка:

az network private-endpoint show \
  --name <your-private-endpoint-name> \
  --resource-group <your-resource-group-name> \
  --query "{state:provisioningState, status:privateLinkServiceConnections[0].privateLinkServiceConnectionState.status}" \
  -o json

Ожидаемые выходные данные: provisioningState это Succeeded и status это Approved.

Шаг 3. Создайте частную зону DNS и свяжите ее с виртуальной сетью:

# Create the private DNS zone
az network private-dns zone create \
  --resource-group <your-resource-group-name> \
  --name privatelink.cognitiveservices.azure.com

# Link the DNS zone to your virtual network
az network private-dns link vnet create \
  --resource-group <your-resource-group-name> \
  --zone-name privatelink.cognitiveservices.azure.com \
  --name <your-dns-link-name> \
  --virtual-network <your-vnet-name> \
  --registration-enabled false

# Create DNS zone group for automatic DNS record management
az network private-endpoint dns-zone-group create \
  --resource-group <your-resource-group-name> \
  --endpoint-name <your-private-endpoint-name> \
  --name default \
  --private-dns-zone privatelink.cognitiveservices.azure.com \
  --zone-name cognitiveservices

Проверки: Убедитесь, что была создана запись DNS A:

az network private-dns record-set a list \
  --resource-group <your-resource-group-name> \
  --zone-name privatelink.cognitiveservices.azure.com \
  --query "[].{name:name, ip:aRecords[0].ipv4Address}" \
  -o table

Ожидаемые выходные данные: запись для вашего настраиваемого домена, разрешающая IP-адрес частной конечной точки (например, 10.0.0.4).

DNS для частных конечных точек: Ознакомьтесь с общими принципами DNS для частных конечных точек в ресурсах Microsoft Foundry. Затем убедитесь, что конфигурация DNS работает правильно, выполнив проверки, описанные в следующих разделах.

Разрешение DNS из виртуальной сети

Эта проверка является обязательной.

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

  1. Войдите на виртуальную машину, расположенную в виртуальной сети, к которой подключена частная конечная точка.

  2. Откройте командную строку Windows или оболочку Bash, выполните команду nslookup и убедитесь, что она успешно разрешает пользовательское доменное имя ресурса.

    C:\>nslookup my-private-link-speech.cognitiveservices.azure.com
    Server:  UnKnown
    Address:  168.63.129.16
    
    Non-authoritative answer:
    Name:    my-private-link-speech.privatelink.cognitiveservices.azure.com
    Address:  172.28.0.10
    Aliases:  my-private-link-speech.cognitiveservices.azure.com
    
  3. Убедитесь, что IP-адрес совпадает с IP-адресом частной конечной точки.

Проверки: Разрешенный IP-адрес (например, ) соответствует IP-адресу частной конечной точки, 172.28.0.10назначенному на предыдущем шаге. Поле Name включает в домен privatelink.

Обработка DNS из других сетей

Выполните эту проверку, только если вы включили параметр "Все сети " или " Выбранные сети" и "Частные конечные точки " в разделе "Сеть " ресурса.

Если вы планируете доступ к ресурсу только с помощью частной конечной точки, этот раздел можно пропустить.

  1. Войдите на компьютер, подключенный к сети, разрешенный для доступа к ресурсу.

  2. Откройте командную строку Windows или запустите оболочку Bash, выполните команду nslookup, и убедитесь, что она успешно разрешает пользовательское доменное имя ресурса.

    C:\>nslookup my-private-link-speech.cognitiveservices.azure.com
    Server:  UnKnown
    Address:  fe80::1
    
    Non-authoritative answer:
    Name:    vnetproxyv1-weu-prod.westeurope.cloudapp.azure.com
    Address:  13.69.67.71
    Aliases:  my-private-link-speech.cognitiveservices.azure.com
              my-private-link-speech.privatelink.cognitiveservices.azure.com
              westeurope.prod.vnet.cog.trafficmanager.net
    

Примечание.

Разрешенный IP-адрес указывает на прокси точку виртуальной сети, которая перенаправляет сетевой трафик к частной конечной точке ресурса распознавания речи. Поведение отличается для ресурса с именем личного домена, но без частных конечных точек. Дополнительные сведения см. в разделе конфигурации DNS .

Настроить приложение для использования ресурса распознавания речи с частной конечной точкой

Ресурс Foundry для распознавания речи с пользовательским доменом взаимодействует со службой "Речь" другим способом. Это актуально для ресурса распознавания речи с настраиваемым доменом как с частными конечными точками, так и без них. Сведения в этом разделе относятся к обоим сценариям.

Следуйте инструкциям в этом разделе, чтобы настроить существующие приложения и решения для использования ресурса "Speech" с именем личного домена и включенной частной конечной точкой.

Примечание.

Ресурс Foundry для службы "Речь" без частных конечных точек, использующих имя пользовательского домена, также имеет специальный метод взаимодействия со службой "Речь". Этот способ отличается от сценария использования ресурса Foundry для службы распознавания речи, использующего частную конечную точку. Это важно учитывать, так как вы можете позже решить удалить частные конечные точки. См. Настройка приложения для использования ресурса речи без частных конечных точек в этой статье.

Использование REST API

Служба "Речь" содержит REST API для преобразования речи в текст и преобразования текста в речь. Примите во внимание следующие сведения о сценарии, в котором частные конечные точки включены.

Сервис распознавания речи включает два REST API. Каждый API служит другой целью, использует разные конечные точки и требует другого подхода при использовании в сценарии с поддержкой частной конечной точки.

Интерфейсы REST API преобразования речи в текст:

Использование REST API преобразования речи в текст для короткого звука и REST API преобразования текста в речь в сценарии частной конечной точки совпадает. Он эквивалентен случаю с Speech SDK, описанному далее в этой статье.

Для преобразования речи в текст REST API используется другой набор конечных точек, поэтому для сценария с поддержкой частной конечной точки требуется другой подход.

Преобразование речи в текстовый REST API

Как правило, ресурсы службы "Речь" используют региональные конечные точки Foundry Tools для обмена данными с службой преобразования речи в текст через REST API. Эти ресурсы имеют следующий формат именования:

{region}.api.cognitive.microsoft.com

Пример URL-адреса запроса:

https://westeurope.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions

Примечание.

См. эту статью для Azure для государственных организаций и Microsoft Azure, управляемых конечными точками 21Vianet.

После включения настраиваемого домена для ресурса Foundry для службы "Речь" (что необходимо для частных конечных точек), этот ресурс использует следующий шаблон DNS-имени для основной конечной точки REST API:

{your-custom-name}.cognitiveservices.azure.com

В предыдущем примере имя конечной точки REST API становится следующим:

my-private-link-speech.cognitiveservices.azure.com

Пример URL-адреса запроса преобразуется в:

https://my-private-link-speech.cognitiveservices.azure.com/speechtotext/v3.1/transcriptions

Этот URL-адрес должен быть доступен из виртуальной сети с подключенной частной конечной точкой (при условии что разрешение DNS происходит правильно).

После активации пользовательского доменного имени для ресурса Foundry для службы речи имя узла во всех URL-адресах запроса обычно заменяется новым именем узла пользовательского домена. Все остальные части запроса (например, путь /speechtotext/v3.1/transcriptions в предыдущем примере) не меняются.

Проверки: Проверьте конечную точку, выполнив следующую команду:

curl -s -H "Ocp-Apim-Subscription-Key: <your-speech-key>" \
  "https://<your-custom-name>.cognitiveservices.azure.com/speechtotext/v3.1/transcriptions" | head -c 200

Ожидаемые выходные данные: ответ JSON, values содержащий массив (который может быть пустым для нового ресурса).

Совет

Некоторые клиенты разрабатывают приложения, использующие часть региона DNS-имени региональной конечной точки (например, для отправки запроса в ресурс службы "Речь", развернутого в определенном регионе Azure). Личный домен для ресурса "Речь" не содержит сведений о регионе, в котором развернут ресурс. Поэтому логика приложения, описанная ранее, не работает и должна быть изменена.

REST API преобразования речи в текст для короткого аудио и REST API преобразования текста в речь

REST API преобразования речи в текст для короткого звука и REST API преобразования текста в речь используют два типа конечных точек:

Примечание.

См. эту статью для Azure для государственных организаций и Azure, управляемых конечными точками 21Vianet.

Подробное описание специальных конечных точек и преобразования их URL-адреса для ресурса "Речи с поддержкой частной конечной точки" приведено в подразделе Конструкция URL-адреса конечной точки об использовании с пакетом SDK для службы "Речь". Тот же принцип, описанный в пакете SDK, применяется для преобразования речи в текстовый REST API для короткого звука и REST API преобразования текста в речь. Ознакомьтесь с материалами в подразделе, упомянутом в предыдущем абзаце, и изучите следующий пример. В примере описывается REST API преобразования текста в речь. Использование REST API преобразования речи в текст для короткого звука полностью эквивалентно.

Пример использования REST API преобразования текста в речь

В этом примере Западная Европа — это регион Azure, а my-private-link-speech.cognitiveservices.azure.com — это DNS-имя ресурса речи (пользовательский домен). Личный домен my-private-link-speech.cognitiveservices.azure.com принадлежит ресурсу "Речь", созданному в регионе Западной Европы.

Чтобы получить список голосов, поддерживаемых в регионе, выполните следующую команду:

https://westeurope.tts.speech.microsoft.com/cognitiveservices/voices/list

Для ресурса распознавания речи, поддерживающего частную конечную точку, URL-адрес конечной точки изменяется для той же операции. Тот же запрос выглядит следующим образом:

https://my-private-link-speech.cognitiveservices.azure.com/tts/cognitiveservices/voices/list

Проверки: Проверьте конечную точку голосов TTS:

curl -s -H "Ocp-Apim-Subscription-Key: <your-speech-key>" \
  "https://<your-custom-name>.cognitiveservices.azure.com/tts/cognitiveservices/voices/list" | head -c 200

Ожидаемые выходные данные: массив JSON объектов голосовой связи. Непустый ответ подтверждает работу конечной точки.

См. подробное пояснение в подразделе Создание URL-адреса конечной точки, посвященном пакету SDK для службы "Речь".

Примечание.

При использовании REST API преобразования речи в текст для короткого аудио и REST API преобразования текста в речь в сценариях частной конечной точки используйте ключ ресурса, передаваемый через заголовок Ocp-Apim-Subscription-Key. (Дополнительные сведения см. в разделе REST API преобразования речи в текст для короткого аудио и REST API преобразования текста в речь)

Использование токена авторизации и его передача в специальную конечную точку через Authorization заголовок работает только в том случае, если в разделе Сетевые настройки вашего ресурса "Речь" включена опция доступа ко всем сетям. В других случаях возникает либо ошибка Forbidden, либо ошибка BadRequest, когда вы пытаетесь получить маркер авторизации.

Использование с Speech SDK

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

В этом разделе используется my-private-link-speech.cognitiveservices.azure.com в качестве примера DNS-имени ресурса синтеза речи (личный домен).

Создание URL-адреса конечной точки

Как правило, в сценариях SDK (и в REST API преобразования речи в текст для короткого аудио, и в сценариях REST API преобразования текста в речь) ресурсы службы Speech используют выделенные региональные конечные точки для различных предложений сервисов. Формат DNS-имен для этих конечных точек следующий:

{region}.{speech-service-offering}.speech.microsoft.com

Пример DNS-имени:

westeurope.stt.speech.microsoft.com

Все возможные значения для региона (первый элемент DNS-имени) перечислены в статье Регионы, поддерживающие службу "Речь". (См. эту статью для Azure для государственных организаций и Azure, управляемых компанией 21Vianet.) В следующей таблице представлены возможные значения предложения службы "Речь" (второй элемент DNS-имени):

Значение DNS-имени Предложение сервиса речевых услуг
s2s Перевод речи
stt Речь к тексту
tts Синтез речи
voice Пользовательский голос

Таким образом, предыдущий пример (westeurope.stt.speech.microsoft.com) означает конечную точку преобразования речи в текст в Западной Европе.

Конечные точки с поддержкой частной конечной точки взаимодействуют со службой "Речь" через специальный прокси-сервер. Поэтому необходимо изменить URL-адреса подключения конечных точек.

URL-адрес конечной точки "стандартный" выглядит следующим образом:

{region}.{speech-service-offering}.speech.microsoft.com/{URL-path}

URL-адрес частной конечной точки выглядит следующим образом:

{your-custom-name}.cognitiveservices.azure.com/{URL-path}

Пакет Speech SDK автоматически настраивает /{URL-path} в зависимости от используемой службы. Необходимо настроить только базовый URL-адрес.

Изменение приложений

Чтобы изменить код, выполните следующие действия.

  1. Определите URL-адрес конечной точки приложения. Перейдите на портал Azure, откройте ресурс "Речь" и выберите "Ключи" и "Конечная точка " в группе управления ресурсами . Кроме того, используйте интерфейс командной строки:

    az cognitiveservices account show \
      --name <your-speech-resource-name> \
      --resource-group <your-resource-group-name> \
      --query "properties.endpoint" -o tsv
    

    Конечная точка выглядит следующим образом: https://my-private-link-speech.cognitiveservices.azure.com/

  2. Создайте экземпляр, используя URL-адрес конечной точки SpeechConfig. Существующий код, вероятно, использует примерно следующее:

    var config = SpeechConfig.FromSubscription(speechKey, azureRegion);
    

    Это не работает для ресурса "Речь" с включенной поддержкой частной конечной точки из-за изменений в имени узла и URL-адресе. Если вы пытаетесь запустить существующее приложение без каких-либо изменений с помощью ключа ресурса с поддержкой частной конечной точки, вы получите ошибку проверки подлинности (401).

    Чтобы устранить эту проблему, измените способ создания экземпляра класса SpeechConfig, используя инициализацию, основанную на конечной точке. Определите эти две переменные:

    • speechKey содержит ключ ресурса службы речевых технологий с поддержкой частной конечной точки.

    • endPoint содержит полный измененный URL-адрес конечной точки:

      wss://my-private-link-speech.cognitiveservices.azure.com
      

    Затем создайте SpeechConfig экземпляр:

    C#:

    var config = SpeechConfig.FromEndpoint(endPoint, speechKey);
    

    C++:

    auto config = SpeechConfig::FromEndpoint(endPoint, speechKey);
    

    Java:

    SpeechConfig config = SpeechConfig.fromEndpoint(endPoint, speechKey);
    

    Python:

    import azure.cognitiveservices.speech as speechsdk
    config = speechsdk.SpeechConfig(endpoint=endPoint, subscription=speechKey)
    

    Objective-C:

    SPXSpeechConfiguration *config = [[SPXSpeechConfiguration alloc] initWithEndpoint:endPoint subscription:speechKey];
    

    JavaScript:

    import * as sdk from "microsoft-cognitiveservices-speech-sdk";
    const config = sdk.SpeechConfig.fromEndpoint(new URL(endPoint), speechKey);
    

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

Использование без частных конечных точек

Использование пакета SDK службы "Речь" с ресурсами службы "Речь с поддержкой пользовательского домена" без частных конечных точек эквивалентно конфигурации, описанной в этом документе с частными конечными точками.

Используйте Speech Studio

Speech Studio — это веб-портал с инструментами для создания и интеграции функции "Azure Speech" в сервис Foundry Tools в вашем приложении. При работе в проектах в Speech Studio сетевые подключения и вызовы API к соответствующему ресурсу службы "Речь" выполняются от вашего имени. Работа с частными конечными точками, конечными точками службы виртуальной сети и другими параметрами безопасности сети может ограничить доступность функций Speech Studio. Обычно при работе с функциями, такими как пользовательское распознавание речи, создание пользовательского голосового и звукового содержимого, обычно используется Speech Studio.

Подключение к Speech Studio из виртуальной сети

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

Доступ к конечной точке ресурса "Speech" не равен доступу к веб-порталу Speech Studio. Доступ к Speech Studio через конечные точки службы частной или виртуальной сети не поддерживается.

Работа с проектами Speech Studio

В этом разделе описывается работа с различными типами проектов Speech Studio для разных опций сетевой безопасности ресурса Speech. Предполагается, что веб-браузер подключен к Speech Studio. Настройте сетевую безопасность ресурсов службы "Речь" на портале Azure или с помощью интерфейса командной строки:

Azure CLI

# View current network settings
az cognitiveservices account show \
  --name <your-speech-resource-name> \
  --resource-group <your-resource-group-name> \
  --query "{publicAccess:properties.publicNetworkAccess, networkRules:properties.networkAcls}" \
  -o json

# Change public network access (options: Enabled, Disabled)
az cognitiveservices account update \
  --name <your-speech-resource-name> \
  --resource-group <your-resource-group-name> \
  --public-network-access Enabled

Портал Azure

  1. Откройте портал Azure и войдите в свою учетную запись Azure.
  2. Выберите ресурс "Речь".
  3. В области слева в группе Управление ресурсами выберите Сеть>Брандмауэры и виртуальные сети.
  4. Выберите один из вариантов: Все сети, Выбранные сети и частные конечные точки или Отключенные.

Создание пользовательской речи, пользовательского голоса и аудиоконтента

В следующей таблице описаны специальные возможности для создания голосового и звукового содержимого для каждого параметра безопасности сетевых брандмауэров ресурсов >службы "Речь" и "Виртуальные сети".

Примечание.

Если вы разрешаете только частные конечные точки через вкладку "Сеть>Подключения к частным конечным точкам, вы не можете использовать Speech Studio с ресурсом обработки речи. Вы по-прежнему можете использовать ресурс службы "Речь" за пределами Speech Studio.

Параметры безопасности сети для речевых ресурсов Доступность проекта Speech Studio
Все сети Без ограничений
Выбранные сети и частные конечные точки Доступно с разрешенных общедоступных IP-адресов
Выключено Недоступно

Если выбрать выбранные сети и частные конечные точки, вы увидите вкладку с параметрами конфигурации доступа к виртуальным сетям и брандмауэру . В разделе Брандмауэр необходимо разрешить хотя бы один общедоступный IP-адрес и использовать его для подключения браузера к Speech Studio.

Чтобы использовать настраиваемую речь без ослабления ограничений доступа к сети на вашем продукционном ресурсе службы "Речь", рассмотрите одно из следующих обходных решений:

  • Создайте еще один ресурс распознавания речи для разработки, который можно использовать в общедоступной сети. Подготовьте пользовательскую модель в Speech Studio в ресурсе разработки, а затем скопируйте ее в рабочий ресурс. Посмотрите запрос REST Models_CopyTo с помощью REST API для преобразования речи в текст.
  • Для всех пользовательских операций преобразования речи в текст можно использовать REST API вместо Speech Studio.

Чтобы использовать пользовательский голос без ослабления ограничений доступа к сети в производственном ресурсе службы "Речь", рассмотрите одно из следующих решений:

  • Создайте еще один ресурс распознавания речи для разработки, который можно использовать в общедоступной сети. Подготовьте пользовательскую модель в Speech Studio на ресурсе разработки, а затем отправьте запрос в службу поддержки Azure, чтобы запросить помощь при копировании модели в рабочий ресурс.
  • Используйте REST API пользовательской голосовой связи непосредственно для всех пользовательских операций голосовой связи с рабочим ресурсом.

Настройте приложение для использования ресурса для речевых технологий без частных конечных точек

В этой статье в нескольких местах упоминается, что активация пользовательского домена для ресурса Foundry для службы распознавания речи является необратимой. Такой ресурс использует иной способ взаимодействия со службой распознавания речи, в отличие от тех, кто использует имена региональных конечных точек.

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

DNS configuration (Настройка DNS)

Вспомните, как DNS-имя личного домена ресурса "Речь" с включенными частными конечными точками разрешается из общедоступных сетей. В этом случае IP-адрес, разрешающийся, указывает на конечную точку прокси-сервера для виртуальной сети. Эта конечная точка используется для отправки сетевого трафика в ресурс Microsoft Foundry с поддержкой частной конечной точки.

Однако при удалении всех частных конечных точек ресурса (или непосредственно после включения пользовательского доменного имени) необходимо провести повторную подготовку записи CNAME для ресурса "Речь". Теперь он указывает на IP-адрес соответствующей региональной конечной точки Foundry Tools.

Поэтому выходные данные nslookup команды выглядят следующим образом:

C:\>nslookup my-private-link-speech.cognitiveservices.azure.com
Server:  UnKnown
Address:  fe80::1

Non-authoritative answer:
Name:    apimgmthskquihpkz6d90kmhvnabrx3ms3pdubscpdfk1tsx3a.cloudapp.net
Address:  13.93.122.1
Aliases:  my-private-link-speech.cognitiveservices.azure.com
          westeurope.api.cognitive.microsoft.com
          cognitiveweprod.trafficmanager.net
          cognitiveweprod.azure-api.net
          apimgmttmdjylckcx6clmh2isu2wr38uqzm63s8n4ub2y3e6xs.trafficmanager.net
          cognitiveweprod-westeurope-01.regional.azure-api.net

Сравните его с выходными данными из раздела «Разрешение DNS из других сетей».

Использование с интерфейсами REST API (без закрытых конечных точек)

Преобразование речи в текстовый REST API

Использование REST API преобразования речи в текст полностью эквивалентно использованию ресурсов службы "Речь" с поддержкой частной конечной точки.

REST API преобразования речи в текст для короткого аудио и REST API преобразования текста в речь

В этом случае использование REST API преобразования речи в текст для короткого звука и использования REST API "Текст для речи" не имеет различий от общего дела, за исключением одного исключения. (См. следующее примечание.) Используйте оба API, как описано в REST API преобразования речи в текст для краткого аудио и REST API преобразования текста в речь документации.

Примечание.

При использовании REST API преобразования речи в текст для короткого аудио и преобразования текста в речь REST API в настраиваемых сценариях используйте ключ API, который передаётся через заголовок Ocp-Apim-Subscription-Key. (Дополнительные сведения см. в разделе REST API преобразования речи в текст для короткого аудио и REST API преобразования текста в речь)

Использование токена авторизации и его передача в специальную конечную точку через Authorization заголовок работает только в том случае, если в разделе Сетевые настройки вашего ресурса "Речь" включена опция доступа ко всем сетям. В других случаях возникает либо ошибка Forbidden, либо ошибка BadRequest, когда вы пытаетесь получить маркер авторизации.

Одновременное использование частных конечных точек и конечных точек службы виртуальной сети

Частные конечные точки и конечные точки виртуальной сети можно использовать одновременно для доступа к одному и тому же ресурсу службы "Речь". Для обеспечения одновременного использования, необходимо использовать вариант Выбранные сети и частные конечные точки в параметрах сети ресурса "Речь" на портале Azure. Другие варианты для этого сценария не поддерживаются.

Проверки: Подтвердите параметры сети с помощью ИНТЕРФЕЙСА командной строки:

az cognitiveservices account show \
  --name <your-speech-resource-name> \
  --resource-group <your-resource-group-name> \
  --query "properties.publicNetworkAccess" -o tsv

Другие варианты для этого сценария не поддерживаются.

Cleanup

Чтобы удалить ресурсы, созданные во время этой конфигурации, удалите их в обратном порядке:

# Delete private endpoint
az network private-endpoint delete \
  --name <your-private-endpoint-name> \
  --resource-group <your-resource-group-name>

# Delete DNS zone group, link, and zone
az network private-dns link vnet delete \
  --resource-group <your-resource-group-name> \
  --zone-name privatelink.cognitiveservices.azure.com \
  --name <your-dns-link-name> --yes

az network private-dns zone delete \
  --resource-group <your-resource-group-name> \
  --name privatelink.cognitiveservices.azure.com --yes

Примечание.

Удаление частных конечных точек не удаляет имя личного домена. Личный домен остается активным, а ресурс "Речь" использует другой шаблон разрешения DNS. См. раздел конфигурации DNS .

Troubleshooting

Ошибка проверки подлинности (401) после включения личного домена

Если после включения личного домена возникает ошибка 401, приложение, вероятно, по-прежнему использует инициализацию на основе SpeechConfig.FromSubscription() региона. Переключитесь на инициализацию по конечным точкам с помощью SpeechConfig.FromEndpoint(), как описано в разделе «Изменение приложений».

Разрешение DNS возвращает общедоступный IP-адрес вместо частного IP-адреса

Если nslookup возвращает общедоступный IP-адрес вместо IP-адреса частной конечной точки:

  1. Проверьте наличие частной зоны DNS: az network private-dns zone show --resource-group <rg> --name privatelink.cognitiveservices.azure.com
  2. Убедитесь, что ссылка на виртуальную сеть существует: az network private-dns link vnet list --resource-group <rg> --zone-name privatelink.cognitiveservices.azure.com -o table
  3. Убедитесь, что запись A существует: az network private-dns record-set a list --resource-group <rg> --zone-name privatelink.cognitiveservices.azure.com -o table
  4. Если вы используете пользовательский DNS-сервер, убедитесь, что он перенаправит его в частную зону DNS Azure.

Запрещено или Неправильный запрос при использовании токенов авторизации

При использовании Authorization заголовка с маркером носителя в сценарии частной конечной точки служба "Речь" может возвращать Forbidden или BadRequest. Это происходит, если для параметра сети не задано значение "Все сети". Вместо этого используйте заголовок Ocp-Apim-Subscription-Key вместе с вашим ключом ресурса.

Недоступен Speech Studio

Если Speech Studio не работает с ресурсом службы "Речь с ограниченным доступом к сети", убедитесь, что общедоступный IP-адрес находится в списке разрешений брандмауэра . Если вы разрешаете доступ только к виртуальной сети, Speech Studio не работает — вместо этого используйте REST API.

Цены

Дополнительные сведения о ценах см. на странице цен на службу "Приватный канал" Azure.

Подробнее