适用于 JavaScript 的 AWS SDKV3 API 参考指南详细描述了 适用于 JavaScript 的 AWS SDK 版本 3 (V3) 的所有 API 操作。
Amazon Polly 示例
此 Node.js 代码示例演示:
-
将使用 Amazon Polly 录制的音频上传到 Amazon S3
情景
在此示例中,将使用一系列 Node.js 模块,通过 Amazon S3 客户端类的以下方法将使用 Amazon Polly 录制的音频自动上传到 Amazon S3:
先决条件任务
要设置和运行此示例,您必须先完成以下任务:
-
按照 GitHub
上的说明设置项目环境以运行 Node JavaScript 示例。 -
使用用户凭证创建共享配置文件。有关提供共享凭证文件的更多信息,请参阅《AWS SDK 和工具参考指南》中的共享配置和凭证文件。
创建一个 AWS Identity and Access Management (IAM) 未经身份验证的 Amazon Cognito 用户角色 polly:SynthesizeSpeech 权限,以及一个附有 IAM 角色的 Amazon Cognito 身份池。下面的使用 CloudFormation 创建 AWS 资源部分将介绍如何创建这些资源。
注意
此示例使用 Amazon Cognito,但是如果您不使用 Amazon Cognito,则您的 AWS 用户必须具有以下 IAM 权限策略:
使用 CloudFormation 创建 AWS 资源
CloudFormation 让您能够以可预测、可重复的方式创建和预置 AWS 基础设施部署。有关 CloudFormation 的更多信息,请参阅 AWS CloudFormation 用户指南。
创建 CloudFormation 堆栈:
按照 AWS CLI 用户指南中的说明安装和配置 AWS CLI。
在项目文件夹的根目录中创建一个名为
setup.yaml的文件,然后将 GitHub 上此处的内容复制到该文件中。 注意
CloudFormation 模板是使用 GitHub 上此处
提供的 AWS CDK 生成的。有关 AWS CDK 的更多信息,请参阅 AWS Cloud Development Kit (AWS CDK) 开发人员指南。 从命令行运行以下命令,将
STACK_NAME替换为堆栈的唯一名称。重要
在一个 AWS 区域和一个 AWS 账户中,堆栈名称必须唯一。您最多可指定 128 个字符,支持数字和连字符。
aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM有关
create-stack命令参数的更多信息,请参阅 AWS CLI 命令参考指南和 CloudFormation 用户指南。-
导航到 CloudFormation 管理控制台,选择堆栈,选择堆栈名称,然后选择资源选项卡以查看已创建资源的列表。
将使用 Amazon Polly 录制的音频上传到 Amazon S3
创建文件名为 polly_synthesize_to_s3.js 的 Node.js 模块。确保如前所示配置 SDK,包括安装所需的客户端和软件包。在代码中,输入 REGION 和 BUCKET_NAME。要访问 Amazon Polly,请创建一个 Polly 客户端服务对象。将 "IDENTITY_POOL_ID" 替换为您为此示例创建的 Amazon Cognito 身份池的示例页面中的 IdentityPoolId。这也被传递给每个客户端对象。
调用 Amazon Polly 客户端服务对象的 StartSpeechSynthesisCommand 方法以合成语音消息,将其上传到 Amazon S3 存储桶。
import { StartSpeechSynthesisTaskCommand } from "@aws-sdk/client-polly"; import { pollyClient } from "./libs/pollyClient.js"; // Create the parameters const params = { OutputFormat: "mp3", OutputS3BucketName: "videoanalyzerbucket", Text: "Hello David, How are you?", TextType: "text", VoiceId: "Joanna", SampleRate: "22050", }; const run = async () => { try { await pollyClient.send(new StartSpeechSynthesisTaskCommand(params)); console.log(`Success, audio file added to ${params.OutputS3BucketName}`); } catch (err) { console.log("Error putting object", err); } }; run();
此示例代码可在 GitHub 上的此处