az storage blob upload-batch -d <mycontainer> -s . --pattern *.wav
使用受信任的 Azure 服务安全机制时,需要使用 Azure Blob 存储来存储音频文件。 不支持使用 Azure 文件存储。
如果执行本节中的所有操作,则存储帐户将采用以下配置:
禁止访问所有外部网络流量。
禁止使用存储帐户密钥访问存储帐户。
禁止使用共享访问签名 (SAS) 访问存储帐户 blob 存储。
允许使用资源系统分配的托管标识访问所选语音资源。
因此,实际上存储帐户已完全“锁定”,除了转录应用新配置时就已存在的音频文件,无法在任何情况下使用。 出于音频数据的安全考虑,应将此配置视为一个模型,并根据需求对其进行自定义。
例如,可以允许来自所选公共 IP 地址和 Azure 虚拟网络的流量。 还可使用专用终结点设置对存储帐户的访问(另请参阅此教程),使用存储帐户密钥重新启用访问,允许访问其他 Azure 信任的服务等。
无需使用语音服务专用终结点来保护存储帐户。 可使用专用终结点来处理批量转录 API 请求,同时从安全存储帐户单独访问源音频文件,或者反过来。
按照以下步骤严格限制对存储帐户的访问。 然后,为语音资源托管标识分配访问存储帐户所需的最低权限。
为语音资源启用系统分配的托管标识
按照以下步骤为要用于批量听录的语音资源启用系统分配的托管标识。
转到 Azure 门户并登录 Azure 帐户。
选择语音资源。
在左窗格的“资源管理”组中,选择“标识”。
在“系统分配的标识”选项卡上,将状态设为“开”。
用户分配的托管标识不符合批量听录存储帐户方案的要求。 请确保启用系统分配的托管标识。
选择“保存”
现在,语音资源的托管标识可获得对存储帐户的访问权限。
限制对存储帐户的访问权限
按照以下步骤限制对存储帐户的访问权限。
在锁定存储帐户访问权限之前,上传 Blob 容器中的音频文件。
转到 Azure 门户并登录 Azure 帐户。
选择“存储帐户”。
在左窗格的“设置”组中,选择“配置”。
对“允许 Blob 公共访问”选择“禁用”。
对“允许存储帐户密钥访问”选择“禁用”。
选择“保存” 。
有关详细信息,请参阅阻止对容器和 Blob 的匿名公共读取访问和阻止对 Azure 存储帐户进行共享密钥授权。
如果存储帐户的访问受到限制,则需要授予对特定托管标识的访问权限。 按照以下步骤添加对语音资源的访问权限。
转到 Azure 门户并登录 Azure 帐户。
选择“存储帐户”。
在左窗格的“安全性 + 网络”组中,选择“网络”。
在“防火墙和虚拟网络”选项卡中,选择“从所选虚拟网络和 IP 地址启用”。
取消选中所有复选框。
确保选中“Microsoft 网络路由”。
在“资源实例”部分下,选择 Microsoft.CognitiveServices/accounts 作为资源类型,并选择语音资源作为实例名称。
选择“保存” 。
网络更改最多可能需要 5 分钟才会传播。
虽然现在允许网络访问,但语音资源尚无法访问存储帐户中的数据。 需要为语音资源托管标识分配特定的访问角色。
分配资源访问角色
按照以下步骤将“存储 Blob 数据读者”角色分配给语音资源托管标识。
需要获得存储帐户或更高范围(如订阅)的“所有者”角色”分配才能在后续步骤中执行操作。 这是因为只有“所有者”角色才能将角色分配给其他人。 请参阅此处的详细信息。
转到 Azure 门户并登录 Azure 帐户。
选择“存储帐户”。
在左侧窗格中选择“访问控制(IAM)”菜单。
在“授予对此资源的访问权限”磁贴中选择“添加角色分配”。
在“角色”下选择“存储 Blob 数据读者”,然后选择“下一步”。
在“成员”>“将访问权限分配到”下选择“托管标识”。
分配语音资源托管标识,然后选择“查看 + 分配”。
确认设置后,选择“查看 + 分配”
现在,语音资源托管标识有权访问存储帐户,还可访问用于批量听录的音频文件。
使用系统分配的托管标识,在创建批量听录请求时,将使用普通存储帐户 URL(没有 SAS 或其他添加项)。 例如:
"contentContainerUrl": "https://<storage_account_name>.blob.core.windows.net/<container_name>"
否则可以在容器中指定单个文件。 例如:
"contentUrls": [
"https://<storage_account_name>.blob.core.windows.net/<container_name>/<file_name_1>",
"https://<storage_account_name>.blob.core.windows.net/<container_name>/<file_name_2>"
批量听录 SAS URL:
共享访问签名 (SAS) 是一种 URI,可授予对 Azure 存储容器的受限访问权限。 如果希望在特定时间范围内授予对批听录文件的访问权限,而无需共享存储帐户密钥,请使用它。
如果包含批量转录源文件的容器只能由你的语音资源访问,请改用受信任的 Azure 服务安全机制。
完成Azure Blob 存储上传中的步骤,创建存储帐户并将音频文件上传到新容器。
使用 az storage container generate-sas 命令生成包含容器读取 (r) 和列出 (l) 权限的 SAS URL。 选择新的到期日期,并将 <mycontainer> 替换为容器的名称。
az storage container generate-sas -n <mycontainer> --expiry 2022-10-10 --permissions rl --https-only
上一个命令返回 SAS 令牌。 将 SAS 令牌追加到容器 blob URL 以创建 SAS URL。 例如:https://<storage_account_name>.blob.core.windows.net/<container_name>?SAS_TOKEN。
创建批量听录请求时,将使用 SAS URL。 例如:
"contentContainerUrl": "https://<storage_account_name>.blob.core.windows.net/<container_name>?SAS_TOKEN"
否则可以在容器中指定单个文件。 必须为每个文件生成并使用具有读取 (r) 权限的其他 SAS URL。 例如:
"contentUrls": [
"https://<storage_account_name>.blob.core.windows.net/<container_name>/<file_name_1>?SAS_TOKEN_1",
"https://<storage_account_name>.blob.core.windows.net/<container_name>/<file_name_2>?SAS_TOKEN_2"
批量听录概述
创建批量听录
获取批量听录结果
请参阅 GitHub 上的批量听录代码示例