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

使用脚本生成语音到文本听录Azure 认知服务

API 管理
Blob 存储
认知服务
事件网格
函数

客户护理中心是很多企业成功的组成部分。 使用语音 AI 可以提高呼叫中心的效率。 语音识别和分析大量记录的客户电话可以为您的企业提供有关当前趋势、产品缺陷和成功的宝贵信息。 可以实施使用Azure 认知服务语音 api Enterprise 解决方案来使用和处理此类大量离散数据。

本文中所述的参考体系结构演示了如何为客户护理中心构建音频引入和语音到文本脚本管道。 此管道处理记录的音频文件的批,并将转录文本文件存储在 Azure Blob 存储中。 此体系结构不实现实时语音处理。

此管道稍后可以进入语音 AI 实现的下一个阶段。 在该阶段中,您可以处理转录文本以识别和删除敏感信息,执行情绪分析等。

GitHub上提供了此体系结构的参考实现。

体系结构

体系结构关系图:使用 Azure 认知服务引入语音并将语音转换为文本

可以使用 Azure 帐户实现此体系结构,并允许客户端应用程序通过 REST Api 访问管道。 该应用程序将经历三个步骤来上传音频文件:

  1. 使用 Azure Active Directory (Azure AD) 进行身份验证。 第一个文件上传需要此步骤。
  2. 调用 REST API 以获取访问 Azure Blob 存储所需的共享访问签名 (SAS) 令牌。
  3. 将音频文件上传到 blob 容器。

引用客户端应用程序使用 JavaScript 上传文件,如下面的 blob 上传示例中所示。 文件上传后,将生成调用 Azure 函数的 Azure 事件网格触发器。 函数使用 Azure 认知服务语音 Api 处理该文件。 转录文本存储在单独的 blob 容器中,随时可用于管道的下一阶段:语音分析和数据库中的存储。

该体系结构使用以下 Azure 服务:

Azure Blob 存储 将对象存储在云中。 Blob 存储经过优化,可存储大量非结构化数据,例如文本数据或二进制数据。 由于敏感信息可能保存在 blob 中,因此需要使用诸如 SAS 密钥的身份验证方法来保护访问。

Azure 事件网格 为 azure 上高效事件驱动的体系结构提供内置支持。 当音频文件上传完成时,事件网格将触发脚本函数的 BlobCreated 事件。

Azure Functions 提供事件驱动的计算功能,而无需构建基础结构。 此参考体系结构中的函数将语音音频文件转录为文本。 模型是 无服务器 模型,这意味着 消耗计划 用于托管函数。

Azure 认知服务 是一系列 api,可帮助开发人员无需大量 AI 或数据科学技能即可生成智能应用程序。 脚本函数调用 认知服务语音到文本 api。 示例音频文件脚本的输出可能类似于以下元数据:

ResultId:19e70bee8b5348a6afb67817825a9586 Reason:RecognizedSpeech Recognized text:<Text for sample audio.>. Json:{"DisplayText":"Text for sample audio.","Duration":53700000,"Id":"28526a6304da4af1922fedd4edcdddbb","Offset":3900000,"RecognitionStatus":"Success"}.

AZURE API 管理 提供对 REST api 的安全访问。 由于仅通过 API 管理进行身份验证的客户端可以请求 SAS 令牌,因此此服务提供另一层安全措施。

Azure Active Directory提供对 Azure 云平台上的资源的标识管理和安全访问。 此体系结构中的客户端首先需要使用 Azure AD 进行身份验证才能访问 REST API。 REST API 使用业务所有者的 Azure AD 凭据创建 blob 存储的访问令牌。 Azure RBAC) (azure 基于角色的访问控制,为客户端提供上传音频文件所需的最低访问权限。

Azure Key Vault 提供机密和密钥的安全存储。 此参考体系结构存储在密钥保管库中生成 SAS 令牌所需的帐户凭据和其他机密。 REST Api 和语音脚本函数可访问此保管库来检索机密。

可伸缩性注意事项

Azure Blob 存储

上传过程中的可伸缩性: 此参考体系结构使用 附属密钥设计模式来创建高性能且经济高效的可扩展解决方案。 客户端应用程序负责实际的数据上传。 SAS 令牌限制对 blob 存储的访问。 客户端需要首先使用 REST API 获取此令牌。 引用实现中的 API 生成一个用户委托 SAS 令牌,该令牌是使用业务所有者 Azure Active Directory 凭据创建的。 在大多数情况下,此方法更安全,并且优于使用帐户密钥创建的 SAS 令牌。 有关 SAS 令牌的详细信息,请参阅 共享访问签名的类型

文件大小的可伸缩性: 参考体系结构允许通过将较大的音频文件分成 4 KB 的区块,将这些文件上传到云中。 分块 是用于上传大型 blob 的常用技术,如 此文章上传大型 blob中所述。 可以上传的最大文件大小取决于 blob 的 最大大小限制,最大大小为 4.77 TB。

存储的可伸缩性: Azure Blob 存储可限制 每个 Blob每个存储帐户的服务请求。 在此方案中,blob 级别限制可能不是问题,因为每个上传的文件对应于一个 blob。 但是,多个将多个文件上传到单个存储帐户的客户端可能会超出帐户的限制。 如果是这样,请考虑使用多个存储帐户并将数据对象划分为多个存储帐户。 有关 blob 的可伸缩性注意事项的详细列表,请参阅 blob 存储的性能和可伸缩性清单

Azure 事件网格

上载完成时,将触发转录音频文件的函数。 此参考体系结构使用事件网格触发器而不是 Blob 存储触发器。 使用事件网格触发器是因为当容器中的 blob 数明显增加时,blob 触发器事件可能会丢失。 缺少的触发器会对应用程序的吞吐量和可靠性产生负面影响。 有关详细信息,请参阅 Blob 触发器备选方案

Azure 认知服务

认知服务 API 可能会基于订阅层请求限制。 请考虑容器化这些 Api,以避免阻止大型卷处理。 容器使你可以灵活地部署,无论是在云中还是在本地。 你还可以通过使用容器来减轻新版本部署的副作用。 有关详细信息,请参阅 Azure 认知服务中的容器支持

安全注意事项

无服务器 web 应用程序的许多安全注意事项都适用于此参考体系结构。 以下部分讨论了特定于此体系结构的注意事项。

Azure Active Directory

存储在 blob 中的音频文件可能包含敏感的客户数据。 如果有多个客户端使用此解决方案,则必须限制对这些文件的访问。 此参考体系结构使用 SAS 令牌来保护这些文件免受外部攻击。 这些令牌称为 "用户委托 SAS 令牌",是使用服务所有者的 Azure AD 凭据创建的。

SAS 令牌使你能够控制:

  • 客户端可以访问的资源,因为它是根据资源创建的。
  • 通过 azure 基于角色的访问控制 ,在访问资源时,客户端将使用 azure RBAC) (。 建议你授予最低要求的权限。 此体系结构中的客户端对 blob 具有只写访问权限。 此访问级别可防止他们读取其他客户端的音频文件,这些文件可能是意外的或恶意的。
  • 当单独的令牌过期时。 此控件将公开的窗口限制为标记,这会限制对资源进行未经授权的访问的可能性。 对于较大的文件,SAS 令牌可能会在上传完成之前过期。 客户端可以请求同一文件的多个令牌。 由于只有经过身份验证的客户端可以执行此操作,因此,对这些令牌的多个请求不影响整体安全性。

有关 sas 令牌的深入讨论,请参阅使用共享访问签名授予对 Azure 存储资源的有限访问权限 (sas) 。 请参阅 创建用户委托 sas ,详细了解用户委托 sas 令牌。

API 管理

除了使用 SAS 令牌限制对资源的访问外,此参考体系结构还通过使用 API 管理提供了另一层安全性。 客户端需要先使用 API 管理进行身份验证,然后才能请求 SAS 令牌。 API 管理具有针对 REST API 的 内置访问控制 。 建议此额外的安全层,因为上传的数据可能包含敏感信息。

当多个客户端并行上传文件时,API Management:

复原注意事项

如果存在极大量的事件,事件网格可能无法触发函数。 此类错过的事件通常添加到死信 容器。 请考虑通过添加监督函数提高体系结构 复原能力。 此函数可以定期在计时器触发器上唤醒。 然后,它可以从死信容器中查找并处理丢失的事件,或者通过比较上传和听写容器中的 Blob来查找并处理丢失的事件。

此模式类似于计划 程序代理监督程序模式。 为简单起见,此参考体系结构中未实现此模式。 有关事件网格如何处理失败的信息,请参阅事件 网格消息传送和重试 策略。

提高复原能力的另一种方式是使用Azure服务总线而不是事件网格。 此模型按顺序处理文件上传。 上传完成服务总线客户端发出信号。 服务总线调用 函数来转录上传的文件。 此模型更可靠。 但是,它的吞吐量将低于基于事件的体系结构。 请仔细考虑适用于方案和应用程序的体系结构。

解决方案部署

若要了解如何为此体系结构部署参考实现,请参阅 GitHub自述文件

后续步骤

查看此体系结构中使用的关键产品文档:

Microsoft Learn 模块: