微软云Azure的认知服务包含五大类几十个具体的人工智能服务,可以帮助您创建相应的应用程序服务于各种场景,可以参考Azure认知服务的官方文档。

这些认知服务除了提供云端服务的能力,很多服务也同时推出了容器版本,用户可以直接将认知服务的能力以容器的形式部署在本地基础架构、边缘服务器中。
本地部署认知服务时,容器会每15分钟访问云端的计费接口,只统计计费相关的信息。因此,本地部署时,也需要在云端创建相应的服务,以便于获得容器正常运行所需要的Key和连接的端点(endpoint)。
当然也可以将这些容器部署在Kubernetes群集中,本文则已Azure托管的Kubernetes服务AKS进行部署认知服务的容器。
建议安装最新版本,本实例要求运行 Azure CLI 2.0.64 版或更高版本。Azure CLI既可以访问China Azure,也可以访问全球Azure。
访问China Azure需要设置:
az cloud set -n AzureChinaCloud
访问全球Azure需要设置:
az cloud set -n AzureCloud
az aks install-cli
创建认知服务中具体的服务,比如人脸识别,自然语言理解,文本转语音等等,这个过程与创建其他Azure服务一样,登录Azure Portal或者使用Azure CLI进行服务创建都非常简单,这儿不具体说明了。本文以创建语音服务为例,贴出部分截图供参考。
创建的语音服务,记录下相应的Key和Endpoint信息,在部署容器时需要使用。

可以参考使用Azure门户部署AKS群集,或者使用Azure CLI创建AKS群集
下面是具体步骤的截图,供参考:






MC_<aks resource group name>_<aks name>_<aks location> 

可以从下面两篇文章中申请和获得认知服务众多的AI能力的容器
以文本转语音(TTS)为例,可以看到默认的容器路径是containerpreview.azurecr.io/microsoft/cognitive-services-text-to-speech。
tag是latest的具有 en-US 区域设置和 en-US-JessaRUS 语音的容器映像。
如果要使用中文,可以使用tag为1.3.0-amd64-zh-cn-kangkang-apollo-preview,即完整的容器引用为containerpreview.azurecr.io/microsoft/cognitive-services-text-to-speech:1.3.0-amd64-zh-cn-kangkang-apollo-preview
可以看到TTS的容器目前是需要申请才能获得的,申请方式前文已提到。而对于registry是mcr.microsoft.com/azure-cognitive-services的容器,则已经都是公开的了,大家可以自行下载测试。
填写申请表格后,将会收到用于拉取容器的用户名和密码,在客户端使用下面的命令创建secret:
kubectl create secret docker-registry <secret-name> --docker-server=containerpreview.azurecr.io --docker-username=<username> --docker-password=<pwd>
使用Azure上创建的speech服务的Key和Endpoint替换Yaml文件相应的位置:
apiVersion: v1
kind: Service
metadata:
name: tts
labels:
run: tts
spec:
selector:
app: tts
type: LoadBalancer
ports:
- name: tts
port: 5000
targetPort: 5000
protocol: TCP
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: tts
spec:
replicas: 1
template:
metadata:
labels:
app: tts
spec:
containers:
- name: tts
image: containerpreview.azurecr.io/microsoft/cognitive-services-text-to-speech:1.3.0-amd64-zh-cn-kangkang-apollo-preview
ports:
- name: public-port
containerPort: 5000
resources:
requests:
memory: 4Gi
cpu: 1
limits:
memory: 6Gi
cpu: 2
livenessProbe:
httpGet:
path: /status
port: public-port
initialDelaySeconds: 30
timeoutSeconds: 1
periodSeconds: 10
args:
- "eula=accept"
- "apikey=<api key>" # Add API Key here
- "billing=https://chinaeast2.api.cognitive.azure.cn/sts/v1.0/issuetoken" # Add billing key here
imagePullSecrets:
- name: tts-docker-secret # Add credentials for container preview registry here
automountServiceAccountToken: false
kubectl apply -f cs_tts.yml
部署过程中,可以使用 kubectl describe pod 看到AKS根据Yaml文件去拉取TTS的image:

成功部署后,可以使用kubectl get pod|service查看相应的pod和service:

查看service时可以看到LB的外部IP和端口,这个即是TTS对外提供服务的地址,可以直接访问查看状态:
查看具体的API:

可以参考TTS的repo使用各种语言的调用REST API或SDK进行调用。
下面是使用python的一个sample示例:
