Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Одним из вариантов управления контейнерами службы "Речь" в локальной среде является использование Kubernetes и Helm. С помощью Kubernetes и Helm для определения речи для текста и текста в образы контейнеров речи мы создадим пакет Kubernetes. Этот пакет развертывается в локальном кластере Kubernetes. Наконец, мы рассмотрим, как протестировать развернутые службы и различные параметры конфигурации. Дополнительные сведения о запуске контейнеров Docker без оркестрации Kubernetes см. в статье об установке и запуске контейнеров службы "Речь".
Необходимые компоненты
Перед использованием локальных речевых контейнеров должны быть выполнены следующие требования:
Обязательное поле | Характер использования |
---|---|
Учетная запись Azure | Если у вас нет подписки Azure, создайте бесплатную учетную запись перед началом работы. |
Доступ к реестру контейнеров | Чтобы Kubernetes вытащил образы Docker в кластер, он должен получить доступ к реестру контейнеров. |
Интерфейс командной строки Kubernetes | Интерфейс командной строки Kubernetes необходим для управления общими учетными данными из реестра контейнеров. Также для Helm, который является диспетчером пакетов Kubernetes, требуется Kubernetes. |
Интерфейс командной строки Helm | Установите интерфейс командной строки Helm, который используется для установки чарта Helm (определения пакета контейнера). |
Ресурс речи | Для использования контейнеров необходимо следующее: Ресурс Azure службы "Речь" , чтобы получить связанный ключ выставления счетов и URI конечной точки выставления счетов. Оба этих значения доступны на странице обзора Речь и на странице ключей портала Azure и необходимы для запуска контейнера. {API_KEY}: ключ ресурса {ENDPOINT_URI}: пример URI конечной точки: https://eastus.api.cognitive.microsoft.com/sts/v1.0 |
Рекомендуемая конфигурация главного компьютера
См. сведения о хост-компьютере контейнера службы "Речь" как справку. Эта Helm Chart автоматически рассчитывает требования к ЦП и памяти в зависимости от количества декодирований (одновременных запросов), указанных пользователем. Кроме того, он настраивается в зависимости от того, настроены enabled
ли оптимизации для ввода звука и текста. По умолчанию в диаграмме Helm два параллельных запроса и отключена оптимизация.
Услуга | ЦП или контейнер | Память или контейнер |
---|---|---|
речь в тексте | для одного декодера требуется не менее 1150 миллиядер. Если optimizedForAudioFile включен, требуется 1950 миллиядер. (по умолчанию: два декодера) |
Требуется: 2 ГБ Ограничено: 4 ГБ |
текст для речи | для одного одновременного запроса требуется минимум 500 миллиядер. Если optimizeForTurboMode включен, требуется 1000 миллиядер. (по умолчанию: два одновременных запроса) |
Требуется: 1 ГБ Ограничено: 2 ГБ |
Подключение к кластеру Kubernetes
Предполагается, что на главном компьютере есть доступный кластер Kubernetes. Чтобы концептуально понять, как развернуть кластер Kubernetes на хост-компьютере, ознакомьтесь с этим руководством по развертыванию кластера Kubernetes.
Настройка значений диаграммы Helm для развертывания
Посетите Центр Microsoft Helm, чтобы ознакомиться со всеми общедоступными диаграммами Helm, которые предлагает корпорация Майкрософт. В Центре Microsoft Helm вы найдете локальную диаграмму службы "Речь искусственного интеллекта Azure". Локальная служба распознавания речи ВИ Azure — это установленная диаграмма, но сначала необходимо создать config-values.yaml
файл с явными конфигурациями. Начнем с добавления репозитория Майкрософт в экземпляр Helm.
helm repo add microsoft https://microsoft.github.io/charts/repo
Затем мы настроим значения диаграммы Helm. Скопируйте и вставьте следующий код YAML в файл с именем config-values.yaml
. Дополнительные сведения о настройке локального Helm Chart сервиса Azure AI Speech см. в настройке Helm Charts. Замените комментарии # {ENDPOINT_URI}
и # {API_KEY}
своими собственными значениями.
# These settings are deployment specific and users can provide customizations
# speech to text configurations
speechToText:
enabled: true
numberOfConcurrentRequest: 3
optimizeForAudioFile: true
image:
registry: mcr.microsoft.com
repository: azure-cognitive-services/speechservices/speech-to-text
tag: latest
pullSecrets:
- mcr # Or an existing secret
args:
eula: accept
billing: # {ENDPOINT_URI}
apikey: # {API_KEY}
# text to speech configurations
textToSpeech:
enabled: true
numberOfConcurrentRequest: 3
optimizeForTurboMode: true
image:
registry: mcr.microsoft.com
repository: azure-cognitive-services/speechservices/neural-text-to-speech
tag: latest
pullSecrets:
- mcr # Or an existing secret
args:
eula: accept
billing: # {ENDPOINT_URI}
apikey: # {API_KEY}
Внимание
Если не указать значения billing
и apikey
, срок действия служб истечет через 15 минут. Аналогичным образом, проверка завершится ошибкой, так как службы будут недоступны.
Пакет Kubernetes (диаграмма Helm)
Диаграмма Helm содержит конфигурацию образов Docker для извлечения из mcr.microsoft.com
реестра контейнеров.
Диаграмма Helm — это коллекция файлов, описывающих связанный набор ресурсов Kubernetes. Это однорядная диаграмма, которую можно использовать как для развертывания чего-то простого, например модуля pod memcached, так и сложного, например полноценного стека веб-приложений с HTTP-серверами, базами данных, кэшами и т. д.
Предоставленные диаграммы Helm содержат скачивание docker образов службы "Речь", как службу преобразования текста в речь, так и службу преобразования речи в текст из mcr.microsoft.com
реестра контейнеров.
Установка диаграммы Helm в кластере Kubernetes
helm install
Выполните команду, чтобы установить диаграмму helm, заменив <config-values.yaml>
соответствующий аргумент пути и имени файла. Диаграмма microsoft/cognitive-services-speech-onpremise
Helm доступна в Центре Microsoft Helm.
helm install onprem-speech microsoft/cognitive-services-speech-onpremise \
--version 0.1.1 \
--values <config-values.yaml>
Ниже приведен пример выходных данных, которые вы можете ожидать от успешного выполнения установки:
NAME: onprem-speech
LAST DEPLOYED: Tue Jul 2 12:51:42 2019
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
speech-to-text-7664f5f465-87w2d 0/1 Pending 0 0s
speech-to-text-7664f5f465-klbr8 0/1 ContainerCreating 0 0s
neural-text-to-speech-56f8fb685b-4jtzh 0/1 ContainerCreating 0 0s
neural-text-to-speech-56f8fb685b-frwxf 0/1 Pending 0 0s
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
speech-to-text LoadBalancer 10.0.252.106 <pending> 80:31811/TCP 1s
neural-text-to-speech LoadBalancer 10.0.125.187 <pending> 80:31247/TCP 0s
==> v1beta1/PodDisruptionBudget
NAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE
speech-to-text-poddisruptionbudget N/A 20% 0 1s
neural-text-to-speech-poddisruptionbudget N/A 20% 0 1s
==> v1beta2/Deployment
NAME READY UP-TO-DATE AVAILABLE AGE
speech-to-text 0/2 2 0 0s
neural-text-to-speech 0/2 2 0 0s
==> v2beta2/HorizontalPodAutoscaler
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
speech-to-text-autoscaler Deployment/speech-to-text <unknown>/50% 2 10 0 0s
neural-text-to-speech-autoscaler Deployment/neural-text-to-speech <unknown>/50% 2 10 0 0s
NOTES:
cognitive-services-speech-onpremise has been installed!
Release is named onprem-speech
Для полного развертывания Kubernetes может потребоваться несколько минут. Для подтверждения наличия модулей Pod и служб, а также корректности их развертывания выполните следующую команду:
kubectl get all
Должен отобразиться результат, аналогичный следующему:
NAME READY STATUS RESTARTS AGE
pod/speech-to-text-7664f5f465-87w2d 1/1 Running 0 34m
pod/speech-to-text-7664f5f465-klbr8 1/1 Running 0 34m
pod/neural-text-to-speech-56f8fb685b-4jtzh 1/1 Running 0 34m
pod/neural-text-to-speech-56f8fb685b-frwxf 1/1 Running 0 34m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 3h
service/speech-to-text LoadBalancer 10.0.252.106 52.162.123.151 80:31811/TCP 34m
service/neural-text-to-speech LoadBalancer 10.0.125.187 65.52.233.162 80:31247/TCP 34m
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/speech-to-text 2 2 2 2 34m
deployment.apps/neural-text-to-speech 2 2 2 2 34m
NAME DESIRED CURRENT READY AGE
replicaset.apps/speech-to-text-7664f5f465 2 2 2 34m
replicaset.apps/neural-text-to-speech-56f8fb685b 2 2 2 34m
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
horizontalpodautoscaler.autoscaling/speech-to-text-autoscaler Deployment/speech-to-text 1%/50% 2 10 2 34m
horizontalpodautoscaler.autoscaling/neural-text-to-speech-autoscaler Deployment/neural-text-to-speech 0%/50% 2 10 2 34m
Проверка развертывания Helm с помощью тестов Helm
Установленные чарты Helm определяют тесты Helm, которые упрощают проверку. Эти тесты проверяют готовность службы. Чтобы проверить как речь, так и текст в функции речи, мы выполняем тестовую команду Helm.
helm test onprem-speech
Внимание
Эти тесты выдают ошибку, если состояние POD не равно Running
или если в столбце AVAILABLE
не указано развертывание. Наберитесь терпения, так как это может занять более десяти минут.
Эти тесты выводить различные результаты состояния:
RUNNING: speech to text-readiness-test
PASSED: speech to text-readiness-test
RUNNING: text to speech-readiness-test
PASSED: text to speech-readiness-test
В качестве альтернативы выполнению тестов helm можно собирать внешние IP-адреса и соответствующие порты из kubectl get all
команды. Используя IP-адрес и порт, откройте веб-браузер и перейдите к http://<external-ip>:<port>:/swagger/index.html
, чтобы просмотреть страницы Swagger API.
Настройка диаграмм Helm
Диаграммы Helm являются иерархическими. Иерархия обеспечивает наследование диаграммы, и также относится к концепции особенностей, где параметры, которые являются более специфичными, переопределяют унаследованные правила.
Речь (диаграмма umbrella)
Значения на диаграмме "umbrella" верхнего уровня переопределяют соответствующие значения во вспомогательной диаграмме. Поэтому нужно добавить все локальные настраиваемые значения.
Параметр | Описание | По умолч. |
---|---|---|
speechToText.enabled |
Включена ли речь в текстовой службе. | true |
speechToText.verification.enabled |
Включена ли возможность для службы преобразования речи в текст. | true |
speechToText.verification.image.registry |
Репозиторий образов Docker, который helm test используется для тестирования службы распознавания речи в текст. Helm создает отдельный pod в кластере для тестирования и загружает образ test-use из этого реестра. |
docker.io |
speechToText.verification.image.repository |
Репозиторий образов Docker, который helm test использует для тестирования сервиса речь в текст. Модуль pod тестирования Helm использует этот репозиторий для извлечения образа тестового использования . |
antsu/on-prem-client |
speechToText.verification.image.tag |
Тег изображения Docker, используемый для helm test преобразования речи в текстовую службу. Модуль pod тестирования Helm использует этот тег для извлечения образа тестового использования . |
latest |
speechToText.verification.image.pullByHash |
Извлекается ли тестовый образ docker с помощью хэша. Если задано значение true , speechToText.verification.image.hash необходимо добавить с допустимым значением хэша изображения. |
false |
speechToText.verification.image.arguments |
Аргументы, используемые для запуска test-use образа Docker. Модуль pod тестирования Helm передает эти аргументы в контейнер при запуске helm test . |
"./speech-to-text-client" "./audio/whatstheweatherlike.wav" "--expect=What's the weather like" "--host=$(SPEECH_TO_TEXT_HOST)" "--port=$(SPEECH_TO_TEXT_PORT)" |
textToSpeech.enabled |
Включена ли служба преобразования текста в речь . | true |
textToSpeech.verification.enabled |
helm test Включена ли возможность службы преобразования речи в текст. |
true |
textToSpeech.verification.image.registry |
Репозиторий образов Docker, который helm test используется для тестирования службы преобразования речи в текст. Helm создает отдельный pod в кластере для тестирования и извлекает образ test-use из этого реестра. |
docker.io |
textToSpeech.verification.image.repository |
Репозиторий образов Docker, который helm test используется для тестирования службы речь в текст. Модуль тестирования pod Helm использует этот репозиторий для извлечения образа тестового. |
antsu/on-prem-client |
textToSpeech.verification.image.tag |
Тег изображения Docker, используемый с помощью helm test службы преобразования речи в текст. Модуль pod тестирования Helm использует этот тег для извлечения образа тестового использования . |
latest |
textToSpeech.verification.image.pullByHash |
Извлекается ли тестовый образ docker с помощью хэша. Если задано значение true , textToSpeech.verification.image.hash необходимо добавить с допустимым значением хэша изображения. |
false |
textToSpeech.verification.image.arguments |
Аргументы для выполнения с docker-образом test-use. Модуль pod тестирования Helm передает эти аргументы в контейнер при выполнении helm test . |
"./text-to-speech-client" "--input='What's the weather like'" "--host=$(TEXT_TO_SPEECH_HOST)" "--port=$(TEXT_TO_SPEECH_PORT)" |
Речь к тексту (подграмма: диаграммы/speechToText)
Чтобы переопределить диаграмму "umbrella", добавьте префикс speechToText.
к любому параметру, чтобы сделать его более конкретным. Он переопределит соответствующий параметр, например speechToText.numberOfConcurrentRequest
переопределяет numberOfConcurrentRequest
.
Параметр | Описание | По умолч. |
---|---|---|
enabled |
Включена ли речь в текстовой службе. | false |
numberOfConcurrentRequest |
Количество одновременных запросов для службы преобразования речи в текстовую службу. На этой диаграмме автоматически вычисляются ресурсы ЦП и памяти на основе данного значения. | 2 |
optimizeForAudioFile |
Определение того, нуждается ли служба в оптимизации звуковых входных данных с помощью звуковых файлов. Если задано значение true , диаграмма выделит больше ресурсов ЦП для службы. |
false |
image.registry |
Реестр образов Docker для распознавания речи в текст. | containerpreview.azurecr.io |
image.repository |
Речь в текст репозиторий образов Docker. | microsoft/cognitive-services-speech-to-text |
image.tag |
Тег Docker-образа для конвертации речи в текст. | latest |
image.pullSecrets |
Секреты изображения для извлечения речи на текстовый образ Docker. | |
image.pullByHash |
Определение того, получен ли образ Docker с помощью хэша. Если задано значение true , требуется image.hash . |
false |
image.hash |
Хэш образа Docker для передачи речи в текст. Используется, только если image.pullByHash: true . |
|
image.args.eula (обязательно) |
Указывает, что вы приняли условия лицензии. Единственное допустимое значение — accept |
|
image.args.billing (обязательно) |
Значение URI конечной точки выставления счетов доступно на странице обзора службы "Речь" на портале Azure. | |
image.args.apikey (обязательно) |
Используется для отслеживания данных для выставлении счетов. | |
service.type |
Тип службы Kubernetes службы преобразования речи в текстовую службу. Дополнительные сведения см. в инструкциях по типам служб Kubernetes и проверке поддержки поставщиков облачных служб. | LoadBalancer |
service.port |
Порт службы преобразования речи в текст. | 80 |
service.annotations |
Речь в текст аннотации к метаданным службы. Заметки — это пары "ключ — значение". annotations: some/annotation1: value1 some/annotation2: value2 |
|
service.autoScaler.enabled |
Включен ли горизонтальный автомасштабировщик Pod. Если задано значение true , speech-to-text-autoscaler будет развернут в кластере Kubernetes. |
true |
service.podDisruption.enabled |
Включен ли Pod Disruption Budget? Если задано значение true , speech-to-text-poddisruptionbudget будет развернут в кластере Kubernetes. |
true |
Анализ тональности (вспомогательная диаграмма: диаграммы/speechToText)
Начиная с версии 2.2.0 преобразования речи в текстовый контейнер и v0.2.0 диаграммы Helm, следующие параметры используются для анализа тональности с помощью API службы языка.
Параметр | Описание | Ценности | По умолч. |
---|---|---|---|
textanalytics.enabled |
Включена ли служба анализа текста | истина/ложь | false |
textanalytics.image.registry |
Реестр образов Docker для text-analytics | допустимый реестр образа Docker | |
textanalytics.image.repository |
Репозиторий образов Docker для анализа текста | допустимый репозиторий образа Docker | |
textanalytics.image.tag |
Тег изображения docker для анализа текста | допустимый тег образа Docker | |
textanalytics.image.pullSecrets |
Секреты по загрузке docker-образа для анализа текста | допустимое имя секретов | |
textanalytics.image.pullByHash |
Указывает на то, получен ли образ Docker с помощью хэша. Если задано значение yes , значение для image.hash также необходимо указать. Если задано значение no , задайте для него значение false. По умолчанию — false . |
истина/ложь | false |
textanalytics.image.hash |
Хэш образа Docker анализа текста. Используйте его только с image.pullByHash:true . |
допустимый хэш образа Docker | |
textanalytics.image.args.eula |
Один из обязательных аргументов контейнера анализа текста , который указывает, что вы приняли лицензию. Для этого параметра следует задать значение: accept . |
accept , если необходимо использовать контейнер |
|
textanalytics.image.args.billing |
Один из обязательных аргументов контейнера анализа текста, который задает URI конечной точки выставления счетов. Значение URI конечной точки выставления счетов доступно на странице обзора службы "Речь" на портале Azure. | допустимый URI конечной точки выставления счетов | |
textanalytics.image.args.apikey |
Один из необходимых параметров в модуле анализа текста, который используется для отслеживания информации о биллинге. | допустимый ключ API | |
textanalytics.cpuRequest |
Запрошенный ЦП для контейнера анализа текста | INT | 3000m |
textanalytics.cpuLimit |
Ограниченный ЦП для контейнера анализа текста | 8000m |
|
textanalytics.memoryRequest |
Запрошенная память для контейнера анализа текста | 3Gi |
|
textanalytics.memoryLimit |
Ограниченная память для контейнера анализа текста | 8Gi |
|
textanalytics.service.sentimentURISuffix |
Суффикс URI анализа тональности, полный URI имеет формат "http:// <service> :<port> /<sentimentURISuffix> ". |
text/analytics/v3.0-preview/sentiment |
|
textanalytics.service.type |
Тип службы анализа текста в Kubernetes. См. типы служб Kubernetes | допустимый тип службы Kubernetes | LoadBalancer |
textanalytics.service.port |
Порт службы анализа текста | INT | 50085 |
textanalytics.service.annotations |
Пользователи могут добавлять аннотации в метаданные службы анализа текста. Например: Аннотации:
some/annotation1: value1
some/annotation2: value2 |
по одной заметке на каждую строчку | |
textanalytics.serivce.autoScaler.enabled |
Включен ли Horizontal Pod Autoscaler. Если он включен, то text-analytics-autoscaler будет развернут в кластере Kubernetes |
истина/ложь | true |
textanalytics.service.podDisruption.enabled |
Включен ли бюджет прерывания Pod. Если он включен, то text-analytics-poddisruptionbudget будет развернут в кластере Kubernetes |
истина/ложь | true |
Текст в речь (подграмма: диаграммы или textToSpeech)
Чтобы переопределить диаграмму "umbrella", добавьте префикс textToSpeech.
к любому параметру, чтобы сделать его более конкретным. Он переопределит соответствующий параметр, например textToSpeech.numberOfConcurrentRequest
переопределяет numberOfConcurrentRequest
.
Параметр | Описание | По умолч. |
---|---|---|
enabled |
Включена ли служба преобразования текста в речь . | false |
numberOfConcurrentRequest |
Количество одновременных запросов для службы преобразования текста в речь . На этой диаграмме автоматически вычисляются ресурсы ЦП и памяти на основе данного значения. | 2 |
optimizeForTurboMode |
Определяет, нуждается ли служба в оптимизации ввода текста с помощью текстовых файлов. Если задано значение true , диаграмма выделит больше ресурсов ЦП для службы. |
false |
image.registry |
Реестр образов Docker для преобразования текста в речь. | containerpreview.azurecr.io |
image.repository |
Репозиторий образов Docker для преобразования текста в речь. | microsoft/cognitive-services-text-to-speech |
image.tag |
Метка образа Docker для технологии синтеза речи. | latest |
image.pullSecrets |
Секреты получения образа docker для text to speech. | |
image.pullByHash |
Определение того, получен ли образ Docker с помощью хэша. Если задано значение true , требуется image.hash . |
false |
image.hash |
Хэш образа docker для текста в речь. Используется, только если image.pullByHash: true . |
|
image.args.eula (обязательно) |
Указывает, что вы приняли условия лицензии. Единственное допустимое значение — accept |
|
image.args.billing (обязательно) |
Значение URI конечной точки выставления счетов доступно на странице обзора службы "Речь" на портале Azure. | |
image.args.apikey (обязательно) |
Используется для отслеживания данных для выставлении счетов. | |
service.type |
Тип службы Kubernetes для службы преобразования текста в речь . Дополнительные сведения см. в инструкциях по типам служб Kubernetes и проверке поддержки поставщиков облачных служб. | LoadBalancer |
service.port |
Порт службы преобразования текста в речь . | 80 |
service.annotations |
Аннотации синтеза речи для метаданных службы. Заметки — это пары "ключ — значение". annotations: some/annotation1: value1 some/annotation2: value2 |
|
service.autoScaler.enabled |
Включена ли функция горизонтального автомасштабирования Pod . Если задано значение true , text-to-speech-autoscaler будет развернут в кластере Kubernetes. |
true |
service.podDisruption.enabled |
Включён ли Pod Disruption Budget? Если задано значение true , text-to-speech-poddisruptionbudget будет развернут в кластере Kubernetes. |
true |
Следующие шаги
Дополнительные сведения об установке приложений с помощью Helm в Службе Azure Kubernetes (AKS) см. здесь.