The AWS SDK for JavaScript V3 API Reference Guide describes in detail all the API operations for the AWS SDK for JavaScript version 3 (V3).
Amazon Polly examples
This Node.js code example shows:
-
Upload audio recorded using Amazon Polly to Amazon S3
The scenario
In this example, a series of Node.js modules are used to automatically upload audio recorded using Amazon Polly to Amazon S3 using these methods of the Amazon S3 client class:
Prerequisite tasks
To set up and run this example, you must first complete these tasks:
-
Set up a project environment to run Node JavaScript examples by following the instructions on GitHub
. -
Create a shared configurations file with your user credentials. For more information about providing a shared credentials file, see Shared config and credentials files in the AWS SDKs and Tools Reference Guide.
Create an AWS Identity and Access Management (IAM) Unauthenticated Amazon Cognito user role polly:SynthesizeSpeech permissions, and an Amazon Cognito identity pool with the IAM role attached to it. The Create the AWS resources using the AWS CloudFormationsection below describes how to create these resources.
Note
This example uses Amazon Cognito, but if you are not using Amazon Cognito then your AWS user must have following IAM permissions policy
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "polly:SynthesizeSpeech",
"Resource": "*",
"Effect": "Allow"
}
]
}
Create the AWS resources using the AWS CloudFormation
AWS CloudFormation enables you to create and provision AWS infrastructure deployments predictably and repeatedly. For more information about AWS CloudFormation, see the AWS CloudFormation User Guide.
To create the AWS CloudFormation stack:
Install and configure the AWS CLI following the instructions in the AWS CLI User Guide.
Create a file named
setup.yaml
in the root directory of your project folder, and copy the content here on GitHubinto it. Note
The AWS CloudFormation template was generated using the AWS CDK available here on GitHub
. For more information about the AWS CDK, see the AWS Cloud Development Kit (AWS CDK) Developer Guide. Run the following command from the command line, replacing
STACK_NAME
with a unique name for the stack.Important
The stack name must be unique within an AWS Region and AWS account. You can specify up to 128 characters, and numbers and hyphens are allowed.
aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM
For more information on the
create-stack
command parameters, see the AWS CLI Command Reference guide, and the AWS CloudFormation User Guide.-
Navigate to the AWS CloudFormation management console, choose Stacks, choose the stack name, and choose the Resources tab to view a list of the created resources.
Upload audio recorded using Amazon Polly to Amazon S3
Create a Node.js module with the file name polly_synthesize_to_s3.js
.
Make sure to configure the SDK as previously shown, including installing the
required clients and packages. In the
code, enter the REGION
, and the BUCKET_NAME
. To access Amazon Polly, create an Polly
client service object. Replace "IDENTITY_POOL_ID"
with the IdentityPoolId
from the Sample page of the
Amazon Cognito identity pool you created for this example. This is also passed to each client
object.
Call the StartSpeechSynthesisCommand
method of the Amazon Polly
client service object synthesize the voice message and upload it to the Amazon S3 bucket.
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();
This sample code can be found here on GitHub