构建一个基于文件的可扩展降噪解决方案,使用亚马逊 Voice Focus AMI 商业生产力

使用 Amazon Voice Focus 构建可扩展的基于文件的降噪解决方案

关键要点

Amazon Voice Focus AMI 是用于减少背景噪声的深度学习算法。本文展示了如何使用 Amazon Voice Focus AMI 构建可扩展应用,实现多媒体文件的异步降噪处理。该解决方案包括设置 Amazon S3、Amazon Simple Notification ServiceSNS等服务。

在 2021 年 11 月,Amazon Chime SDK 团队推出了 Amazon Voice Focus AMI,旨在帮助用户减少背景噪声,从而提高音频内容的质量。该技术获得了多项荣誉,是在 Amazon Chime SDK 会议中使用的降噪算法。现在它作为 Amazon Linux 2AL2机器镜像AMI进行打包。Amazon Voice Focus AMI 可帮助开发者、内容创作者和媒体制作人减少风扇、割草机和狗吠等背景噪声,以及打字和翻页等前景噪声。

本文将演示如何使用 Amazon Voice Focus AMI 构建一个可扩展的应用,以异步方式对多媒体文件应用预定义的自动扩展策略进行降噪处理。

概述

该解决方案将创建一个包含输入和输出文件夹的 Amazon Simple Storage ServiceAmazon S3存储桶。上传到输入文件夹的任何文件都将被自动检测并应用 Amazon Voice Focus 的降噪处理。一旦处理完成或发生扩展事件,通知消息将发送到 Amazon Simple Notification ServiceAmazon SNS主题。

注意:根据本文创建的解决方案可能会产生 AWS 费用。

先决条件

需要有一个 AWS 账户,并且已通过 私人报价 订阅 Amazon Voice Focus AMIAL2。已安装 Node/npm 详情见此。已安装 Python3 下载链接。已安装 AWS 命令行界面AWS CLI 安装指导。AWS 凭证已 配置,用于存放该解决方案的账户/区域。已安装最新版本的 AWS Cloud Development KitAWS CDK 安装指导。

步骤指南

部署解决方案

要部署堆栈,请运行以下 bash 命令:

bashgit clone https//githubcom/awssamples/amazonchimesdkmlcd amazonchimesdkml/Amazon Voice Focus AMI (Amazon Linux 2)/VoiceFocusAMIAsyncFileProcessingCDK/npm install ampamp cdk bootstrap ampamp cdk deploy requireapproval never

接收通知

在部署过程中将创建一个 Amazon SNS 主题。扩展事件和处理状态通知将发送至该主题。为了接收通知,您需要根据控制台中的 SNSARN 输出 订阅此 Amazon SNS 主题。

处理多媒体文件

该解决方案允许处理 audio/wav 和 video/mp4 格式的多媒体文件。在您的堆栈部署后,将生成一个 Amazon S3 存储桶,其 InputS3URI 路径将在 AWS 控制台的 AWS CloudFormation 输出中显示。只需将支持格式的多媒体文件上传到 InputS3URI 路径,即可使用此文件处理基础设施。您可以在 AWS 控制台手动上传,或使用以下 AWS CLI 命令上传我们在此使用示例音频文件进行测试,您可以替换为自己的媒体文件。

安易加速器永久免费版

bashaws s3 cp audio/example16khz1minwav s3//voicefocusprocessingbucketltawsaccountnumbergtltawsregiongt/input/

上传媒体文件后,Amazon Voice Focus AMI 工作线程将开始对文件进行降噪处理。当处理完成时,输出文件夹中会生成一个同名文件,同时通知消息将发送到创建的 Amazon SNS 主题。

接着,您可以通过 AWS 控制台下载处理后的文件,或使用以下 AWS CLI 命令从输出路径下载:

bashaws s3 cp s3//voicefocusprocessingbucketltawsaccountnumbergtltawsregiongt/output/example16khz1minwav example16khz1minoutputwav

测试短暂扩展

为了测试 Amazon Voice Focus AMI 工作线程的可扩展性,我们在示例根文件夹中提供了 testscalingpy脚本。该 Python 脚本会自动获取您在 AWS 账户中部署的资源,上传示例多媒体文件到 Amazon S3 输入路径,并在短时间内向 Amazon Simple Queue ServiceAmazon SQS发送多个处理请求。这些请求将被 SQS 处理,CPU 利用率将增加,从而触发扩展事件。

要测试该方案的可扩展性,请运行以下 bash 命令:

bashpip3 install boto3python3 testscalingpy

要验证自动扩展组的扩展活动,您可以按照 验证自动扩展组的扩展活动 的步骤在控制台中查看,或运行以下 AWS CLI 命令:

bashaws autoscaling describescalingactivities autoscalinggroupname voicefocusasg

扩展活动也会发送到该方案创建的 Amazon SNS 主题,您可以通过订阅它自动接收这些消息。

工作原理

在资源供应阶段,该解决方案将从其官方网站的 Github 仓库 构建 FFmpeg 工件,并将输出工件上传到 Amazon S3 资源文件夹。此 FFmpeg 工件将由每个 Amazon Voice Focus AMI 用于执行媒体格式转码。

构建一个基于文件的可扩展降噪解决方案,使用亚马逊 Voice Focus AMI 商业生产力

该解决方案的设计是使上传到 Amazon S3 输入文件夹的任何文件都将触发 AWS Lambda 函数 BucketPutHandler,该函数会向 Amazon SQS 发送处理请求消息。此解决方案会创建一组运行 Amazon Voice Focus AMI 实例,以异步方式从 Amazon SQS 处理请求消息。每个 Amazon Voice Focus 工作线程将运行脚本 workerpy,该脚本根据实例的 CPU 数量生成多个进程,以确保最大化利用计算资源。每个处理请求完成后,工作线程会向 Amazon SNS 主题发送通知,并将结果反馈上传到 Amazon S3 输出文件夹。所有处理日志将在一分钟间隔内上传到 AWS CloudWatch。

Amazon Voice Focus AMI 实例的集群运行在自动扩展组下,使用基于平均 CPU 利用率的目标追踪扩展策略,旨在将利用率保持在目标值75 的 CPU 利用率。一旦集群的平均 CPU 利用率在 3 分钟内达到 75 以上的 3 个数据点,扩展事件将被触发,并尝试启动更多实例以降低 CPU 利用率。相反,如果 15 分钟内的平均 CPU 利用率低于 525 的 15 个数据点,系统将减小规模并终止一个或多个自动扩展组中的实例。

此自动扩展策略仅为示例,用户可以根据自己的用例编辑/自定义 AS 策略。

清理

要清理此演示,请运行 cdk destroy 命令或在 AWS CloudFormation 中删除堆栈。

结论

该解决方案展示了如何轻松构建一个可扩展的应用,利用 Amazon Voice Focus AMI。虽然此示例专注于基于文件的处理,但同样的基础可以用于实现其他现实生活中的应用,例如在直播和实时视频聊天中应用 Amazon Voice Focus 降噪处理。

请查看我们的 GitHub 仓库以获取示例代码:GitHub Repo

标签 amazon chime,Amazon Chime SDK,Amazon Machine Learning,business productivity,chime,Communication Developer Services,cpaas,Customer Solutions,Programmable chat,Programmable video,Programmable Voice,PSTN,SIP trunking,WebRTC

关于作者

Zhihai 是 AWS Chime SDK 科学团队的软件工程师,专注于后端和前端开发、云基础设施和机器学习等领域。

让您的工程师积极参与成本优化 云财务管理
让您的工程师积极参与成本优化 云财务管理

让您的工程师参与成本优化关键要点成本优化需积极赋能工程团队,他们是AWS资源和服务的负责主体。工程团队传统上专注于软件开发,而忽略成本控制,需要培养新文化。建立CFM与工程团队之间的信任和合作关系,帮...