可以使用 Azure 基于角色的访问控制 (Azure RBAC) 来管理语音资源的访问和权限。 分配的角色可能因语音资源而异。
例如,可以将角色分配给 AI 语音资源,该资源只能用于训练自定义语音模型。 可以将另一个角色分配给用于转录音频文件的 AI 语音资源。
根据谁可以访问每个语音资源,可以有效地对每个应用程序或用户设置不同的访问级别。 有关 Azure RBAC 的详细信息,请参阅 Azure RBAC 文档。
注意
本文介绍如何为 AI 语音资源分配访问角色。
语音资源的角色
角色定义是权限的集合。 AI 语音资源可以继承或分配多个角色。 对此资源的最终访问级别是所有角色权限的组合。 创建 AI 语音资源时,下表中的内置角色可用于分配。
角色 | 可以列出资源密钥 | 访问自定义项目中的数据、模型和终结点 | 访问语音听录和合成 API |
---|---|---|---|
所有者 | 是 | 无 | 否 |
参与者 | 是 | 无 | 否 |
认知服务参与者 | 是 | 无 | 否 |
认知服务用户 | 是 | 查看、创建、编辑和删除 | 是 |
认知服务语音贡献者 | 否 | 查看、创建、编辑和删除 | 是 |
认知服务语音用户 | 否 | 仅查看 | 是 |
认知服务数据读取者(预览版) | 否 | 仅查看 | 是 |
如果语音资源对项目具有完全读取和写入访问权限,请保留内置角色。
若要进行精细资源访问控制,可以使用Azure 门户添加或移除角色。 例如,你可以创建一个有权上传自定义语音数据集但无权将自定义语音识别模型部署到终结点的自定义角色。
语音资源的特殊注意事项
重要
语音服务体系结构与其他 Azure AI 服务不同之处在于,前者使用 Azure 控制平面和数据平面。
与其他 Azure AI 服务相比,语音服务广泛使用数据平面,这需要对角色进行不同的设置。 因此,一些常规 的“认知服务” 角色具有在语音服务方案中使用时与其名称完全不匹配的实际访问权限集。
例如,“认知服务用户”实际上提供了参与者的权限,而“认知服务参与者”则不提供任何访问权限。 常规“所有者”和“参与者”角色也是如此,这些角色没有数据平面权限,因此不提供对语音资源的访问权限。
为了保持一致性,建议使用名称中包含“语音”的角色。 这些角色为“认知服务语音用户”和“认知服务语音参与者”。 其访问权限集专为语音服务设计。
使用密钥和令牌进行身份验证
角色定义你拥有的权限。 使用语音资源需要进行身份验证。
若要使用语音资源密钥进行身份验证,只需提供密钥和区域。 若要使用 Microsoft Entra 令牌进行身份验证,语音资源必须具有自定义子域。
下面介绍如何使用自定义子域创建新的语音资源。 也可以使用现有资源,但它必须具有自定义子域。 有关创建自定义子域的详细信息,请参阅 创建自定义域名。
resourceGroupName=my-speech-rg
location=chinanorth2
AIServicesResourceName=my-aiservices-$location
# create an AIServices resource for Speech and other AI services
az cognitiveservices account create --name $AIServicesResourceName --resource-group $resourceGroupName --kind AIServices --sku S0 --location $location --custom-domain $AIServicesResourceName
# get the resource id
speechResourceId=$(az cognitiveservices account show --name $AIServicesResourceName --resource-group $resourceGroupName --query id -o tsv)
# assign Cognitive Services User role to the app id
appId=$(az ad signed-in-user show --query id -o tsv)
az role assignment create --role "Cognitive Services User" --assignee $appId --scope $speechResourceId
# assign Cognitive Services Speech User role to the app id
az role assignment create --role "Cognitive Services Speech User" --assignee $appId --scope $speechResourceId
# get an access token
accessToken=$(az account get-access-token --scope "https://cognitiveservices.azure.cn/.default" --query accessToken -o tsv)
echo $accessToken
返回 accessToken
的令牌是一个Microsoft Entra 令牌,可用于在没有 API 密钥的情况下进行身份验证。 令牌的 生存期有限。
现在,你可以使用 accessToken
对 AI 服务资源进行身份验证。 例如,可以通过快速听录 REST API 使用令牌:
uri="https://$AIServicesResourceName.cognitiveservices.azure.cn/speechtotext/transcriptions:transcribe?api-version=2024-11-15"
curl -v "$uri" \
--header 'Content-Type: multipart/form-data' \
--form 'definition={"locales": ["en-US"]}' \
--form 'audio=@Call1_separated_16k_health_insurance.wav' \
--header "Authorization: Bearer $accessToken"
语音 SDK 身份验证
对于 SDK,可以配置是要使用 API 密钥还是 Microsoft Entra 令牌进行身份验证。 有关详细信息,请参阅使用语音 SDK 的 Microsoft Entra 身份验证。 |