你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
可以使用 Azure 基于角色的访问控制 (Azure RBAC) 来管理语音资源的访问和权限。 分配的角色可能因语音资源而异。
例如,可以将一个角色分配给只应该用于训练自定义语音识别模型的 AI 语音资源。 可以将另一个角色分配给用于转录音频文件的 AI 语音资源。
根据谁可以访问每个语音资源,可以有效地对每个应用程序或用户设置不同的访问级别。 有关 Azure RBAC 的详细信息,请参阅 Azure RBAC 文档。
注意
本文介绍如何为 AI 语音资源分配访问角色。 有关如何为 Microsoft Foundry 资源分配访问角色的信息,请参阅 Microsoft Foundry 文档。
语音资源的角色
角色定义是权限的集合。 一个 AI 语音资源可以继承或分配有多个角色。 对此资源的最终访问级别是所有角色权限的组合。 创建 AI 语音资源时,可分配下表中的内置角色。
| 角色 | 可以列出资源密钥 | 访问自定义项目中的数据、模型和终结点 | 访问语音听录和合成 API |
|---|---|---|---|
| 所有者 | 是 | 无 | 否 |
| 参与者 | 是 | 无 | 否 |
| 认知服务参与者 | 是 | 无 | 否 |
| 认知服务用户 | 是 | 查看、创建、编辑和删除 | 是 |
| 认知服务语音参与者 | 否 | 查看、创建、编辑和删除 | 是 |
| 认知服务语音用户 | 否 | 仅查看 | 是 |
| 认知服务数据读取者(预览版) | 否 | 仅查看 | 是 |
如果语音资源可以对项目具有完全读取和写入访问权限,请保留内置角色。
若要进行精细资源访问控制,可以使用Azure 门户添加或移除角色。 例如,你可以创建一个有权上传自定义语音数据集但无权将自定义语音识别模型部署到终结点的自定义角色。
语音资源的特殊注意事项
重要说明
语音服务体系结构与其他 Foundry 工具不同,因为它使用 Azure 控制平面和数据平面的方式。
语音服务相比于其他 Foundry 工具更加广泛使用数据平面,这需要为相关角色进行不同设置。 因此,一些常规“认知服务”角色的实际访问权限集在语音服务方案中使用时与其名称不完全匹配。
例如,“认知服务用户”提供“参与者”权限,而“认知服务参与者”完全不提供任何访问权限。 常规“所有者”和“参与者”角色也是如此,这些角色没有数据平面权限,因此不提供对语音资源的访问权限。
为了保持一致性,建议使用名称中包含“语音”的角色。 这些角色为“认知服务语音用户”和“认知服务语音参与者”。 其访问权限集专为语音服务设计。
使用密钥和令牌进行身份验证
角色定义你拥有的权限。 使用语音资源需要进行身份验证。
若要使用语音资源密钥进行身份验证,只需提供密钥和区域。 若要使用 Microsoft Entra 令牌进行身份验证,语音资源必须具有自定义子域。
下面介绍如何使用自定义子域创建新的语音资源。 也可以使用现有资源,但它必须具有自定义子域。 有关创建自定义子域的详细信息,请参阅 创建自定义域名。
resourceGroupName=my-speech-rg
location=eastus
AIServicesResourceName=my-aiservices-$location
# create an AIServices resource for Speech and other Foundry Tools
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.com/.default" --query accessToken -o tsv)
echo $accessToken
返回 accessToken 的令牌是一个Microsoft Entra 令牌,可用于在没有 API 密钥的情况下进行身份验证。 令牌的 生存期有限。
现在,您可以使用 accessToken 对 Foundry 资源进行身份验证。 例如,可以通过快速听录 REST API 使用令牌:
uri="https://$AIServicesResourceName.cognitiveservices.azure.com/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 身份验证。 |