AWS Polly Test

Amazon Polly is a cloud service that converts text into lifelike speech. You just need to call the SynthesizeSpeech method, provide the text you wish to synthesize, select one of the available Text-to-Speech (TTS) voices, and specify an audio output format. Amazon Polly then synthesizes the provided text into a high-quality speech audio stream.

To manage voices and pronunciations and to convert the text that users type into speech, Amazon Polly internally calls the following API methods:

  • PutLexicon - Stores a pronunciation lexicon in an AWS Region; Pronunciation lexicons enable you to customize the pronunciation of words.
  • ListLexicons - Returns a list of pronunciation lexicons stored in an AWS Region;
  • GetLexicon - Returns the content of the specified pronunciation lexicon stored in an AWS Region;
  • DeleteLexicon - Deletes the specified pronunciation lexicon stored in an AWS Region;
  • DescribeVoices - Returns the list of voices that are available for use when requesting speech synthesis;
  • SynthesizeSpeech - Synthesizes UTF-8 input, plain text or SSML, to a stream of bytes.

A delay or error in any of the aforesaid API operations can adversely impact a user's experience with Amazon Polly. This is why, whenever a cloud user complains of issues in text-to-speech conversion, administrators should be able to quickly identify the precise API operation causing the issue and troubleshoot accordingly. This is exactly where the AWS Polly test helps!

For each API operation (GetLexicon, PutLexicon, DescribeVoices, etc.), this test reports the responsiveness of that operation and the count of HTTP errors encountered by that operation. Whenever users complain of a poor Amazon Polly experience, administrators can use this test to isolate the exact operation that may have failed or may have slowed down causing the overall user experience with Polly to suffer.

Target of the test: Amazon Cloud

Agent deploying the test : A remote agent

Outputs of the test : One set of results for each API operation that is called in every region

First-level descriptor: AWS Region

Second-level descriptor: Operation name

Configurable parameters for the test
Parameter Description

Test Period

How often should the test be executed.


The host for which the test is to be configured.

Access Type

eG Enterprise monitors the AWS cloud using AWS API. By default, the eG agent accesses the AWS API using a valid AWS account ID, which is assigned a special role that is specifically created for monitoring purposes. Accordingly, the Access Type parameter is set to Role by default. Furthermore, to enable the eG agent to use this default access approach, you will have to configure the eG tests with a valid AWS Account ID to Monitor and the special AWS Role Name you created for monitoring purposes.

Some AWS cloud environments however, may not support the role-based approach. Instead, they may allow cloud API requests only if such requests are signed by a valid Access Key and Secret Key. When monitoring such a cloud environment therefore, you should change the Access Type to Secret. Then, you should configure the eG tests with a valid AWS Access Key and AWS Secret Key.

Note that the Secret option may not be ideal when monitoring high-security cloud environments. This is because, such environments may issue a security mandate, which would require administrators to change the Access Key and Secret Key, often. Because of the dynamicity of the key-based approach, Amazon recommends the Role-based approach for accessing the AWS API.

AWS Account ID to Monitor

This parameter appears only when the Access Type parameter is set to Role. Specify the AWS Account ID that the eG agent should use for connecting and making requests to the AWS API. To determine your AWS Account ID, follow the steps below:

  • Login to the AWS management console. with your credentials.

  • Click on your IAM user/role on the top right corner of the AWS Console. You will see a drop-down menu containing the Account ID (see Figure 1).

    Figure 1 : Identifying the AWS Account ID

AWS Role Name

This parameter appears when the Access Type parameter is set to Role. Specify the name of the role that you have specifically created on the AWS cloud for monitoring purposes. The eG agent uses this role and the configured Account ID to connect to the AWS Cloud and pull the required metrics. To know how to create such a role, refer to Creating a New Role.

AWS Access Key, AWS Secret Key, Confirm AWS Access Key, Confirm AWS Secret Key

These parameters appear only when the Access Type parameter is set to Secret.To monitor an Amazon cloud instance using the Secret approach, the eG agent has to be configured with the access key and secret key of a user with a valid AWS account. For this purpose, we recommend that you create a special user on the AWS cloud, obtain the access and secret keys of this user, and configure this test with these keys. The procedure for this has been detailed in the Obtaining an Access key and Secret key topic. Make sure you reconfirm the access and secret keys you provide here by retyping it in the corresponding Confirm text boxes.

Proxy Host and Proxy Port

In some environments, all communication with the AWS cloud and its regions could be routed through a proxy server. In such environments, you should make sure that the eG agent connects to the cloud via the proxy server and collects metrics. To enable metrics collection via a proxy, specify the IP address of the proxy server and the port at which the server listens against the Proxy Host and Proxy Port parameters. By default, these parameters are set to none , indicating that the eG agent is not configured to communicate via a proxy, by default.

Proxy User Name, Proxy Password, and Confirm Password

If the proxy server requires authentication, then, specify a valid proxy user name and password in the Proxy User Name and Proxy Password parameters, respectively. Then, confirm the password by retyping it in the Confirm Password text box. By default, these parameters are set to none, indicating that the proxy sever does not require authentication by default.

Proxy Domain and Proxy Workstation

If a Windows NTLM proxy is to be configured for use, then additionally, you will have to configure the Windows domain name and the Windows workstation name required for the same against the Proxy Domain and Proxy Workstation parameters. If the environment does not support a Windows NTLM proxy, set these parameters to none.

Exclude Region

Here, you can provide a comma-separated list of region names or patterns of region names that you do not want to monitor. For instance, to exclude regions with names that contain 'east' and 'west' from monitoring, your specification should be: *east*,*west*

Measurements made by the test



Measurement Unit


Characters in request

Indicates the average number of characters in a request for this operation.


This measure reports billable characters only and does not include SSML tags.

For the SynthesizeSpeech operation, AWS imposes a limit of 1500 billed characters (3000 total characters) for the input text. If any user complains that he/she encountered the the TextLengthExceededException when performing the SynthesizeSpeech operation, then check the value of this me measure for the SynthesizeSpeech descriptor to determine whether/not it has crossed 1500 characters.

Response latency

Indicates the average latency between when the request was made for this operation and the start of the streaming response.


Ideally, the value of this measure should be low. A very high value is indicative of poor responsiveness / slowness of an API operation.

In the event of a slowdown, you may want to compare the value of this measure across operations to identify the operation that is the slowest. If the SynthesizeSpeech operation turns out to be the slowest, you may want to check the size of the lexicons. Each lexicon can be up to 4000 characters in size. Larger the size, slower will be the SynthesizeSpeech operation.

HTTP 200 level code returned

Indicates the number of requests for this operation that returned the HTTP 200 level code response.


This class of status codes indicates the action requested by the client was received, understood and accepted.

A high value is desired for this measure.

HTTP 400 level code returned

Indicates the number of requests for this operation that returned the HTTP 400 level error code response.


This class of status code is intended for situations in which the error seems to have been caused by the client.

Ideally, the value of this measure should be 0.

HTTP 500 level code returned

Indicates the number of requests for this operation that returned the HTTP 500 level error code response.


Response status codes beginning with the digit "5" indicate cases in which the server is aware that it has encountered an error or is otherwise incapable of performing the request.

Ideally, the value of this measure should be 0.