你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

找到批量听录的音频文件

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

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

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

创建听录时,可以指定一个或多个音频文件。 建议为每个请求提供多个文件,或指向包含要听录的音频文件的 Azure Blob 存储容器。 批量听录服务可以处理大量的已提交听录内容。 该服务会以并发方式听录文件,这样可减少周转时间。

支持的音频格式和编解码器

批量听录 API 支持多种不同的格式和编解码器,例如:

  • WAV
  • MP3
  • OPUS/OGG
  • FLAC
  • WMA
  • AAC
  • WAV 容器中的 ALAW
  • WAV 容器中的 MULAW
  • AMR
  • WebM
  • M4A
  • SPEEX

注意

批量听录服务集成了 GStreamer,并且可能会接受更多格式和编解码器而不返回错误,不过我们建议你使用无损格式,例如 WAV(PCM 编码)和 FLAC,以确保最佳的听录质量。

Azure Blob 存储上传

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

注意

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

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

  1. 转到 Azure 门户并登录 Azure 帐户。
  2. 在 Azure 门户中创建存储帐户资源。 使用与语音资源相同的订阅和资源组。
  3. 选择“存储帐户”。
  4. 在左窗格的“数据存储”组中,选择“容器”。
  5. 选择“+ 容器”。
  6. 输入新容器的名称,然后选择“创建”。
  7. 选择新容器。
  8. 选择“上传”。
  9. 选择要上传的文件,然后选择“上传”。

受信任的 Azure 服务安全机制

本节介绍如何使用受信任的 Azure 服务安全机制设置和限制对 Azure 存储帐户中批量听录源音频文件的访问权限。

注意

使用受信任的 Azure 服务安全机制时,需要使用 Azure Blob 存储来存储音频文件。 不支持使用 Azure 文件存储

如果在本部分中执行所有操作,则存储帐户的配置如下:

因此,实际上存储帐户已完全“锁定”,除了转录应用新配置时就已存在的音频文件,无法在任何情况下使用。 出于音频数据的安全考虑,应将此配置视为一个模型,并根据需求对其进行自定义。

例如,可以允许来自所选公共 IP 地址和 Azure 虚拟网络的流量。 还可使用专用终结点设置对存储帐户的访问(另请参阅此教程),使用存储帐户密钥重新启用访问,允许访问其他 Azure 受信任服务等。

注意

无需使用语音服务专用终结点来保护存储帐户。 可使用专用终结点来处理批量转录 API 请求,同时从安全存储帐户单独访问源音频文件,或者反过来。

通过执行以下步骤,可以严格限制对存储帐户的访问。 然后,为语音资源托管标识分配访问存储帐户所需的最低权限。

为语音资源启用系统分配的托管标识

按照以下步骤为要用于批量听录的语音资源启用系统分配的托管标识。

  1. 转到 Azure 门户并登录 Azure 帐户。

  2. 选择语音资源。

  3. 在左窗格的“资源管理”组中,选择“标识”。

  4. 在“系统分配的标识”选项卡上,将状态设为“开”。

    重要

    用户分配的托管标识不符合批量听录存储帐户方案的要求。 请确保启用系统分配的托管标识。

  5. 选择“保存”

现在,语音资源的托管标识可获得对存储帐户的访问权限。

限制对存储帐户的访问权限

按照以下步骤限制对存储帐户的访问权限。

重要

在锁定存储帐户访问权限之前,上传 Blob 容器中的音频文件。

  1. 转到 Azure 门户并登录 Azure 帐户。
  2. 选择“存储帐户”。
  3. 在左窗格的“设置”组中,选择“配置”。
  4. 对“允许 Blob 公共访问”选择“禁用”。
  5. 对“允许存储帐户密钥访问”选择“禁用”。
  6. 选择“保存” 。

有关详细信息,请参阅阻止对容器和 Blob 的匿名公共读取访问阻止对 Azure 存储帐户进行共享密钥授权

配置 Azure 存储防火墙

如果存储帐户的访问受到限制,则需要授予对特定托管标识的访问权限。 按照以下步骤添加对语音资源的访问权限。

  1. 转到 Azure 门户并登录 Azure 帐户。

  2. 选择“存储帐户”。

  3. 在左窗格的“安全性 + 网络”组中,选择“网络”。

  4. 在“防火墙和虚拟网络”选项卡中,选择“从所选虚拟网络和 IP 地址启用”。

  5. 取消选中所有复选框。

  6. 确保选中“Microsoft 网络路由”。

  7. 在“资源实例”部分下,选择 Microsoft.CognitiveServices/accounts 作为资源类型,并选择语音资源作为实例名称。

  8. 选择“保存” 。

    注意

    网络更改最多可能需要 5 分钟才会传播。

虽然现在允许网络访问,但语音资源尚无法访问存储帐户中的数据。 需要为语音资源托管标识分配特定的访问角色。

分配资源访问角色

按照以下步骤将“存储 Blob 数据读者”角色分配给语音资源托管标识。

重要

需要获得存储帐户或更高范围(如订阅)的“所有者”角色”分配才能在后续步骤中执行操作。 这是因为只有“所有者”角色才能将角色分配给其他人。 请参阅此处的详细信息。

  1. 转到 Azure 门户并登录 Azure 帐户。

  2. 选择“存储帐户”。

  3. 在左侧窗格中选择“访问控制(IAM)”菜单。

  4. 在“授予对此资源的访问权限”磁贴中选择“添加角色分配”。

  5. 在“角色”下选择“存储 Blob 数据读者”,然后选择“下一步”。

  6. 在“成员”>“将访问权限分配到”下选择“托管标识”。

  7. 分配语音资源托管标识,然后选择“查看 + 分配”。

    Screenshot of the managed role assignment review.

  8. 确认设置后,选择“查看 + 分配”

现在,语音资源托管标识有权访问存储帐户,还可访问用于批量听录的音频文件。

使用系统分配的托管标识,可在创建批量听录请求时使用普通存储帐户 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 服务安全机制

按照以下步骤生成可用于批量听录的 SAS URL。

  1. 完成Azure Blob 存储上传中的步骤,创建存储帐户并将音频文件上传到新容器。

  2. 选择新容器。

  3. 在左窗格的“设置”组中,选择“共享访问令牌”。

  4. 选择“+ 容器”。

  5. 对“权限”选择“读取”和“列出”。

    Screenshot of the container SAS URI permissions.

  6. 输入 SAS URI 的开始和到期时间,或保留默认值。

  7. 选择“生成 SAS 令牌和 URL”。

创建批量听录请求时,将会使用 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"
    ]
}

后续步骤