Amazon Polly 示例 - 适用于 JavaScript 的 AWS SDK

适用于 JavaScript 的 AWS SDKV3 API 参考指南详细描述了 适用于 JavaScript 的 AWS SDK 版本 3 (V3) 的所有 API 操作。

Amazon Polly 示例

JavaScript code example that applies to Node.js execution

此 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 权限策略:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "mobileanalytics:PutEvents", "cognito-sync:*" ], "Resource": "*", "Effect": "Allow" }, { "Action": "polly:SynthesizeSpeech", "Resource": "*", "Effect": "Allow" } ] }

使用 CloudFormation 创建 AWS 资源

CloudFormation 让您能够以可预测、可重复的方式创建和预置 AWS 基础设施部署。有关 CloudFormation 的更多信息,请参阅 AWS CloudFormation 用户指南

创建 CloudFormation 堆栈:

  1. 按照 AWS CLI 用户指南中的说明安装和配置 AWS CLI。

  2. 在项目文件夹的根目录中创建一个名为 setup.yaml 的文件,然后将 GitHub 上此处的内容复制到该文件中。

    注意

    CloudFormation 模板是使用 GitHub 上此处提供的 AWS CDK 生成的。有关 AWS CDK 的更多信息,请参阅 AWS Cloud Development Kit (AWS CDK) 开发人员指南

  3. 从命令行运行以下命令,将 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 用户指南

  4. 导航到 CloudFormation 管理控制台,选择堆栈,选择堆栈名称,然后选择资源选项卡以查看已创建资源的列表。

    CloudFormation 资源

将使用 Amazon Polly 录制的音频上传到 Amazon S3

创建文件名为 polly_synthesize_to_s3.js 的 Node.js 模块。确保如前所示配置 SDK,包括安装所需的客户端和软件包。在代码中,输入 REGIONBUCKET_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 上的此处找到。