批量听录用于听录存储中的大量音频。 批量听录可以从 Azure 内部或外部访问音频文件。

将源音频文件存储在 Azure 外部时,可以通过公共 URI(例如 https://crbn.us/hello.wav&quot)访问它们。 文件应可直接访问;不支持需要身份验证或调用交互式脚本才能访问文件的 URI。

可以通过以下两种方法之一访问存储在 Azure Blob 存储中的音频文件:

  • 受信任的 Azure 服务安全机制
  • 共享访问签名 (SAS) URI。
  • 创建听录时,可以指定一个或多个音频文件。 建议为每个请求提供多个文件,或指向包含要听录的音频文件的 Azure Blob 存储容器。 批量听录服务可以处理大量的已提交听录内容。 该服务会以并发方式听录文件,这样可减少周转时间。

    支持的音频格式

    批量听录 API 支持以下格式:

    每个样本的位数

    对于立体声音频流,在听录期间会拆分左右声道。 每个输入音频文件创建一个 JSON 结果文件。 若要创建有序的最终脚本,请使用为每个语句生成的时间戳。

    Azure Blob 存储上传

    当音频文件位于 Azure Blob 存储 帐户中时,可以请求听录单个音频文件或整个Azure Blob 存储容器。 还可 将听录结果写入 Blob 容器

    有关 Blob 和容器限制,请参阅 批量听录配额和限制

    按照以下步骤创建存储帐户,并将 wav 文件从本地目录上传到新容器。

  • RESOURCE_GROUP 环境变量设置为要在其中创建新存储帐户的现有资源组的名称。 使用与语音资源相同的订阅和资源组。

    set RESOURCE_GROUP=<your existing resource group name>
    
  • AZURE_STORAGE_ACCOUNT 环境变量设置为要创建的存储帐户的名称。

    set AZURE_STORAGE_ACCOUNT=<choose new storage account name>
    
  • 使用 az storage account create 命令创建新的存储帐户。 将 eastus 替换为资源组的区域。

    az storage account create -n %AZURE_STORAGE_ACCOUNT% -g %RESOURCE_GROUP% -l eastus
    

    完成批处理听录并想要删除存储帐户时,请使用 az storage delete create 命令。

  • 使用 az storage account keys list 命令获取新的存储帐户密钥。

    az storage account keys list -g %RESOURCE_GROUP% -n %AZURE_STORAGE_ACCOUNT%
    
  • AZURE_STORAGE_KEY 环境变量设置为上一步中检索到的键值之一。

    set AZURE_STORAGE_KEY=<your storage account key>
    

    其余步骤使用 AZURE_STORAGE_ACCOUNTAZURE_STORAGE_KEY 环境变量。 如果未设置环境变量,可以将值作为参数传递给命令。 有关详细信息,请参阅 az storage container create 文档。

  • 使用 az storage container create 命令创建容器。 将 <mycontainer> 替换为容器名称。

    az storage container create -n <mycontainer>
    
  • 以下 az storage blob upload-batch 命令从当前本地目录上传所有 .wav 文件。 将 <mycontainer> 替换为容器名称。 (可选)可以修改命令以从其他目录上传文件。

    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 门户并登录 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 上的批量听录代码示例
  •